| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6589 人关注过本帖
标题:统计从终端输入字符中每个大写字母的个数。用#号作为输入结束标志
只看楼主 加入收藏
杨唐卫
Rank: 2
等 级:论坛游民
帖 子:24
专家分:23
注 册:2014-4-16
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:7 
统计从终端输入字符中每个大写字母的个数。用#号作为输入结束标志
12. 填空完成下面程序,使其的功能是。程序如下:统计从终端输入字符中每个大写字母的个数。用#号作为输入结束标志
      #include <stdio.h>
      #include <ctype.h>
      void main ( )
         { int num[26],i; char  c;
           for (i=0;i<26;i++) num[i]=0;
           while (    (1)    != '#')     /* 统计从终端输入的大写字母个数*/
                  if (isupper(c)) num[c-65]   (2)    ;
           for (i=0;i<26;i++)         /* 输出大写字母和该字母的个数*/
                if (num[i])printf("%c:%d\n",i  (3)    ,num[i]);
         }
我的代码如下:
#include <stdio.h>
#include <ctype.h>
      void main ( )
         { int num[26],i;
           char  c;
           for (i=0;i<26;i++)
               num[i]=0;
           while ((c=scanf("%c",&c))!= '#')     /* 统计从终端输入的大写字母个数*/
           {
               if (isupper(c))
               num[c-65]++;
           }
              for (i=0;i<26;i++)         /* 输出大写字母和该字母的个数*/
              {
                  if (num[i])
                  {printf("%c:%d\n",i ,num[i]);}
              }
         }
但不行,为什么,作业有点敢。
搜索更多相关主题的帖子: include 统计 字母 
2014-05-15 20:42
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:7 
 while ((c=scanf("%c",&c))!= '#') 


问题在这,  scanf()函数的返回值是个整数.在你的代码中, 如果scanf()执行成功,则返回1,否则返回0. 但不论返回什么都不会==#,所以应该用getchar()函数.

代码最后
if (num[i]){printf("%c:%d\n",i ,num[i]);}

应该是
if (num[i]){printf("%c:%d\n",i+65 ,num[i]);}

代码测试环境:  WinXP+C-Free5.0.
2014-05-15 22:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
平時沒用過scanf()的返回値,考試的時候往上寫,怎麽說你好呢。

授人以渔,不授人以鱼。
2014-05-15 22:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
“作業有點敢(急)”,其實2樓等到明天再回他的就好了。

授人以渔,不授人以鱼。
2014-05-15 22:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
像65這樣的魔數,在試卷和教材範例上大肆出現,怪不得現在的學生寫出來的代碼可讀性那麽差。

授人以渔,不授人以鱼。
2014-05-15 22:56
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:7 
呵呵,其实大学的教材选择一直存在问题,而国内出版的书籍里又很少有代码写得规范的,难呐

梦想拥有一台龙芯3A-4000
2014-05-15 23:52
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
说实话,看到这题我自己复制粘贴然后就运行,结果没有得到题目中的结果.  我连我复制的代码都没有看一下, 只是看了一下他的要求,然后自己写了一个,和这个完全不一样.  

stdio.h中的函数我用过的很少,ctype.h文件压根就没接触过.  不过还好,对scanf()函数的返回值还是知道的.  

毕竟咱也是初学者, 不怕慢, 慢慢走, 知道一点记住一点,然后会用这一点才继续朝前走.

代码测试环境:  WinXP+C-Free5.0.
2014-05-16 08:01
杨唐卫
Rank: 2
等 级:论坛游民
帖 子:24
专家分:23
注 册:2014-4-16
收藏
得分:0 
嗯有道理,自己一步一步来。
2014-05-17 07:19
快速回复:统计从终端输入字符中每个大写字母的个数。用#号作为输入结束标志
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016878 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved