小白求教C语言,输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数

#include "stdio.h"
void main()
{
printf("输入一行字符:");
char str;
int i,a=0,b=0,c=0,d=0;
gets(str);
while(str!='\n')
{
if((str>='A'&&str<='Z')||(str>='a'&&str<='z'))
a++;
else if(str==' ')
b++;
else if(str>='0'&&str<='9')
c++;
else d++;
}
printf("字母有%d个,空格有%d个,数字有%d个,其他字符有%d个",a,b,c,d);

}
写成这样各种报错,实在找不出来了,求高手指点

#include<stdio.h>

#include<conio.h>

#include<string.h>

int main()

{   

 printf("输入一行字符:");   

 char str[100]; //这个地方要改成str[100]这种字符数组,gets函数是将从控制台输入的字符串存到字符数组中的 

 int i,a=0,b=0,c=0,d=0;   

 gets(str);

 //控制判断的结束的话,是对于某一个字符来判断的,当然也可以用

 int length=strlen(str);

 for(int i=0;i<length;i++)

 //i=0;     

 //while(str[i]!='\n')

 {     

  if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))     

   a++;     

  else if(str[i]==' ')     

   b++;     

  else if(str[i]>='0'&&str[i]<='9')     

   c++;     

  else d++;   

  i++;

 }   

 //另外,判断字符类型有isalpah,isdigit等函数可以直接调用,不过要添加#include<ctype.h>这个头文件 

 printf("字母有%d个,空格有%d个,数字有%d个,其他字符有%d个",a,b,c,d);   

 getch();//从键盘敲入任意键,不回显在黑框内 

 return 0;

}


追问

很好很详细,麻烦再帮忙看下3楼追问有什么不妥,谢谢

追答

这个可能跟你的编译器有关系,你可以试试把全部的变量声明放在main函数最开始的地方,然后再写printf("输入一行字符:");

追问

我去,还真是,那就是说程序这样是没问题的?只是编译器的原因?变量声明是不是一般都得在最前面?

追答

不是的,我的编译器放在哪儿都行。只要在使用该变量之前声明就可以了,同时还要保证不重复声明同一变量。

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-03-09

C语言经典例子之统计英文、字母、空格及数字个数

第2个回答  2013-01-07
printf("输入一行字符:");
char str[100];//首先你是要输入一行字符,char str 定义的是一个字符,你要使用数组
int i=0,a=0,b=0,c=0,d=0;
gets(str);
while(i!=strlen(str))//这里循环条件要改下如果数组内容遍历完了就退出循环
{
if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))
a++;
else if(str[i]==' ')
b++;
else if(str[i]>='0'&&str[i]<='9')
c++;
else d++;
i++;
}
printf("字母有%d个,空格有%d个,数字有%d个,其他字符有%d个\n",a,b,c,d);追问 

都改的一样了,为啥还是这么多报错?崩溃啊...
追答

你换个编译器用吧·····用vs2008 或者vc 6.0

本回答被网友采纳
第3个回答  2013-01-07
你的空格中间有空吗追问

必须有

C语言输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个...
else if('\\n'!=c) others++;过滤掉最后一个回车符

关于C的问题~!!?
利用while循环,条件为输入的字符不为'\\n'include "stdio.h"main(){char c;int letters=0,space=0,digit=0,others=0;printf("please input some characters\\n");while((c=getchar())!='\\n'){ if(c>='a'&&c<='z'||c>='A'&&c<='Z')letters++;else if(c==' ')space++;else ...

用C#输入一行字符,分别统计出其中的字母,空格,数字及其他字符的个数怎么...
static void Main(string[] args){ string str = "";int ch = 0;\/\/用来统计字母的数量 int sp = 0;\/\/用来统计空格的数量 int math = 0; \/\/用来统计数字的数量 int other=0;\/\/用来统计其它字符的数量 Console.Write("请输入一段字符:");str=Console.ReadLine();char[] c = str.ToCha...

输入一行字符,分别统计其中的英文大写字母,小写字母,数字字符和其他字符...
printf("小写字母个数:%d\\n",x);printf("大写字母个数:%d\\n",d);printf("数字个数:%d\\n",s);printf("其他字符个数:%d\\n",q);}

编写一个程序,输入一行字符,以回车结束,分别统计出其中的英文字母、空...
printf("i请输入10个字符:\\n");while((c=getchar())!='\\n')\/*读取当前字符,如不为回车符则进行统计*\/ { if(c>='a'&&c<='z'||c>='a'&&c<='z')letter++;else if(c=='')space++;else if(c>='0'&&c<='9')digit++;else other++;} printf("letter=%d,space=%d,digit=...

C语言编程题,小白不会编程序
max, ch[i]) < 0) strcpy(max, ch[i]); printf("the max string is : %s", max); return 0;}#include<stdio.h>#include<string.h>#include<ctype.h>\/\/有一篇文章,共有三行字符,每行80个字符,分别统计其中英文大写字母,...

C语言小白求问。如何读取字符串文件,并根据不同长度的单词统计总共出现...
思路:可先用fopen打开文件流,之后用fgets把全文读出到字符串变量。之后两个选择:1、直接变量字符串,遇字母作为一个单词开始,遇非字母作为一个字母结束,这样把所有单词,拆出来放到字符串数组中。(大小写转换可同时进行)。2、变量字符串将所有标点符号全部替换成空格,再用fprintf写入覆盖原文件,再...

c语言中如何输入输出字符串
1 用scanf\/printf输入输出。scanf\/printf是C语言的格式化输入输出函数,可以用于输入输出各种基础类型,字符串(char*)也 其支持范围内。格式化字符为%s。定义 char str[100];输入 scanf("%s",str);输出 printf("%s",str);2 C语言还支持专门的字符串输入输出函数:gets\/puts。gets的作用为,读入一行...

c语言小白,请问为什么我的这段代码输出结果不正确?应该怎么改呢?求具...
1、这一块统计数量的代码其实老实说我都没看懂是什么意思,但是我测试了,输入13能统计出来是2,但是输入12345的时候统计就错了,这段并不能数出3来。2、第17行有问题,你每次循环都把max赋值为Num[0],按照你的代码来,输入13时,Num[0]的值为0,所以max初始值总是0,而且Num[9]也是0,所以...

python有多少字符串(2023年最新分享)
python字符串各类型字符统计 一般就是统计下大写字母小写字母数字和其他字符,用一个for遍历和分支判断计数。 n=input() xx,dx,sz,qt=0,0,0,0 foriinn: 缩进if'a'=i='z':xx+=1 缩进elif'A'=i='Z':dx+=1 缩进elif'0'=i='9':sz+=1 缩进else:qt+=1 print(xx,dx,sz,qt)万字干货,Python语...

相似回答