| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 744 人关注过本帖
标题:利用数组统计输出的数值
只看楼主 加入收藏
ybyc9999
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2015-1-24
结帖率:90%
收藏
已结贴  问题点数:3 回复次数:6 
利用数组统计输出的数值
#include <stdio.h>
#include <iostream>
int main(void){
    int c,i,nwhite,nother;
    int ndigit[10];
    nwhite=nother=0;
   
    for(i=0;i<10;++i){
       ndigit[i]=0;
       printf("%d ",ndigit[i]);
    }  
    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);
    system("pause");
    return 0;
    }

其中if(c>='0' && c<='9')
          ++ndigit[c-'0'];
对这两条语句不太理解,当输入为:000
                                890  时,输出结果如下:
digits=1 0 0 0 0 0 0 0 1 1,white space=2,other=3
搜索更多相关主题的帖子: include 统计 
2015-01-30 10:29
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:1 
if(c>='0' && c<='9')主要是判断输入的字符是数字就执行++ndigit[c-'0']语句,++ndigit[c-'0']就是该数字对应数组元素+1,如输入的是字符“5”,字符“5”的asc码为53,字符“0”asc码为48,因此++ndigit[c-'0']等效于++ndigit['5'-'0']等效于++ndigit[53-48]等效于++ndigit[5]等效于ndigit[5]=ndigit[5]+1。

能编个毛线衣吗?
2015-01-30 11:03
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:1 
理解有误哦,稍微改进下

我不是砖家,要努力成为砖家。
2015-01-30 11:07
ybyc9999
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2015-1-24
收藏
得分:0 
回复 楼主 ybyc9999
恩,明白了,还有一个问题
if(c>='0' && c<='9')
          ++ndigit[c-'0'];,这里怎么不能用0 和9 代替’0‘和’9‘,
2015-01-30 12:14
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 4楼 ybyc9999
啊?这个也不知道啊。
你觉得你可以直接用键盘输入数字0-9,那么字母a-z又应该怎样输入?ANSI制定的asc码表又起什么作用?去啃下《计算机原理》吧,或许能让你豁然开朗的。

能编个毛线衣吗?
2015-01-30 12:29
ybyc9999
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2015-1-24
收藏
得分:0 
回复 5楼 wmf2014
就是说我输入0~9之间的数,计算机会转换为ACSII中对应的数值吗?
如果我输入一个很大的数,比如100000,那么还会进行转换么
2015-01-30 12:49
猫林heart
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:60
专家分:390
注 册:2014-9-26
收藏
得分:1 
如果输入100000的话,应该只转换'1','0'的呀。
2015-01-30 21:56
快速回复:利用数组统计输出的数值
数据加载中...
 
   



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

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