鱼C论坛

 找回密码
 立即注册
查看: 3038|回复: 8

[技术交流] C视频-34节-练习题-3-源代码.

[复制链接]
发表于 2011-8-13 09:23:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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时听他们说这个我还以为很容易不过是麻烦些。不过终于了解了!
//同样如果做出来了,有机会送上来给大家研究
//最后大侠莫笑.





想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-13 09:42:47 | 显示全部楼层
你貌似没定义sum数组呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-13 09:44:22 | 显示全部楼层
不好意思 我在排布这个代码板式,不小心把那个删除了 我改回来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-13 16:22:15 | 显示全部楼层
你这个程序,可以简化下的,写得太长了

把switch case 换成     
          sum[c-'0']++;
这样,简洁多了
               
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-13 16:23:15 | 显示全部楼层
还有,那个输出,用循环比较好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-16 10:30:24 | 显示全部楼层
呵呵 谢谢 我改改试试…………
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-16 10:33:29 | 显示全部楼层

呵呵 的确 真的 我没想到 既然是数字那就是在0~9之间 那就可以直接用c  谢谢 呵呵 …………
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-18 18:46:17 | 显示全部楼层
你这处程序明显有问题啊,肯定要减 ‘0’的,是把字符转成相应的整数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2016-4-14 10:41:26 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-11 17:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表