c语言 从键盘输入一行字符,分别统计其中数字字符,字母字符和其他字符的个数

如题所述

可以参考下面的代码:

#include <stdio.h>

intmain()

{

inta,b,c,ch;

a=b=c=0;//计数器初始化为0.

while((ch=getchar())!='\n')//循环读取字符,到换行结束。

{

if(ch>='0' && ch<='9')//数字

a++;

else if((ch>='a' && ch<='z')||(ch>='A' && ch<='Z'))//字母

b++;

else//其它

c++;

}

printf("%d%d%d\n",a,b,c);//输出结果。

return0;

}

扩展资料:

printf()函数函数

printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。函数的原型为:

int printf(const char *format, ...);

函数返回值为整型。若成功则返回输出的字符数,输出出错则返回负值,printf()函数的调用格式为:

printf("<格式化字符串>", <参量表>);

while语句的一般表达式为:while(表达式){循环体}。

参考资料来源:百度百科-printf()

参考资料来源:百度百科-while (循环语句及英文单词)

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-06-21

一、问题分析:

输入一行字母,那么会以换行结束。所以可以存入数组,也可以逐个输入,遇到换行结束。

要统计各个类的个数,就要逐个判断是哪个分类的。

由于在ASCII码中,数字,大写字母,小写字母分别连续,所以可以根据边界值判断类型。

二、算法设计:

1、读入字符,直到遇到换行结束。

2、对于每个字符,判断是字母还是数字,或者是其它字符。

3、对于每个字符判断后,对应类别计数器自加。

4、最终输出结果。

三、参考代码:

#include <stdio.h>
int main()
{
    int a,b,c,ch;
    a=b=c=0;//计数器初始化为0.
    while((ch=getchar())!='\n')//循环读取字符,到换行结束。
    {
        if(ch>='0' && ch<='9')//数字
            a++;
        else if((ch>='a' && ch<='z')||(ch>='A' && ch<='Z'))//字母
            b++;
        else //其它
            c++;
    }
    printf("%d %d %d\n", a,b,c);//输出结果。
    return 0;
}

第2个回答  2013-01-09
#include <stdio.h>
int main()
{
char str[101]={'\0'};
int i;
int c=0,number=0,others=0;
c=number=others=0;
gets(str);//输入一串字符
for(i=0;str[i]!='\0';i++)//判断是否结束
{
if(str[i]>='A'&&str[i]<='z')//判断是否是字母是则加1
c++;
else if(str[i]>='0'&&str[i]<='9')//判断是否为数字
number++;
else
others++;//都不是则其他字符计数
}
printf("字符个数:%d\t数字个数:%d\t其他字符个数:%d\n",c,number,others);
}
第3个回答  推荐于2017-09-09
#include <stdio.h>
int main()
{
char str[101]={'\0'};
int i;
int c,number,others;
c=number=others=0;
gets(str);
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='A'&&str[i]<='z')
c++;
else if(str[i]>='0'&&str[i]<='9')
number++;
else
others++;
}
printf("字符个数:%d,数字个数:%d,其他字符个数:%d\n",c,number,others);
return 0;
}本回答被提问者采纳
第4个回答  2021-02-21
#include<stdio.h>
#include<string.h>
int main() {
printf("请输入一个字符:\n");
int alp,num,oth;
alp = 0;
num = 0;
oth = 0;
char str[50];
scanf("%s", &str);
for (int i = 0; str[i] !='\0'; i++)
{
if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z') {
alp++;
}
else
{
if (str[i] >='0'&& str[i] <='9')
{
num++;
}
else {
oth++;
}
}
}
printf("alp=%d,num=%d,oth=%d\n", alp, num, oth);

}
相似回答