C语言题目:“有一篇文章,共有3行文字,每行有个80字符.要求分别统计”请问到底哪里出错了
else if (str[i][j]=32);
这一句出现致命错误,“=”是赋值运算符,“==”才是比较运算符,你用=进行比较当然所有的其他字符都进入了空格。
实际上是这样的,你对每个不是大写小写数字的字符都进行了赋值操作,让他的ASCII码等于32,然后进行判断,32是否为不零,结果为真,所以d++
最后产生了你所看到的结果。
你可以输出字符串试试,是不是这样的。
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++;
else if (str[i][j]='0')
digit++;
else if (str[i][j]==' ')
space++;
else
other++;
}
printf("space=%3d,letter=%3d,digit=%3d,other=%3d",space,letter,digit,other);
return 0;
}
改成gets(str[i])
&改成&&
因为每行屏幕最多显示81个字符,而最后一个字符都是\0意味着字符串的结束。所以要加这个判断来识别是不是读到字符串结尾了。
&符号是与运算,是二进制运算中的一种,你用这个符号用错了,应该用:
&&表示的是逻辑运算符且的意思,
符号要弄明白呀
条件判断要用&&而不是&
还有 gets(str[i])而不是gets(str)
一个字符串是以'\0'结尾的,碰到'\0'说明这个字符串结束了,没有必要再继续往后查找字符
加上你说的判断是为了防止每行你不输入满80个字符(好像是79个,因为要留一个给'\0' )
只需要用几个if进行判断就可以了
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++);,这里分号别忘...
三人行必有我师写作文章
1. 以《三人行,必有我师》写一篇作文,写成记叙文,要真实,最好多 三人行必有我师焉 孔子说过“三人行,必有我师焉”。在三人中,也有人可成为你的老师。因为每人掌握的知识技术各有不同。就算你才高八斗,学富五车。但一个大字不识一个的木匠也可以成为你的老师,他虽然不会之乎者也,但可以用灵巧的双手...
小学生语言描写作文
对表现人物的思想性格起重要作用.有个性特点的语言可以起到“闻其言,见其人”的作用.语言描写要注意以下两点:一是文章中人物的语言要精心筛选,把那些足以能表现人物的个性特点、最能表现中心思想的语言,写进文章中;二是好的语言描写,一定是符合当时的情景,符合人物的性格、身份、性别、年龄和文化修养等方面的特点....
一共有3行,每行都有12个圈,使灰色的个数是黑色的3倍,请问怎么涂色?
36÷(1+3)=36÷4 =9(个)9x3=27(个)答:灰色的涂27个圈,黑色的涂9个圈。【解析】本题考查四则运算的应用。先求出一共有多少个圈,即:3x12=36(个),由于要使灰色的个数是黑色的3倍,把黑色的当作1分,则灰色的为3份,则一共有1+3=4(份),那么黑色的个数为:36÷4=9...
以勇为题写作文
下面分享3篇《勇》作文,供大家参考。勇作文1 生命需要顽强的勇气,有了勇气生命才会更加美好,困难才会被打败。有了勇气才会先苦后甜,快乐无比。一天,我和几个小伙伴在楼下玩。正玩的高兴时,我突然发现了一团黑乎乎的东西,这是不是蚂蚁呀?我心中想。我走近一看,果然不出所料,那正是...
求一篇初3作文题目《谢谢你为我助跑》,要求语言优美、有题记,最好是...
秦军势力逼人,但是我没有畏惧,率领大军破釜沉舟,歼灭秦军主力。若没有勇气,我怎么会胜利?若不是勇敢地与他们交锋,我怎么会成为西楚霸王?”我听完,顿时信心倍增,馆他三七二十一,勇敢地向前冲去,终于越过了失败这道鸿沟。 有了你的教导和鼓励,让我一路春风得意,如顺水行舟。可是,我却又...
声音的高中作文800字(精选10篇)
优美的文章各有千秋,各有风采:或文采飞扬,或谈笑风生,或多愁善感但无论何种类型的文章能引起读者思想感情共鸣的都有一个共同点:那就是文章必须感情真挚自然,动人灵魂。而该考生的这篇考场之作正好把这一点恰倒好处的落在实处,这是一篇虚实并举的考场佳作。 声音的高中作文800字10 去年暑假时,我回到故乡,...
七年级单元作文
进一步锤炼自己的语言,提高自己的写作表达技巧。 3、学生修改法。个人自改后,分小组互改。小组改是进一步进行写作体会交流,提高他们鉴析文章的能力。 4、集体改。让学生对典型的文章共同探讨,共同提高。 四、说教学过程 (一).激趣: 用一则寻人启事激发学生兴趣,知道观察人物要抓住特征,并导入新课。导入语:大千...
回乡偶书用第一人称写作文300字
5. 将《回乡偶书》改写成一篇文章,题目自拟,不少于300字 杨柳依依,大雁南飞。贺知章已经得到皇帝的同意,告老还乡。他梦中不知多少次梦到故乡。他一想到这次回家,就别提多高兴了,简直像回到了童年。 贺知章回想到少年刻苦学习得志到做官的情景。一眨眼,在朝廷做官已经五十六年了。今年八十有六岁了。可他怎么也改变...