改正下面程序中的错误,使得程序具备如下功能:输入一个以回车结束的字符串(少于80个字符),将它逆序输出。如输入3c school of guet,则输出为teug fo loohcs c3. #include <stdio.h> int main(){ int i,k,temp; char str[]; printf("input a string:"); i=0; while((str[i]=getchar())!='\n') i++; str[i]=0; k=i-1; for(i=0;i<k;i++){ temp=str[i]; str[i]=str[k]; str[k]=temp; k++; } for(i=0;str[i]!=0;i++) putchar(str[i]); return 0; }
时间: 2023-12-10 22:03:08 浏览: 108
好的,以下是改正后的程序:
```c++
#include <stdio.h>
int main()
{
int i, k, temp;
char str[80];
printf("input a string:");
i = 0;
while ((str[i] = getchar()) != '\n' && i < 80)
{
i++;
}
str[i] = '\0';
k = i - 1;
for (i = 0; i < k; i++)
{
temp = str[i];
str[i] = str[k];
str[k] = temp;
k--;
}
for (i = 0; str[i] != '\0'; i++)
{
putchar(str[i]);
}
return 0;
}
```
修改说明:
1. 在定义字符数组 `str` 时,需要给定其长度为80。
2. 在读取字符串时,需要增加一个限制条件,避免数组越界。
3. 在交换字符顺序时,将 `k++` 修改为 `k--`,使得 `k` 的值正确递减。
4. 最后输出字符时,需要判断字符是否为字符串的结束符号 `\0`。
阅读全文