求修改C语言题目,统计字符

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:49:05
题目要求:编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空壳、空格和其他字符的个数,在主函数中输入字符串以及输出上述结果。
下面是我写的程序,没有错误,但却无法达到预期目的,求各路大侠指点指点!
#include<stdio.h>
#define PR printf
void main()
{
int assort(char x);
int i,a=0,b=0,c=0,d=0;
char str[10];
PR("请输入一个长度小于100的字符串:\n");
gets(str);
for (i=0;str[i]!=000;i++)
{
switch (assort (str[i]))
{
case 1 : a=a+1;
case 2 : b=b+1;
case 3 : c=c+1;
case 4 : d=d+1;
}
}

PR("\n");
PR("字母共有%2d个\n",a);
PR("数字共用%2d个\n",b);
PR("空格共有%2d个\n",c);
PR("其他字符共有%2d个\n",d);
}

int assort(char x)
{
int m;
if (('x'>='A'&&'x'<='Z')||('x'>='a'&&'x'<='z')) m=1;
if ('x'>='0'&&x<='9') m=2;
if ('

#include<stdio.h>
#define PR printf
void main()
{
int assort(char x);
int i,a=0,b=0,c=0,d=0;
char str[100];//数组声明
PR("请输入一个长度小于100的字符串:\n");
gets(str);
for (i=0;str[i]!='\0';i++)//以'\0'为字符串结束判断标志
switch (assort (str[i]))
{
case 1 : a++;break;//break是退出switch语句的关键
case 2 : b++;break;
case 3 : c++;break;
case 4 : d++;break;
}

PR("\n");
PR("字母共有%2d个\n",a);
PR("数字共用%2d个\n",b);
PR("空格共有%2d个\n",c);
PR("其他字符共有%2d个\n",d);
}

int assort(char x)
{
int m;
if ((x>='A'&&x<='Z')||(x>='a'&&x<='z'))m=1;//x本身就是一个字符变量 不要给其加上引号
else if (x>='0'&&x<='9') m=2;
else if (x==32) m=3;
else m=4;//判断语句改写
return (m);
}
//调试成功 结果正确 满足要求