K&R《C程序设计语言》p15:统计各个数字、空白符及其他字符出现的次数
2017-06-07 20:24
225 查看
代码:
运行结果:
![](http://img.blog.csdn.net/20170607202246369?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpc2h1X3poZW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
说明:
(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)用键盘输入输出时,眼睛看到的数字其实全都是字符
#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)用键盘输入输出时,眼睛看到的数字其实全都是字符
相关文章推荐
- 从终端输入中统计数字,空白符,其他字符出现次数
- 4.统计各个数字,空白符,以及其他字符出现的次数
- 统计各个数字、空白符、及所有其他字符出现的次数
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。
- 编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- 统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- 练习三:统计字符串中字符中 大写字符 小写字符 数字 其他字符 出现的次数
- 编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- 用switch...case语句统计数字、空格和其他字符出现的次数
- C语言:编写一个程序统计输入字符串中,各个数字、空白字符、以及其他所有字符出现的次数。
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。
- 编写一个程序统计各个数字、空白符(包括空格符、制表符及换行符)以及其它字符出现的次数
- 统计字符串中:各个数字、空白字符、以及其他所有字符出现的次数
- 统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- 编写一个程序统计输入字符串中:各个数字,空白字符,以及其他所有字符常出现的次数。
- 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
- 统计字符串里面数字,字母,其他字符的出现次数
- C语言:编写一个程序统计输入字符串中,各个数字、空白字符、以及其他所有字符出现的次数。
- 统计字符串中:各个数字、空白字符、以及其他所有字符出现的次数
- 统计每一个数字字符出现的次数