有一篇文章,共有3行文字,每行有个80字符.要求分别统计出其中英文大写字母,小写

#include<stdio.h>#include<string.h>intmain(){chara[3][81];inti,j,len;intnum[5]={0,0,0... #include <stdio.h>
#include <string.h>
int main()
{
char a[3][81];
int i,j,len;
int num[5]={0,0,0,0,0};
for(i=0;i<3;i++)
gets(a[i]);
for(i=0;i<3;i++)
{
len=strlen(a[i]);
for(j=0;j<len;j++)
{
if(a[i][j]>='a'&&a[i][j]<='z')
num[0]++;
else if(a[i][j]>='A'&&a[i][j]<='Z')
num[1]++;
else if(a[i][j]==' ')
num[2]++;
else if(a[i][j]>='1'&&a[i][j]<='9')
num[3]++;
else
num[4]++;
}
}
printf("英文小写字母、大写字母、空格、数字、其他字符的个数分别为%d,%d,%d,%d,%d\n",num[0],num[1],num[2],num[3],num[4]);
}
展开
 我来答
分享社会民生
高粉答主

2020-06-10 · 热爱社会生活,了解人生百态
分享社会民生
采纳数:1248 获赞数:283282

向TA提问 私信TA
展开全部

 1、gets(str[i][j]); 这一句中j没赋值,而且把字符串送给一个字符型二维数组的元素是行不通的,通不过编译;你可以改成gets(str[i]),但是只能输入一行,因为gets()虽然不会将空格识别为'\0',但它把回车视为'\0';

这一句最好改成for(;i<=2;gets(str[i]),i++);,这里分号别忘了,表示for的循环是空语句,实际起作用的是第三项里的表达式,结束后i=2,下一句for语句要把i再次赋0。

2、while(str[i][j]!='\0') 这一句中j同样没赋值,通不过编译;你可以将这一句去掉,把下面for(j=0;j<=1;j++)这一句改成for(j=0;j<=1&&str[i][j]!='\0';j++)。

程序变为:

#include<stdio。h>

#include<string。h>

int main()
{
char str[3][2];

int space=0,letter=0,digit=0,other=0;
int i=0,j;

for(i=0;i<=2;gets(str[i]),i++); //这一句变了
/*while(str[i][j]!='\0')*/ //这一句去掉了

for(i=0;i<=2;i++) //这一句i重新赋0
{
for(j=0;j<=1&&str[i][j]!='\0';j++) //这一句变了

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


扩展资料:

在C语言中,C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

定义与声明:

结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式