大虾帮我看一下"输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数"

#include <stdio.h>
void main()
{
int i,a=0,b=0,c=0;
char x;
x=getchar();
for(i=1;i<=10;i++)
{
if(c>='A'&&c<='Z'||c>='a'&&c<='z') a++;
else if(c>='0'&&c<='9')b++;
else c++;
}
printf("%d %d %d",a,b,c);
}哪里错了??????
要求10个任意字符
最新回答
烟酉

2024-05-19 11:51:34

首先:你在程序中错误的用变量c去看做字符变量x来判断其类型!也就是说:在if语句中的c应该换成字符型变量x而不是整型变量c;
其次:按照你的程序,程序只能接受一个字符,并能准确的判断其类型(是英文单词?是数字?还是其他)。但是它不能接受十个字符!修改方法如下:
#include <stdio.h>
void main()
{
int i,a=0,b=0,c=0;
char x;
for(i=1;i<=10;i++)
{
x=getchar();将该语句从循环外移到循环内部,现在就能保证x能接
//受不同的十次输入!
if(x>='A'&&x<='Z'||x>='a'&&x<='z') a++;//将c换成字符变量x就
//可以了!
else if(x>='0'&&x<='9')b++;
else c++;
}
printf("英文字母的个数是:%d \n数字的个数是:%d \n其他字符的个数是:%d\n",a,b,c);
}
建议:在以后的编程中,要注意变量的调用,做到能准确的调用应该被调用的变量!
希望对你能有所帮助!
枫熙槿晨

2024-05-19 03:58:58

#include <stdio.h>
void main()
{
int i,a=0,b=0,c=0;
char x[100];

gets(x);
for(i=0;i<10;i++)
{
if((x[i]>='A'&&x[i]<='Z')||(x[i]>='a'&&x[i]<='z')) a++;
else if(x[i]>='0'&&x[i]<='9')b++;
else c++;
}
printf("%d %d %d",a,b,c);
}