c语言怎样才能输入一行字符,以回车作为结束标志,分别统计出大写字母,小写字母,空格,数字和其他字符的

#include<stdio.h>voidmain(){inta=0,b=0,c=0,d=0,f=0;charch;scanf("%c",&ch);while(ch!='... #include <stdio.h>
void main()
{
int a=0,b=0,c=0,d=0,f=0;
char ch;
scanf("%c",&ch);
while(ch!='CR')
{
if(ch>='A'&&ch<='Z')
a=a+1;
else if(ch>='a'&&ch<='z')
b=b+1;
else if(ch==32)
c=c+1;
else if(ch>='0'&&ch<='9')
d=d+1;
else
f=f+1;
scanf("%c",&ch);
}
printf("a=%d,b=%d,c=%d,d=%d,f=%d\n",a,b,c,d,f);
}
这样写为什么不对呢?跪求大神指教啊
展开
 我来答
985967518
推荐于2016-10-17 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109854
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部

因为字符串中有空格所以不能使用scanf函数来接收键盘输入的字符串,因为scanf遇到空格和回车结束输入,所以需要使用gets来接收键盘输出的字符串,接着依次判断并累加,最后输出即可。

参考代码:

#include <stdio.h>
int main() {
int a=0,b=0,c=0,d=0,f=0,i;
char ch[100];
gets(ch); 
for(i=0;ch[i]!='\0';i++)
{
if(ch[i]>='A'&&ch[i]<='Z')
    a=a+1;
else if(ch[i]>='a'&&ch[i]<='z')
    b=b+1;
else if(ch[i]==32)
c=c+1;
else if(ch[i]>='0'&&ch[i]<='9')
    d=d+1;
else 
f=f+1;
}
printf("a=%d,b=%d,c=%d,d=%d,f=%d\n",a,b,c,d,f);
return 0;
}
/*
asdfASDF ADSFDASGasdfads3214325a df
a=12,b=14,c=2,d=7,f=0
*/
沧海雄风2009
推荐于2018-03-14 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2752万
展开全部
#include <stdio.h>
void main()
{
int a=0,b=0,c=0,d=0,f=0;
char ch; //这个是一个字符
scanf("%c",&ch); //即使你把ch声明成了一个字符串数组 scanf 遇到空格 就截断了
while(ch!='CR') //虽然你while了 即便ch 是字符串数组 但是没有后移 CR改为换行
{
if(ch>='A'&&ch<='Z')
a=a+1;
else if(ch>='a'&&ch<='z')
b=b+1;
else if(ch==32)
c=c+1;
else if(ch>='0'&&ch<='9')
d=d+1;
else
f=f+1;
scanf("%c",&ch);
}
printf("a=%d,b=%d,c=%d,d=%d,f=%d\n",a,b,c,d,f);
}
追问
那应该怎么改呢?小弟刚学,不懂啊
追答
123ASDasd &&*^%$
a=3,b=3,c=1,d=3,f=6
Press any key to continue

#include
void main()
{
int i=0,a=0,b=0,c=0,d=0,f=0; //声明变量i用以循环
char ch[80]="\0"; //声明字符串数组 并初始化
gets(ch); //用gets函数获得输入内容 包括空格
while(ch[i]!='\0') //不等于\0
{
if(ch[i]>='A'&&ch[i]='a'&&ch[i]='0'&&ch[i]<='9')
d=d+1;
else
f=f+1;
i++; //循环变量自加
}
printf("a=%d,b=%d,c=%d,d=%d,f=%d\n",a,b,c,d,f);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夏日那雨
2012-03-26
知道答主
回答量:2
采纳率:0%
帮助的人:3222
展开全部
题目要求的是输入一串字符串,而你并没有一个一个去判断是什么。下面是代码,希望可以帮助到你。

#include <iostream>
#include <cstring>
using namespace std;
void main()
{
char string[30];
int character=0,number=0,space=0,other=0;
int i=0;
cin.get(string[0]);
while (string[i++]!='\n')
{
cin.get(string[i]);
//i++;
}
i=0;
while(string[i]!='\n')
{ if (string[i]>='0'&&string[i]<='9') number++;
else if ((string[i]>='A'&&string[i]<='Z')||(string[i]>='a'&&string[i]<='z')) character++;
else if(string[i]==' ') space++;
else other++;
i++;
}
cout<<"字母个数"<<character<<endl;
cout<<"数字个数"<<number<<endl;
cout<<"空格个数"<<space<<endl;
cout<<"其它个数"<<other<<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2012-03-26 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4484万
展开全部
while(ch!='CR')
//改为:
while(ch!='\n')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
零一只小斑点狗
2012-03-26 · TA获得超过235个赞
知道答主
回答量:171
采纳率:0%
帮助的人:138万
展开全部
'CR'应该是字符串吧,问题是你声明存放是各变量,只能存一个数,必须声明数组存放字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式