C语言问题~请大家帮帮我谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:19:02
要求:统计输入文本的行数、单词数和字符数。
(1).文本的行数以回车键('\n')为统计标志;
(2).单词数以两个单词之间的分隔符(如空格、Tab键'\t'或回车键'\n')
为统计标志;
(3).字符数要统计所有的字符个数,包括空格、Tab键'\t'或回车键'\n'。

核心语句为:
while ((ch=getchar())!=EOF)

#include "stdio.h"
main()
{char ch;
long a=0,b=1,c=0,d=0,f=0;
printf("请输入文章:");
while ((ch=getchar())!=EOF)
{if(ch=='\n')
{a++;}
else if((ch=='\t'||ch=='\n'||ch==' ')&&(!(ch>='nul'&&ch<='■')))
{b++;}

else if(!((ch>='a'&&ch<='z')||(ch>'A'&&ch<='Z')))
{c++;}}
printf("此文章有%d行\n",a);
printf("此文章有%d个单词\n",b);
printf("字符有%d个\n",c);}
这段程序运行后只要在文章中连续输入@#$等字符程序就会把他们认为是单词,另外在字符中无法计数空格回车TAB的数量,请问我应该如何修改?谢谢!

不要到处问撒,仔细比较一下。我的tc可以准确判断,
#include "stdio.h"
main()
{char ch;
long a=1,b=1,c=0,d=0,f=0;
printf("请输入文章:");
while ((ch=getchar())!=EOF)
{
c++;
if(ch=='\n')
{a++;b++;}
else if((ch=='\t'||ch=='\n'||ch==' ')&&
!((ch>='0'&&ch<='9')||((ch>='a'&&ch<='z')||(ch>'A'&&ch<='Z'))))
{b++;}
}
printf("此文章有%d行\n",a) ;
printf("此文章有%d个单词\n",b);
printf("字符有%d个\n",c);

}