写一个函数,使输入的一个字符串按反序存放,错在哪里

#include<stdio.h>
void main()
{
char a[100],t;
int i,j;
scanf("%s",a);
for(j=0;j!='\0';j++)
for(i=0;i<j;i++)
{t=a[i];
a[i]=a[j-i-1];
a[j-i-1]=t;}
printf("%s",a);
}

第1个回答  2013-01-14
首先要明确j干什么用的,我理解j是取得输入字符串的长度,你的写法是2层循环,这不对吧

没异议的话下面
for(i=0;i<j;i++)
这个也有问题,从头到尾都赋值是不对的,这样相当于每个值颠倒后又颠倒回去
所以应该是赋值到一半就OK

char a[100], t;
int i = 0, j = 0;
scanf("%s", a);
printf("a_satrt:%s\n", a);
//j = sizeof(a);
for (j = 0; a[j] != '\0'; j++) { //主要是取得数组长度
printf("j:%d\n", j);
}
for (i = 0; i < (j + 1) / 2; i++) { //循环一半
//printf("%s",a);
t = a[i];
a[i] = a[j - i - 1];
a[j - i - 1] = t;
}
printf("a_end:%s", a);本回答被提问者采纳
相似回答