| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1287 人关注过本帖
标题:c程序 统计各个数字、空白符出现的次数,有错
只看楼主 加入收藏
水桃蜜蜜
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-5-9
结帖率:66.67%
收藏
已结贴  问题点数:40 回复次数:6 
c程序 统计各个数字、空白符出现的次数,有错
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int c,i,nwhite,nother;
    int ndigit[10];

    nwhite = nother = 0;
    for (i=0;i<10;++i)
    {
        ndigit[i]=0;
    }
    printf("--------------\n");
    while((c=getchar())!=EOF)
    {

        if(c>='0'&&c<='9')
        ++ndigit[c-'0'];
        else if(c==' '||c=='\n'||c=='\t')
            ++nwhite;
        else
            ++nother;
    }
    printf("digits =");
    for (i = 0; i<10;++i)
        printf("%d",ndigit[i]);
    printf(",white space = %d,other =%d\n",nwhite,nother);
    return 0;
}
编译器显示no error,但是编译后出不来结果
搜索更多相关主题的帖子: include c程序 统计 
2016-07-20 19:00
大肥狗
Rank: 2
等 级:论坛游民
帖 子:3
专家分:20
注 册:2016-7-20
收藏
得分:20 
这个程序是没有错误的。编译没有结果可能是因为你没有输入EOF结束符。你可以在运行后输入一串字符后按回车,再按ctrl+z,再按回车键,就可以看结果了。
2016-07-20 19:33
水桃蜜蜜
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-5-9
收藏
得分:0 
回复 2楼 大肥狗
是的,谢谢,为什么要按Ctrl+z啊,
还有ndigit[c-'0']为什么要这么写啊c不是int类型吗,为什么总要有‘’加在数字上呢
2016-07-20 19:41
大肥狗
Rank: 2
等 级:论坛游民
帖 子:3
专家分:20
注 册:2016-7-20
收藏
得分:0 
回复 3楼 水桃蜜蜜
Ctrl+z是数据流结束符的输入方式,就是EOF。
char类型本质上是一种int类型,但一般储存范围比int类型小,加单引号表示那个字符代表的ASCII码的值。
2016-07-20 20:49
zx315
Rank: 5Rank: 5
来 自:广东
等 级:职业侠客
威 望:2
帖 子:86
专家分:378
注 册:2016-7-13
收藏
得分:20 
ch - '0' 可以这么理解,它的结果是字符形式的数字所对应整数形式的数字,例如当 '0' 对应 0 , '1' 对应 1

Read The Fucking Source Code~
2016-07-20 21:46
水桃蜜蜜
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-5-9
收藏
得分:0 
会了,结贴了
2016-07-20 22:26
平常心q
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:120
专家分:550
注 册:2016-3-31
收藏
得分:0 
while((c=getchar())!=EOF)可以换为while((c=getchar())!='\n')就可以了。按回车,再按ctrl+z,再按回车键,就可以看结果了,不然即使不输入空格,也总会有空格出现的
2016-07-20 22:49
快速回复:c程序 统计各个数字、空白符出现的次数,有错
数据加载中...
 
   



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

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