| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 462 人关注过本帖
标题:计算输入的一句话中平均单词数,以下是我的代码,有点问题,请帮我解释下好 ...
只看楼主 加入收藏
blacker50
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2013-11-21
结帖率:71.43%
收藏
已结贴  问题点数:20 回复次数:4 
计算输入的一句话中平均单词数,以下是我的代码,有点问题,请帮我解释下好吗
#include <stdio.h>
int main()
{
    int  i  =  0, n  =  0 ;
    char  ch;
    printf("enter  a  sentence: ");
    ch  =  getchar();
    while(ch  !=  '\n'){
     ch  =  getchar();
     if (ch  ==   ' ')
     i++;
     else
     n++;}
     printf("average  word  length: %.1f",n/(i+1));
      return  0;
}这种方法可以算出我要的答案,但是ch =getchar()语句放在循环体前和if语句前
逻辑有点不对,如果输入的第一个字是字母,在循环体外就读了第一个字母,进入
循环体后是第二个输入的东西,好像会影响n的值,想不明白,求指教!
搜索更多相关主题的帖子: average include return 单词 字母 
2013-11-21 06:21
ceoooec
Rank: 2
等 级:论坛游民
威 望:1
帖 子:26
专家分:61
注 册:2013-6-11
收藏
得分:10 
如果正常输入,n加一个不就好啦!可是你这没有考虑非正常情况吧!要是开始就是空格呢?单词之间有多个空格呢?
2013-11-21 07:12
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:10 
#include <stdio.h>
int main()
{
    int  i  =  0, n  =  0 ;
    char  ch;
    printf("enter  a  sentence: ");
    /** ch  =  getchar(); **/
    while((ch  =  getchar())  !=  '\n')
    {
        /** ch  =  getchar(); **/
        if (ch  ==   ' ')
        i++;
        else
        n++;
    }
    printf("average  word  length: %.1f",(float)(n/(i+1)));
    return  0;
}

埋头做牛,抬头做人,低头做狗
2013-11-21 08:51
blacker50
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2013-11-21
收藏
得分:0 
回复 3楼 pink_duo
你好,这个方法很简便,我只是想不通自己那个程序的逻辑不大对,但结果和你的那个结果还有下面这个三种是同样的结果是同一个,在每个单词空一格并且输入的第一个数是字母情况下
printf("enter…");
ch = getchar();
while(ch !=getchar()){
if(ch==' ')
i++;
else
n++;
ch=getchar();}
2013-11-21 09:11
blacker50
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2013-11-21
收藏
得分:0 
回复 2楼 ceoooec
呃呃,我这个程序还有漏洞,谢谢指出,只是如果不考虑条件限制,请看下面的回复贴。。
就是搞不懂为什么三种的结果会一样,我觉得原本的程序逻辑有问题,其他两个应该是一样都对
2013-11-21 09:14
快速回复:计算输入的一句话中平均单词数,以下是我的代码,有点问题,请帮我解释 ...
数据加载中...
 
   



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

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