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

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

#include
int main()
{int i,j,upp,low,dig,spa,oth;
char text[3][80];
upp=low=dig=spa=oth=0;
for (i=0;i<3;i++)
{ printf("please input line %d:
",i+1);
gets(text[i]);
for (j=0;j<80 && text[i][j]!='\0';j++)
{if (text[i][j]>='A'&& text[i][j]<='Z')
upp++;
else if (text[i][j]>='a' && text[i][j]<='z')
low++;
else if (text[i][j]>='0' && text[i][j]<='9')
dig++;
else if (text[i][j]==' ')
spa++;
else
oth++;
}
}
printf("
upper case: %d
",upp);
printf("lower case: %d
",low);
printf("digit : %d
",dig);
printf("space : %d
",spa);
printf("other : %d
",oth);
return 0;
}


我只能猜测,你的那个“<”写的有问题,你试试从下面的“<”复制粘贴过去。。。

 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为此结构体声明的变量。



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

有一篇文章,共有3行文字,每行有个80字符.要求分别统计出其中英文大写...
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;} ...

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

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

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

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语言编程:NO.1有一篇文章,共有3行文字,每行有80个字符。要求分别统计...
include <stdio.h> int main () {int 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("...

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++;\/\/ 统计大写字母的个数 }

...这段代码有何错误?有一篇文章,共有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>='...

C语言题:有一篇文章,共有3行文字每行有80个字符。编写程序分别统计出...
void main() { FILE *fp; char s[81]; int i,j,a,b;if ( fp=fopen("test.txt","r") ) { a=b=0;for ( i=0;i<3;i++ ) { fgets(s,80,fp); j=0;while ( s[j]!=0 )if ( s[j]>='A' && s[j]<='Z' ) a++;else if ( s[j]>='a' && s[j]<='z' ...