檀梵同人文:一道c语言程序题

来源:百度文库 编辑:高校问答 时间:2024/04/30 02:24:13
题目如下:有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,数字,空格以及其他字符的个数。
程序如下:
#include<stdio.h>
main()
{ int i,j,a=0,b=0,c=0,d=0,e=0;
char str[3][80];
for(i=0;i<3;i++)
gets(str[i]);
for(i=0;i<3;i++)
{for(j=0;j<80;j++)
{if(str[i][j]>='A'&&str[i][j]<='Z')a++;
else if(str[i][j]>='a'&&str[i][j]<='z')b++;
else if(str[i][j]>='0'&&str[i][j]<='9')c++;
else if(str[i][j]==' ')d++;
else e++;
}
}
printf("%d,%d,%d,%d,%d",a,b,c,d,e);
getchar();
}
程序编译通过,但无法得到正确的结果。请高手看看那儿出问题了,谢谢。

成功测试:

#include<stdio.h>
main()
{ int i,j,a=0,b=0,c=0,d=0,e=0;
char str[3][80];
for(i=0;i<3;i++) /*这里要先对它进行初始化*/
for(j=0;j<80;j++)
str[i][j]='';
for(i=0;i<3;i++)
gets(str[i]);
for(i=0;i<3;i++)
{for(j=0;j<80;j++)
{
if(str[i][j]=='')continue;/*当顽这里加的东西是如果字符串结束就结束本行查找*/
if(str[i][j]>='A'&&str[i][j]<='Z')a++;
else if(str[i][j]>='a'&&str[i][j]<='z')b++;
else if(str[i][j]>='0'&&str[i][j]<='9')c++;
else if(str[i][j]==' ')d++;
else e++;
}
}
printf("%d,%d,%d,%d,%d",a,b,c,d,e);
getchar();

for(j=0;j<80;j++)

我在网吧,没有调试的,不过我想是这里。因为当年一输入的不是80个它也要执行到80那,而你输入字符以后的地址中存放的东东是不可预测的

我在网吧,没有调试的,不过我想是这里。因为当年一输入的不是80个它也要执行到80那,而你输入字符以后的地址中存放的东东是不可预测的

我想他说的是对的,快点给人加分吧!!

好像是在前面加一个什么声明就行了,忘记了,都过了两年了!!

#include<stdio.h>
main()
{
int i,j,a=0,b=0,c=0,d=0,e=0;
char str[3][81];

for(i=0;i<3;i++) {
gets(str[i]);
for(j=0;j<80;j++)
{
if(str[i][j]>='A'&&str[i][j]<='Z')a++;
else if(str[i][j]>='a'&&str[i][j]<='z')b++;
else if(str[i][j]>='0'&&str[i][j]<='9')c++;
else if(str[i][j]==' ')d++;
else e++;
}
}
printf("%d,%d,%d,%d,%d\n",a,b,c,d,e);
}

谁可以把解题思路发个上来让我研究研究啊

思路就是看每个字符的ASCII码的范围