永发信息网

帮我看下这个C程序?

答案:4  悬赏:0  手机版
解决时间 2021-07-17 11:08
  • 提问者网友:wodetian
  • 2021-07-16 11:03

//输入一行字符,统计其中单词的个数,各单词之间用空格分隔,空格可以有多个
#include "stdio.h"

void main()
{
char ch[200];
int n,p,sum=1;

printf("开始统计单词的个数......\n");
/*for(int i=0;ch[i]!='\n';i++)//*****怎么不结束循环啊???**********
{
ch[i]=getchar();
p=i;
printf("%d",p);
}
for(int i=0;i<=p;i++)
{
if(ch[i]==32&&ch[i+1]!=32)
{
sum++;
}
}

printf("单词个数为:%d\n",sum);
}

帮我看看怎么不正确?

最佳答案
  • 五星知识达人网友:春色三分
  • 2021-07-16 11:39

通过测试. 你可以运行看看!


#include "stdio.h"


void main()
{
char ch[200];
int n,p,sum=1;

printf("开始统计单词的个数......\n");
for(int i=0;ch[i-1]!='\n';i++)//每次将输入的字符存入数组元素后,i都加1.所以要对i-1判断是否是回车
{
ch[i]=getchar();
p=i;
}
for(i=0;i<=p;i++)
{
if(ch[i]==32&&ch[i+1]!=32&&ch[i+1]!='\n')//存在最后一个字符后输入一个空格,然后回车.所以要判断
{
sum++;
}
}

printf("单词个数为:%d\n",sum);
}


运行时截图:


全部回答
  • 1楼网友:英雄的欲望
  • 2021-07-16 15:39
‘\n’这个符号好像是无法输入的。因为你的判断又是看是否接收到了‘\n’。所以结束不了。‘\n’只是个换行符,它不等于enter这个键的。
  • 2楼网友:春色三分
  • 2021-07-16 14:40
i 没赋值 当然停不下
  • 3楼网友:鱼芗
  • 2021-07-16 13:09
因为你还没赋值就判断了 所以当然死循环了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯