C语言题:有一篇文章,共有3行文字,每行有80个字符。编写程序分别统计出其中英文大写字母、英文小写字母

有一篇文章,共有3行文字,每行有80个字符。编写程序分别统计出其中英文大写字母、英文小写字母、数字、空格以及其他字符的个数。
提示:1.一篇文章是由若干行与列构成的,所以可以定义二位字符数组来存放文章内容。
2.输入文章内容时,可以讲二维数组当做一维数组来使用,每一个一堆数组对应文章一行,其中存放一个字符串,按行输入文章内容。如下程序片段:
chart t [3] [80],i;
for (i=0;i<3;i++)
gets (t [ i ] );
3.统计处理时,也按行进行统计。

void main()
{
char t[3][81];//每行最多80个字符,数组长度要81
int i,j;
int u[3],l[3],d[3],s[3],other[3];//按行统计,u-大写,l-小写,d-数字,s-空格,other-其它字符
for(i=0;i<3;i++)//输入每行字符串,并对u、l、d、s、other初始化
{
printf("\n%dst row:",i+1);
gets(t[i]);
u[i]=l[i]=d[i]=s[i]=other[i]=0;
}
for((i=0;i<3;i++)//统计过程
for(j=0;t[i][j];j++)//每行统计到ascii码0结束
{
if(t[i][j]>='a'&&t[i][j]<='z') l[i]++;
else if(t[i][j]>='A'&&t[i][j]<='Z') u[i]++;
else if(t[i][j]>='0'&&t[i][j]<='9') d[i]++;
else if(t[i][j]==' ') s[i]++;
else other[i]++;
}
for(i=0;i<3;i++)//按行输出统计结果
{
printf("\n%dst row:lowercase=%d,uppercase=%d,digit=%d,space=%d,other=%d",i+1,l[i],u[i],d[i],s[i],other[i]);
}
//按文章输出统计结果
printf("\n\ntotal:lowercase=%d,uppercase=%d,digit=%d,space=%d",other=%d",
l[0]+l[1]+l[2],u[0]+u[1]+u[2],d[0]+d[1]+d[2],s[0]+s[1]+s[2],other[0]+other[1]+other[2]);
}追问

这个的算法分析是什么?

追答

(一)算法:
(1)分三行输入文章
(2)逐行统计字符个数
(3)分行输出统计结果
(4)按文章输出统计结果
(二)按算法设计数据结构,就是程序中的几个数组啦。
(三)将算法转换为C程序。

追问

第一个printf哪里有一个错误

追答

请指出

追问

我也不知道,运行的时候他说有问题 我真的什么都不知道啊

追答

我这儿没问题

追问

运行结果的截图可以发给我吗?我要用那个 拜托拜托

追答

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-02
字符读进去之后。for循环,遍历每个字符,然后通过ctype.h 下面的islower()isupper()isspace() isdigit()来判断这个字符是小写字母,大写字母,空格,还是数字,就OK了