| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2476 人关注过本帖
标题:望解答
取消只看楼主 加入收藏
Z1020
Rank: 1
等 级:新手上路
帖 子:63
专家分:5
注 册:2019-11-9
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:7 
望解答
#include<stdio.h>
int main()
{
        char c1;
        int m=0,n=0,x;
        do{
            scanf("%c",&c1);
            if(c1>='0' && c1<='9')
            {m++;break;}
            else if(c1>=65 && c1<=122)
            n++;
        }
        while(scanf("%d",&x)!=EOF);
        printf("%d %d",n,m);
        return 0;}
判断输入数字和字母的个数,为什么我输出的m为0呢?初学望指教,谢谢。
搜索更多相关主题的帖子: scanf int 输入 判断 return 
2019-11-09 14:47
Z1020
Rank: 1
等 级:新手上路
帖 子:63
专家分:5
注 册:2019-11-9
收藏
得分:0 
2019-11-09 14:58
Z1020
Rank: 1
等 级:新手上路
帖 子:63
专家分:5
注 册:2019-11-9
收藏
得分:0 
回复 3楼 纯蓝之刃
大佬好,我照着你的说明改了以下,但是判断数字的个数依然为零(输入了数字的),请大佬再帮我解答以下,萌新拜谢。
#include<stdio.h>
int main()
{
        char c1;
        int m=0,n=0,x;
        do{
            scanf("%c",&c1);
            if(c1>='0' && c1<='9')
            m++;
            else if(c1>=65 && c1<=122)
            n++;
        }
        while(scanf("%d",&x)!=EOF);
        printf("%d %d",n,m);
        return 0;}
2019-11-09 23:24
Z1020
Rank: 1
等 级:新手上路
帖 子:63
专家分:5
注 册:2019-11-9
收藏
得分:0 
回复 3楼 纯蓝之刃
谢谢大佬,你给我的程序是可以的,但是我还是不知道我修改后的程序错在哪(我自己修改的程序还是错的)
2019-11-09 23:30
Z1020
Rank: 1
等 级:新手上路
帖 子:63
专家分:5
注 册:2019-11-9
收藏
得分:0 
回复 3楼 纯蓝之刃
对了,这个程序还有一个条件,就是输入字母数字以后要以ctrl-z结束(手动笑哭),我忘了说。。。。。sorry sorry
2019-11-09 23:38
Z1020
Rank: 1
等 级:新手上路
帖 子:63
专家分:5
注 册:2019-11-9
收藏
得分:0 
回复 7楼 纯蓝之刃
已看那个帖子,虽然看得似懂非懂的,但是while(scanf("%d",&n)!=EOF)不是可以表示以ctrl-c结束输入吗?因为题目中有要求以ctrl-c结束输入,如果换成while(c1!='\0'); 就会显示运行时间过长。。。
【问题描述】分别统计标准输入中字母、数字字符个数(输入以Ctr-z结束)。
【输入形式】从标准输入中读取一个字符串,可以包含任意字符。输入以Ctrl-Z结束。
【输出形式】分别输出字符串中字母(大小写字母都要进行统计)、数字个数,相邻数字之间用一个空格区分,输出末尾没有空格。
【样例输入】C Java -and- C++ are 3 lanuages. 2006-8-24 16:34
【样例输出】20 12
【样例说明】字符串中共有20个字母,12个数字,所以输出20 12
如有太傻了的地方,请多见谅。
2019-11-10 10:02
Z1020
Rank: 1
等 级:新手上路
帖 子:63
专家分:5
注 册:2019-11-9
收藏
得分:0 
回复 9楼 纯蓝之刃
对了!谢谢大佬,但是我还有一个疑问就是我的原程序是这样的
#include<stdio.h>
int main()
{
        char c1;
        int m=0,n=0,x;
        do{
            scanf("%c",&c1);
            if(c1>='0' && c1<='9')
            m++;
            else if(c1>=65&&c1<=90||c1>=97&&c1<=122)
            n++;
        }
        while(scanf("%c",&c1)!=EOF);
        printf("%d %d",n,m);
        return 0;}
输出的m每次都为0(但n还是正常的),当我把scanf("%c",&c1);删掉之后,就可以正常输出了,我想问一下原理。感谢!!!
2019-11-10 17:25
Z1020
Rank: 1
等 级:新手上路
帖 子:63
专家分:5
注 册:2019-11-9
收藏
得分:0 
回复 10楼 lidaufo
谢谢!已了解
2019-11-10 17:26
快速回复:望解答
数据加载中...
 
   



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

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