标题:一个计数程序,最后为什么没有输出?求教!
只看楼主
codeooo
Rank: 2
等 级:论坛游民
帖 子:25
专家分:15
注 册:2018-7-26
结帖率:100%
已结贴  问题点数:25 回复次数:7 
一个计数程序,最后为什么没有输出?求教!
#include <stdio.h>
/*统计各个数字,空白符和其他字符出现的次数*/
main()
{
    int c, i, w, o;
    int ndigit[10];
   
    w = o = 0;
    for(i = 0; i < 10; ++i)
        ndigit[i] = 0;
   
    while((c = getchar()) != EOF)
        if(c == ' ' || c == '\t' || c == '\n')
            ++o;
        else if (c >= '0' && c <= '9')
            ++ndigit[c-'0'];
        else
            ++w;
   
   
    printf("digits = ");
    for(i = 0; i < 10; ++i)
        printf("%d", ndigit[i]);
    printf("words = %d others = %d\n", w, o);
}

最后面并没有想象中的数组输出......  
请大神不吝赐教
搜索更多相关主题的帖子: 计数 输出 int ++i printf 
2018-08-01 14:45
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:8 
在新的一行按ctrl+z后回车
2018-08-01 15:16
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
得分:17 
1.结束楼上已经说了,就不赘述了。
2.数组输出的问题需要解决两处问题即可,分别为:
    A. 数组赋值,你程序种的赋值是不是你所需要的那种,应将   else if (c >= '0' && c <= '9')
                                                               ++ndigit[c-'0'];
                                                     中的 ++ndigit[c-'0']; 改为 ndigit[i++]=c-'0'; 同时在while前一行加上一句:i=0;
    B. 数组输出,你的输出,for条件有问题,因为你不管数字有是否有10个都输出10数字,一旦数组少于10,那么末尾将用你初始化的0补齐,
       解决这个问题需要结合A中数组赋值,数组赋值中的i值即为数字个数,不要    动i,for循环中的变量重新定义一个j,用j来控制数组输出的值。
       具体修改后的语句为:将 for(i = 0; i < 10; ++i) 改为 for(j = 0; j < i; j++);将 for中的 ndigit[i] 改为 ndigit[j];别忘了提前定义j哟。

修改后的代码如下:
程序代码:
#include <stdio.h>
/*统计各个数字,空白符和其他字符出现的次数*/
main()
{
    int c, i, w, o;
    int j;
    int ndigit[10];
    
    w = o = 0;
    for(i = 0; i < 10; ++i)
        ndigit[i] = 0;
    
    i=0;
    while((c = getchar()) != EOF)
        if(c == ' ' || c == '\t' || c == '\n')
            ++o;
        else if (c >= '0' && c <= '9')
            ndigit[i++]=c-'0';
        else
            ++w;
            
        printf("digits = ");
        for(j = 0; j < i; j++)
            printf("%d", ndigit[j]);
        printf("words = %d others = %d\n", w, o);
}

 

126邮箱联系方式:no1xijin@126. com
2018-08-01 16:04
codeooo
Rank: 2
等 级:论坛游民
帖 子:25
专家分:15
注 册:2018-7-26
得分:0 
回复 2楼 grmmylbs
谢谢!不过按了Ctrl+Z它就直接闪退了.........
2018-08-01 17:24
codeooo
Rank: 2
等 级:论坛游民
帖 子:25
专家分:15
注 册:2018-7-26
得分:0 
回复 3楼 no1xijin
谢谢大佬的帮助
2018-08-01 17:28
zhoujie13
Rank: 2
等 级:论坛游民
威 望:1
帖 子:29
专家分:38
注 册:2018-7-8
得分:0 
你也再看c程序设计语言吧
2018-08-02 13:08
zhoujie13
Rank: 2
等 级:论坛游民
威 望:1
帖 子:29
专家分:38
注 册:2018-7-8
得分:0 
pi@raspberrypi:~/c $ gcc d.c && ./a.out
kajshd
kalsjdka skldj asd
asd as1321asd
as1
1d3a13sd
asd132a1s a
sd


as32d1digits = 0835000000words = 47 others = 13

按照你的代码输出完全没问题
2018-08-02 13:20
codeooo
Rank: 2
等 级:论坛游民
帖 子:25
专家分:15
注 册:2018-7-26
得分:0 
回复 7楼 zhoujie13
谢谢答复
2018-08-02 14:17



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




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

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