大一C语言问题

指出下面程序中的错误,并改正,使得程序具备如下功能:输入一个以回车结束的字符串(少于 80 个字符),将它逆序存放后输出。如输入3c school of guet,则输出为teug fo loohcs c3
#include <stdio.h>
int main()
{ int i,k,temp;
char str[];
printf("input a string:");
while((str[i]=getchar())!='\n')
i++;
k=i-1;
for(i=0;i<k;i++)
{temp=str[i];
str[i]=str[k];
str[k]=temp;
}
for(i=0;str[i]!=0;i++)
putchar(str[i]);
return 0;
}

#include <stdio.h>

int main()
{
int i=0, k, temp;             //i 需要初始化为0
char str[80];
printf("input a string:");
memset(str,0x00,sizeof(str)); //需要将此数组清零

while ((str[i] = getchar()) != '\n')
i++;                   //此处最高加一个判断,避免str数组溢出
k = i - 1;
for (i = 0; i<k/2; i++)        //修改了此处
{
temp = str[i];
str[i] = str[k-i];
str[k-i] = temp;
}
for (i = 0; str[i] != 0; i++)
putchar(str[i]);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-04
for(i=0;i<k;i++) 
{temp=str[i]; 
str[i]=str[k]; 
str[k]=temp; 
}

这里面每轮要k--

第2个回答  2015-12-04
for(i=0;i<k;i++)
{temp=str[i];
str[i]=str[k-i];
str[k-i]=temp;
}
相似回答
大家正在搜