题目(9)分类统计.程序功能:输入一行文字,分类统计其中的大写字母,小写字母,数字,空格以及其他字符的个数.

//程序功能:输入一行文字,分类统计其中的大写字母、小写字母、数字、空格以及其他字符的个数。
//提 示:除在指定位置添加语句之外,请不要改动程序中的其他内容。

#include <stdio.h>
#include <string.h>

void main( )
{
int i,count[5]={0,0,0,0,0};
char str[80],*p;
printf("Input a line char: ");
gets(str);p=str;
//请在两条星线之间填入相应的代码, 输入一行文字,分类统计其中的大写字母、小写字母、
//数字、空格以及其他字符的个数。
//要求:利用指针方法来处理。
/*******************************************************************************/
for(i=0;p[i]='\0';i++){

if(p[i]>='A'&&p[i]<='Z')
{count[0]++;continue;}
else if(p[i]>='a'&&p[i]<='z')
{count[1]++;continue;}
else if(p[i]>='0'&&p[i]<='9')
{count[2]++;continue;}
else if(p[i]=' ')
count[3]++;
else
count[4]++;}

/*******************************************************************************/
printf("The result is: \n");
for(i=0;i<5;i++)
{
switch(i)
{
case 0:printf("Upper Char: ");break;
case 1:printf("Lower Char: ");break;
case 2:printf("Digit Char: ");break;
case 3:printf("Space Char: ");break;
case 4:printf("Other Char: ");break;
}
printf("%d\n",count[i]);
}
}
我是这样做的,大神们,哪里有问题啊?急死了!

第1个回答  推荐于2016-06-29
/*******************************************************************************/
for(i = 0; p[i] = '\0'; i++) {
if(p[i] >= 'A' && p[i] <= 'Z') count[0]++;
else if(p[i] >= 'a' && p[i] <= 'z') count[1]++;
else if(p[i] >= '0' && p[i] <= '9') count[2]++;
else if(p[i]=' ' count[3]++;
else count[4]++;
}
/*******************************************************************************/

即可。追问

我是你问我哪里有错误,哪里出问题了,不是要答案,大哥,我这里也有答案啊!

追答

你的程序,continue; 用错了。

它是跳转到循环的开始处去了,重新进入循环,并没有进行 i++。
再次循环,i,仍然是0。

循环不止。

追问

用了continue不是跳到for语句的表达式3(即i++)哪里了吗?

追答

用continue是跳到for语句的表达式3(即i++)了。

关键错误在下面:

/*******************************************************************************/
for(i = 0; p[i] = '\0'; i++) {

if (p[i] >= 'A' && p[i] = 'a' && p[i] = '0' && p[i] <= '9') count[2]++;
else if (p[i] = ' ' count[3]++; //--这里应该是双等号
else count[4]++;
}
/*******************************************************************************/

本回答被提问者采纳

编写程序,输入一行文字,统计其中大写字母,小写字母、空格以及数字符号的...
采用ascii码识别啊,大写小写,数字分别在不同段,空格就一个数值依次读入字符,计算其ascii码值,当其值在48至57之间时为数字,在65到90之间时为大写字母,在97至122直接时为小写字母,等于32时为空格。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 匿名用户 2013-12-31 展开全部 下载手机金山软件就可以...

输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字符的个...
} printf("字母有%d个,数字有%d个,空格有%d个,其他有%d个",letters,digits,spaces,others);return 0;}

输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数
程序首先定义了四个整型变量,分别表示四种类型的字符计数:letters(英文字母)、spaces(空格)、digits(数字)和others(其他字符)。然后通过一个while循环,用户输入一串字符,程序会逐个检查每个字符,根据其ASCII值进行分类计数。当输入的是大写或小写字母(ASCII值为65到90或97到122),就增加letters计...

5.1输入一行字符,分别统计出其中的英文字母、数字、空格和其它字符的个...
一、问题分析:输入一行字母,那么会以换行结束。所以可以存入数组,也可以逐个输入,遇到换行结束。要统计各个类的个数,就要逐个判断是哪个分类的。由于在ASCII码中,数字,大写字母,小写字母分别连续,所以可以根据边界值判断类型。二、算法设计:1、读入字符,直到遇到换行结束。2、对于每个字符,判断是...

输入一行字符,分别统计出其中英文字母,空格,数字字符,其它字符及单词的...
printf("请输入一串任意的字符:\\n");while((c=getchar())!='\\n'){ if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))letters++;else if(c>='0'&&c<='9')digits++;else if(c==' ')spaces++;else others++;} printf("字母有%d个,数字有%d个,空格有%d个,其他有%d个",...

...输入一个字符串,统计其中大写字母,小写字母,数字,和其他字符的个数...
= othCnt = 0;\/\/puts ("输入字符串:");\/\/gets (str);puts (str);while (*p) {if (*p>='A'&&*p<='Z')capCnt++;else if (*p>='a'&&*p<='z')lowCnt++;else if (*p>='0'&&*p<='9')numCnt++;elseothCnt++;p++; }putchar ('\\n');printf ("大写字母%d个\\n"...

C语言:从键盘输入一篇英文文本,统计每个英文字母(分大小写)及空格、数...
;source[i] = '\\0';}void output(int sign[], int n){int i;\/\/输出数字for(i='0'; i<'0'+10; i++){printf("%c : %d\\n", (char) i, sign[i]);}\/\/输出大写字母for(i='A'; i<'A'+26; i++){printf("%c : %d\\n", (char) i, sign[i]);}\/\/输出小写字母for...

...从键盘输入一行字符,分别统计其中数字字符,字母字符和其他字符的个...
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...

编程题: 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个...
1 while语句:include<stdio.h> int main(void){ \/\/输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。char ch;int char_num=0,kongge_num=0,int_num=0,other_num=0;while((ch=getchar())!='\\n')\/\/回车键结束输入,并且回车符不计入 { if(ch>='a'&&ch<='z'||...

...代码:分类统计。文本框中输入一串字符,统计各字母出现的次数……_百...
1 End Select Next For i = 97 To 122 If a(i) <> 0 Then List1.AddItem UCase(Chr(i)) & ":" & a(i)Next List1.AddItem "其它:" & a(123)End Sub 第二题可以用 select case x 也可以用 if ... then elseif ... then elseif ... then ...endif 很简单就不写了。

相似回答
大家正在搜