| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1796 人关注过本帖
标题:为什么多了一个数
只看楼主 加入收藏
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
结帖率:100%
收藏
 问题点数:0 回复次数:14 
为什么多了一个数
程序代码:
#include<stdio.h>
#include<ctype.h>


int main(void)
{
    int A,b,c;  //A为大写字母个数,B为小写字母个数//
    char ch;
    while((ch = getchar()) != EOF)
    {
        if(isupper(ch))
        {
           A++;
           continue;
        }
        else if(islower(ch))
        b++;
        else
        c++;
    } 
    printf("大写字母%d个,小写字母%d个,其它字符%d个.\n",A,b,c);
    return 0;
}

为什么小写字母老是多一个数的,是回车键,还是EOF键的问题。
搜索更多相关主题的帖子: 一个数 字母 个数 小写 EOF 
2017-09-10 11:23
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
A,b,c最开始是多少?
2017-09-10 11:43
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 2楼 吹水佬
不写的话,那一开始的初始化不是默认为零吗?
2017-09-10 15:45
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用kuaisha在2017-9-10 15:45:37的发言:

不写的话,那一开始的初始化不是默认为零吗?

这样看看:
    int a;
    printf("%d\n", a);
2017-09-10 15:57
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 4楼 吹水佬
图片附件: 游客没有浏览图片的权限,请 登录注册
试了几次了还是零
2017-09-10 16:17
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用kuaisha在2017-9-10 16:17:09的发言:

试了几次了还是零

算你好彩
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-09-10 17:09
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 6楼 吹水佬
哦,我明白了,谢谢。我能在向你问多一个问题吗?还是原来的那个,只不过多了几句代码罢了。
程序代码:
#include<stdio.h>
#include<ctype.h>


int main(void)
{
    int a=0,b=0,c=0,d=0;  //a为大写字母个数,B为小写字母个数,c为标点符号,d为空白字符//
    int e=0;
    char ch;
    printf("请输入单词\n"); 
    while((ch = getchar()) != EOF)
    {
          if(isupper(ch))
          {
            a++;
          }
          else if(islower(ch))
           {
               b++;
           }
          else if(ispunct(ch))
          {
              c++;
          }
          else if(isspace(ch))
          {
              d++;
          }
          printf("字符%c的ASCII为%d.\n",ch,ch);
          printf("请再次输入:\n");
    } 
    printf("大写字母%d个,小写字母%d个,标点符号%d个,空白字符%d个.\n",a,b,c,d);
    
    return 0;
}

我应该怎么改啊,我不要那么多的请再次输入,我只要输入完了,按下回车键后再显示(不是按下EOF键再显示)。

[此贴子已经被作者于2017-9-10 17:25编辑过]

2017-09-10 17:11
虾米小小小
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:30
专家分:135
注 册:2017-7-22
收藏
得分:0 
回复 7楼 kuaisha
把while循环条件改一下呗.
while((ch = getchar()) != '\n')
遇到换行符就结束.
2017-09-10 17:42
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 8楼 虾米小小小
这样子就没办法打一篇文章了,毕竟有一些键不能用。而且就算改了也没什么区别啊,我要的是在我输完后只显示一次再次输入,而不是每一个字母显示一次。

[此贴子已经被作者于2017-9-10 17:49编辑过]

2017-09-10 17:47
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用kuaisha在2017-9-10 17:11:50的发言:
我应该怎么改啊,我不要那么多的请再次输入,我只要输入完了,按下回车键后再显示(不是按下EOF键再显示)。

不要 printf("请再次输入:\n"); 这句
2017-09-10 19:22
快速回复:为什么多了一个数
数据加载中...
 
   



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

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