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

有一篇文章,共有3行文字,每行有80个字符。编写程序分别统计出其中英文大写字母、英文小写字母、数字、空格以及其他字符的个数。提示:1.一篇文章是由若干行与列构成的,所以可... 有一篇文章,共有3行文字,每行有80个字符。编写程序分别统计出其中英文大写字母、英文小写字母、数字、空格以及其他字符的个数。
提示:1.一篇文章是由若干行与列构成的,所以可以定义二位字符数组来存放文章内容。
2.输入文章内容时,可以讲二维数组当做一维数组来使用,每一个一堆数组对应文章一行,其中存放一个字符串,按行输入文章内容。如下程序片段:
chart t [3] [80],i;
for (i=0;i<3;i++)
gets (t [ i ] );
3.统计处理时,也按行进行统计。
展开
 我来答
hzhspace
2014-06-02 · TA获得超过233个赞
知道小有建树答主
回答量:105
采纳率:0%
帮助的人:96.8万
展开全部
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程序。
so__so__so__
2014-06-02 · 超过32用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:79万
展开全部
字符读进去之后。for循环,遍历每个字符,然后通过ctype.h 下面的islower()isupper()isspace() isdigit()来判断这个字符是小写字母,大写字母,空格,还是数字,就OK了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式