标题:gaicuo
只看楼主
robin123
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2016-4-5
结帖率:50%
已结贴  问题点数:16 回复次数:3 
gaicuo
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一行字符,以回车结束,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。
输入输出示例:括号内是说明
输入
2   (repeat=2)
Let's  go   to room  209.
  Programming is fun
输出
count = 5     ("Let's  go   to room  209."中有5个单词)
count = 3     ("  Programming is fun"中有3个单词)
#include <stdio.h>
int main(void)
{
    char c;
    int count, word;
    int repeat, ri;

    scanf("%d", &repeat);
    getchar();
    for(ri = 1; ri <= repeat; ri++){
        c = getchar();
/*---------*/
        printf("count = %d\n", count);
    }
}




这是我的程序,出错,求帮忙改错

#include <stdio.h>
int main(void)
{
    char c;
    int count, word;
    int repeat, ri;
    scanf("%d", &repeat);
    getchar();
    for(ri = 1; ri <= repeat; ri++){
        c = getchar();
        word=1;
    count=0;
        while(c!="\0"){
  if(c!=" "&&word==1){
    count++;
    word=0;}
  else if(c==" ") word=1;
  c = getchar();
        }
        printf("count = %d\n", count);
    }
}
搜索更多相关主题的帖子: include repeat 正整数 count 
2016-05-12 19:47
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:8 
没细看,但你定义的char c是字符不是字符串吧,后面怎么能用双引号呢。。把双引号改成单引号就可以了
程序代码:
#include <stdio.h>
int main(void)
{
    char c;
    int count, word;
    int repeat, ri;
    scanf("%d", &repeat);
    getchar();
    for(ri = 1; ri<= repeat; ri++)
    {
        c = getchar();
      
      
        word=1;
        count=0;
        while(c!='\n')
        {
          if(c!=' '&&word==1)
          {
              count++;
              word=0;
          }
          else if(c==' ')
              word=1;
          c = getchar();
        }
      
      
        printf("count = %d\n", count);
    }
}



[此贴子已经被作者于2016-5-13 10:49编辑过]

2016-05-12 22:21
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
得分:8 
回复 2楼 wanglianyi1
问一下那个word有什么用,去掉又不行,我试过了。
2016-05-13 00:06
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
回复 3楼 _Strike
个人理解主要在这句  if(c!=' '&&word==1) 当有字符且这个字符不是空格的时候,才会count++;即单词数量加一,不然无法正确计数

这里,c = getchar();word=1;配合使用,
if(c!=' '&&word==1)
{
     count++;
     word=0;
 }
当count++后又把word清零了,相当于一个标记的作用吧
个人理解不知道是不是准确

[此贴子已经被作者于2016-5-13 10:46编辑过]

2016-05-13 10:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-464728-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.357940 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved