一篇文章共3行文字每行有80个字符分别统计出其中英文大写字母,小写字母,数字,空格及其他字符个数?

供稿:hz-xin.com     日期:2025-01-21
有一篇文章,共有3行文字,每行有个80字符.要求分别统计出其中英文大写字母,小写

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
#include
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]='A')||(str[i][j]='a'))letter++;


扩展资料:
在C语言中,C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
定义与声明:
结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。

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("
%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("
%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("

total: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]);
}

用正则匹配啊:

代码

执行结果



遍历,判断ascii码,计数,输出

C语言题:有一篇文章,共有3行文字每行有80个字符。编写程序分别统计出...
在这个程序中,我们使用了C语言的文件处理函数来读取一个文本文件,并统计其中的英文大写字母和小写字母的数量。程序首先尝试打开名为"test.txt"的文件,如果成功,程序会统计每一行中的字母数量。这里假设文章共有三行,每行有80个字符。程序定义了一个字符数组s,用于存储从文件中读取的一行文本。通过fge...

C语言题:有一篇文章,共有3行文字,每行有80个字符。编写程序分别统计出...
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...

C语言题目 有一篇文章,共有3行文字,每行有个80字符.要求分别统计出_百 ...
else if (str[i][j]=32);这一句出现致命错误,“=”是赋值运算符,“==”才是比较运算符,你用=进行比较当然所有的其他字符都进入了空格。实际上是这样的,你对每个不是大写小写数字的字符都进行了赋值操作,让他的ASCII码等于32,然后进行判断,32是否为不零,结果为真,所以d++ 最后产生了...

C语言题目:“有一篇文章,共有3行文字,每行有个80字符.要求分别统计”请 ...
str是个字符串数组,gets是获取字符串 改成gets(str[i])&改成&& 因为每行屏幕最多显示81个字符,而最后一个字符都是\\0意味着字符串的结束。所以要加这个判断来识别是不是读到字符串结尾了。

...语言题目:有一篇文章,共有3行文字,每行有个80字符.要求分别统计出其 ...
1、gets(str[i][j]); 这一句中j没赋值,而且把字符串送给一个字符型二维数组的元素是行不通 的,通不过编译;你可以改成gets(str[i]),但是只能输入一行,因为gets()虽然不会将空格识别 为'\\0',但它把回车视为'\\0';这一句最好改成for(;i<=2;gets(str[i]),i++);,这里分号别忘...

c语言 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文...
include<stdio.h> main(){char str[3][80]={ };\/\/你可以初始化 int i,j,num=0;for(i=0;i<3;i++)for(j=0;j<80;j++)if(str[i][j]>'A'&&str[i][j]<'Z')num++;\/\/ 统计大写字母的个数 }

有一篇文章,共三行文字,每行有80个字符.要求分别统计出单词个数,空格数...
printf("请输入第%d行:\\n",i+1);gets(str[i]);for(j=0;(c=str[i][j])!='\\0'&&j<80;j++)\/\/注意加[i]{ if(c==' '){ word=0;\/\/你的是','blank++;} else if(word==0){ word=1;num++;} }\/\/括号注意配对 printf("blank=%d\\nnum=%d\\n",blank,num);}\/\/括号注意...

...有何错误?有一篇文章,共有3行文字,每行有80个字符,要求分别统计出每...
int main(void){ int i,j,upp=0,low=0,dig=0,spa=0,oth=0;char text[3][80]={'\\0'};char c;printf("please input the lines:\\n");for(i=0;i<=2;i++)gets(text[i]);for(i=0;i<=2;i++){ for(j=0;j<80;j++){ if((c=text[i][j])=='\\0')break;if(c>='...

有一篇文章,共有3行文字,每行有个80字符.要求分别统计出其中英文大写...
)) k++;else q++; } printf("英文大写字母有:%d个\\n", d);printf("英文小写字母有:%d个\\n", x);printf("数字有:%d个\\n", s);printf("空格有:%d个\\n", k);printf("其他字符有:%d个\\n", q);puts (strupr(c);return 0;} ...

...编程:NO.1有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其...
w=0,x=0,y=0,z=0,q=0,i=0;float c;for(;i<=3;i++)for(;c=putchar()!='\\n';){if(c='\\t')w++;else if(c>='0'&&c<='9')x++;else if(c>='A'&&c<='Z')y++;else if(c>='a'&&c<='z')z++;else q++;}printf("%d\\n","%d\\n","%d\\n","%d\\n",...