大概模型是:
#include<stdio.h>
#include<string.h>
void main()
{
char a[20],b[20];
int i,j;
gets(a);
for(i=strlen(a)-1;i>=0;i--)
for(j=strlen(b)-21;j<=20;j++)
{
b[j]=a[i];
}
printf("%c",b[j]);
printf("\n");
}
请问exchange是什么意思啊,我们还没学啊,我们刚学到数组这啊
追答就是 自己写的一个函数,自己命名的函数名。
本回答被网友采纳你这只是输出的时候可以,关键是怎样把这组数转到另一组里面
追答#include
#include
void main()
{
char a[20],b[20];
int i,j;
gets(a);
for(i=strlen(a)-1,j=0;i>=0;i--,j++)
{ b[j]=a[i]; }
b[j]='\0';
puts(b);//自己运行看吧,我输出的是b。
}
那个你的b[j]=a[i];是怎么运行的?难道是从J=0开始?对应i=20?,还有啊,为什么要在最后加一个b[j]='\0'啊,这是什么意思啊
追答就是j=0对应i=20啊,,就是依次把 a 的最后一个赋值给 b 的第0,1,2.....个,每个字符串都要以'\0'结尾的。比如定义a[]="abc",其实a里面的元素一共是{'a','b','c','\0'}。
追问那为什么不写成for(i=20,j=0;i>=0,j<=20;i--,j++)?
追答如果定义a[10]="abcd",那么stren(a)==4,那你说现在a[10]等于多少?a[0],a[1],a[2],a[3]等于多少??
追问哦,你的意思是说,如果从i=0开始,那么我就默认了它一定有10个字符,而用strlen()函数,则是根据我的输入而定的是吧,但是J=0,加上一个b[j]="\0",则是保证了从a[20]里能复制到b[20]里所有的输入的数,对吧?
追答恩差不多,就是20是你定义的数组最大空间,struct()的值是实际占用的空间。
编译器扫描每个字符串是遇到'\0'结束的。比如a[]="abc",puts(a); puts函数先扫描到'a',再是'b',再是'c',再是'\0',碰到'\0'就结束扫描。就输出abc,如果你后面不加'\0',就会无限扫描,会出乱码。