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);
}
这样写为什么不对呢?跪求大神指教啊 展开
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);
}
这样写为什么不对呢?跪求大神指教啊 展开
5个回答
推荐于2016-10-17 · 知道合伙人教育行家
关注
展开全部
因为字符串中有空格所以不能使用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
*/
展开全部
#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);
}
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);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
题目要求的是输入一串字符串,而你并没有一个一个去判断是什么。下面是代码,希望可以帮助到你。
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while(ch!='CR')
//改为:
while(ch!='\n')
//改为:
while(ch!='\n')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'CR'应该是字符串吧,问题是你声明存放是各变量,只能存一个数,必须声明数组存放字符串
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询