#includestdioh#includestringhchar str80;char word108;int c=0;int j=0;int count=1;int main fgetsstrsizeofstrstdin; int len=strlenstr; forint i=0;i8;i++ c=0; for;jlen;j++
这个代码有以下几个问题:
- 在第一个for循环中,循环条件应为i<len而不是i<8,因为你要将输入的字符串分割成最多8个单词。
- 在第二个for循环中,应该将j的初始值设为0而不是全局变量j的值,否则会导致在第二次运行该函数时出错。
- 在第二个for循环中,应该将j<len作为循环条件而不是j<len-1,否则最后一个单词将被忽略。
- 在第二个for循环中,应该将c++放在if语句的外面,否则最后一个字符将被丢失。
- 在第二个for循环中,应该将j++放在if语句的外面,否则在下一次循环时会跳过一个字符。
- 在第二个for循环中,应该将count初始化为0而不是1,否则在倒序输出单词时会出错。
- 在最后的for循环中,循环条件应为k>=0而不是k<0,否则循环将无法执行。
修正后的代码如下:
#include<stdio.h> #include<string.h>
char str[80]; char word[10][8]; int c=0; int j=0; int count=0;
int main()
{
fgets(str,sizeof(str),stdin);
int len=strlen(str);
for(int i=0;i<len;i++)
{
c=0;
for(j=0;j<len;j++)
{
if(str[j]!=' ')
{
word[i][c]=str[j];
c++;
}
else
{
j++;
count++;
break;
}
}
}
for(int k =count-1;k>=0;k--)
{
printf("%s ",word[k]);
}
return 0;
原文地址: https://www.cveoy.top/t/topic/imkQ 著作权归作者所有。请勿转载和采集!