C语言 . 输入一行字符,以回车结束,分别统计出其中的英文字母、空格、数字和其他字符的数。帮忙看看哪错

2024-11-01 08:57:58
推荐回答(5个)
回答(1):

printf("%d%d%d%d",a,b,c,d);
引号逗号少了吧?

别的我没看 你看看有问题没

-======================================
你的程序我没看懂,是用来干什么的?

回答(2):

输入错误。。。 你这个估计重写吧,错误好多- - 这是我写的,纯手工。主要参考的。最好自己再写一下,我的做参考就可以了
#include
int main()
{
char c;
int n,m,x,y;
n=m=x=y=0;
printf("input a string:");
c=getchar();
while(c!='\n')
{
if (c>=65 and c<=90 || c>=97 and c<=122) n++;
else if (c>=48 and c<=57) m++;
else if (c==32) x++;
else y++;
c=getchar();
}
printf("字母个数:%d\n",n);
printf("数字个数:%d\n",m);
printf("空格个数:%d\n",x);
printf("其他字符个数:%d\n",y);
getchar();getchar();getchar();
}

回答(3):

表示好多错误~~
1,字符串要存放在数组里
2,含有空格的字符串要用gets,不能用scanf
3,if那一行不能有分号
4,输出不规范
5,英文的ASCII记错了
以下是其中一个解法:
#include
void main()
{
int a=0,b=0,c=0,d=0,i=0;
char s[80];
gets(s);
for(i=0;i<80&&s[i]!='\0';i++)
{
if((s[i]>=65 && s[i]<=90)||(s[i]>=97&&s[i]<=122))//或if((s[i]>='a' && s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
a=a+1;
else if(s[i]==32)//或s[i]==' ';
b=b+1;
else if(s[i]>=48 && s[i]<=57)//或else if(s[i]>='0' && s[i]<='9')
c=c+1;
else
d=d+1;
}
printf("英文字符有%d\n",a);
printf("空格字符有%d\n",b);
printf("数字字符有%d\n",c);
printf("其他字符有%d\n",d);
}

回答(4):

main()就没错啦
/t 水平制表符
/b 退格将当前位置移到前一列

三,输入一个字符,判断输入字符的种类,即区分空格,回车,数字字符,英文字母和其他字符(用switch编写)
void main()
{
int k(0);
k = getchar();
switch(k)
{
case 32:
printf("空格!\n");
return;
case 10:
printf("回车!\n");
return;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
printf("数字!\n");
return;
default:
break;
}

int x1 = (k-13)/26;
switch(x1)
{
case 2:
printf("字母!\n");
return;
default:
break;
}

int x2 = (k-19)/26;
switch(x2)
{
case 3:
printf("字母!\n");
return;
default:
printf("其他键!\n");
break;
}
system("pause");
return;
}

回答(5):

#include
#include
void main()
{
int a=0,b=0,c=0,d=0;
char s[100];
char e;
printf("please input : ");
scanf("%s",&s);
int length=strlen(s);
for(int i=0;i {
e=s[i];
if(e>=97 && e<=122)
a++;
else if( e==' ')
b++;
else if(e>=1 && e<=9)
c++;
else
d++;

}printf("%d %d %d %d",a,b,c,d);
}
我写的ASCII值不对,你再查查书吧。