鱼C论坛

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

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

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

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

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

x
本帖最后由 Y.H 于 2011-8-16 10:52 编辑

/****统计输入的各个数字,空白符(空格,制表符(tab),回车),其他字符(字母,特殊字符)*****/
            /*************************我想了两天*************************/
            /*****************希望高手帮忙看看能够优化不*****************/
            /************就是零基础学习C语言中的34节的练习题3************/


  1. #include <stdio.h>

  2. void main()
  3. {
  4.         //为所输入的数字计数,初始定义.
  5.         int sum[10] = {0};                                                
  6.         
  7.         //为空白符计数,初始定义.
  8.         int i, c, kg = 0, tab = 0, enter = 0;      
  9.                
  10.         //为其他字符计数,初始定义.
  11.         int zm = 0;      //zm用来统计所输入的其他字符的次数.
  12.                
  13.         while ((c = getchar()) != EOF)  //判断所输入的为F6或Ctrl+z的时候结束循环.
  14.         {
  15.                 //判断输入的数据是否在0和9之间.
  16.                 if (c >= '0' && c <= '9')               
  17.                 {
  18.                         sum[c]++;   //这里我觉得不用sum[c-'0']++, 好像结果都一样.
  19.                 }
  20.                   
  21.                 //判定输入的是否为空白符(空格、制表、回车).
  22.                 if (c == ' ')
  23.                 {
  24.                         kg++;      //kg统计空格次数.
  25.                 }
  26.                 if (c == '\t')
  27.                 {
  28.                         tab++;     //tab统计制表符次数.
  29.                 }
  30.                 if (c == '\n')
  31.                 {
  32.                         enter++;      //enter统计回车次数.
  33.                 }
  34.                   
  35.                 //判定输入的是否为其他字符(例:a~z,A~Z,~/..等等)
  36.                 if (c >= '!' && c <= '/' || c >= ':' && c <= '~')
  37.                 {
  38.                         zm = zm + 1;      //zm统计其他字符次数.
  39.                 }
  40.            }

  41.            //此为输出所输入的各个数字的次数.
  42.            for (i = 0; i < 10; i++)
  43.            {
  44.                  int temp_sum = 0;
  45.                  temp_sum = temp_sum + sum[i];
  46.                  printf ("%d : %d", i, sum[i]);
  47.                  if (9 == i)
  48.                  {
  49.                        printf ("/n数字类总和 : %d/n", temp_sum);
  50.                  }
  51.            }

  52.            //输出空白符次数.
  53.            printf ("空白符 : %d\n", kg + tab + enter);

  54.            //输出其他字符.
  55.            printf ("其他字符 : %d/n", zm);
  56. }
复制代码






//今天思考那个劳什子递归(hanoi塔),之前没学C时听他们说这个我还以为很容易不过是麻烦些。不过终于了解了!
//同样如果做出来了,有机会送上来给大家研究
//最后大侠莫笑.





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

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 07:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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