K&R《C程序设计语言》p15:统计各个数字、空白符及其他字符出现的次数

来源:互联网 发布:泳池派对李青 淘宝价格 编辑:程序博客网 时间:2024/05/16 15:11

代码:

#include <stdio.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(Windows系统要结束输入请先换行再按ctrl+z,\nLinux/Unix/Mac系统要结束输入请先换行再按ctrl+d)\n");    while ((c = getchar()) != EOF)     {        if (c >='0' && c <= '9')         {            ++ndigit[c-'0'];        }        else if (c == ' ' || c == '\n' || c == '\t')        {            ++nwhite;        }        else         {            ++nother;        }    }        for (i = 0; i < 10; ++i)     {        printf("数字%d出现了%d次\n", i, ndigit[i]);    }        printf("空格或换行或tab出现了%d次\n其他字符出现了%d次\n", nwhite, nother);    return 0;}

运行结果:


 

说明:

(1)    此程序来自K&R 《The C Programming Language》中文版第2版P15,输出格式做了少量修改。

 

(2)    EOF是End of File的缩写,代表输入结束。在Windows系统中是换行后按Ctrl + z,在Linux/Unix/Mac中是换行后按Ctrl + d。

 

(3)     

for (i = 0; i < 10; ++i)

{

    ndigit[i]= 0;

}

展开来就是

ndigit[0]=0;

ndigit[1]=0;

ndigit[2]=0;

ndigit[3]=0;

ndigit[4]=0;

ndigit[5]=0;

ndigit[6]=0;

ndigit[7]=0;

ndigit[8]=0;

ndigit[9]=0;

这是在输入字符之前,先把0,1,2,……9出现的次数置为0。

 

(4)     

if (c >='0' && c <= '9')

{

    ++ndigit[c-'0'];

}

这是判断假如输入的字符为0到9之间(包含0和9),那么相应的计数要+1。

以输入‘121’为例,

输入第一个‘1’时,则ndigit['1'-'0']=ndigit[1],ndigit[1]原先的值为0,这里+1后就变成1

输入第一个‘2’时,则ndigit['2'-'0']=ndigit[2],ndigit[2]原先的值为0,这里+1后就变成1

输入第二个‘1’时,则ndigit['1'-'0']=ndigit[1],ndigit[1]原先的值为1,这里+1后就变成2

 

(5)

字符‘0’对应的ASCII编码是48

字符‘1’对应的ASCII编码是49

字符‘2’对应的ASCII编码是50

字符‘3’对应的ASCII编码是51

字符‘4’对应的ASCII编码是52

字符‘5’对应的ASCII编码是53

字符‘6’对应的ASCII编码是54

字符‘7’对应的ASCII编码是55

字符‘8’对应的ASCII编码是56

字符‘9’对应的ASCII编码是57

 

字符‘A’对应的ASCII编码是65

字符‘B’对应的ASCII编码是66

……(其他24个大写字母按此增加顺序类推)

 

字符‘a’对应的ASCII编码是97

字符‘b’对应的ASCII编码是98

……(其他24个小写字母按此增加顺序类推)

 

(6)用键盘输入输出时,眼睛看到的数字其实全都是字符

 

阅读全文
0 0
原创粉丝点击