您的位置:首页 > 其它

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

2017-06-07 20:24 225 查看
代码:
#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)用键盘输入输出时,眼睛看到的数字其实全都是字符
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐