马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Y.H 于 2011-8-16 10:52 编辑
/****统计输入的各个数字,空白符(空格,制表符(tab),回车),其他字符(字母,特殊字符)*****/
/*************************我想了两天*************************/
/*****************希望高手帮忙看看能够优化不*****************/
/************就是零基础学习C语言中的34节的练习题3************/
#include <stdio.h>
void main()
{
//为所输入的数字计数,初始定义.
int sum[10] = {0};
//为空白符计数,初始定义.
int i, c, kg = 0, tab = 0, enter = 0;
//为其他字符计数,初始定义.
int zm = 0; //zm用来统计所输入的其他字符的次数.
while ((c = getchar()) != EOF) //判断所输入的为F6或Ctrl+z的时候结束循环.
{
//判断输入的数据是否在0和9之间.
if (c >= '0' && c <= '9')
{
sum[c]++; //这里我觉得不用sum[c-'0']++, 好像结果都一样.
}
//判定输入的是否为空白符(空格、制表、回车).
if (c == ' ')
{
kg++; //kg统计空格次数.
}
if (c == '\t')
{
tab++; //tab统计制表符次数.
}
if (c == '\n')
{
enter++; //enter统计回车次数.
}
//判定输入的是否为其他字符(例:a~z,A~Z,~/..等等)
if (c >= '!' && c <= '/' || c >= ':' && c <= '~')
{
zm = zm + 1; //zm统计其他字符次数.
}
}
//此为输出所输入的各个数字的次数.
for (i = 0; i < 10; i++)
{
int temp_sum = 0;
temp_sum = temp_sum + sum[i];
printf ("%d : %d", i, sum[i]);
if (9 == i)
{
printf ("/n数字类总和 : %d/n", temp_sum);
}
}
//输出空白符次数.
printf ("空白符 : %d\n", kg + tab + enter);
//输出其他字符.
printf ("其他字符 : %d/n", zm);
}
//今天思考那个劳什子递归(hanoi塔),之前没学C时听他们说这个我还以为很容易不过是麻烦些。不过终于了解了!
//同样如果做出来了,有机会送上来给大家研究
//最后大侠莫笑.
|