关于c语言字数统计问题!!!

whieet 2012-09-02 07:02:28
#include<stdio.h>
#include<ctype.h>
#define STOP '|'
int main(void)
{
char c;
char prev;
long n_chars=0L;
int n_lines=0;
int n_words=0;
int p_lines=0;
bool inword=false;
printf("Enter text to analyzed(| to quit):\n");
prev='\n';
while((c=getchar())!=STOP)
{
n_chars++;
if(c=='\n')
n_lines++;
if(!isspace(c)&&!inword)
{
inword=true;
n_words++;

}
if(isspace(c)&&inword)
inword=false;
prev=c;




}
if(prev!='\n')
p_lines=1;
printf("characters=%ld words=%d liness=%d,",n_chars,n_words,n_lines);
printf("partial lines=%d\n",p_lines);
return 0;


}

1.if(!isspace(c)&&!inword)
{
inword=true;
n_words++;

}
if(isspace(c)&&inword)
inword=false;
这一段代码是什么意思,尤其是isPrime在这里设么具体作用,解释具体点谢谢。两个if语句的条件分别是什么意思?
2.换句话说,如果不看这个程序,请解释一下怎么统计字数!!!!!!!!!!!!!!!!!!!!!!!!!
给的分多希望大家多多帮助。
...全文
206 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
supersonic0410 2012-09-02
  • 打赏
  • 举报
回复
1.if(!isspace(c)&&!inword)
{
inword=true;
n_words++;

}
if(isspace(c)&&inword)
inword=false;
这一段代码是什么意思

第一个if 条件判断 如果读入的字符c不是空白字符 并且 当前字符不处于单词中间(!inword), 那么说明 这个字符c是一个单词的开始。
然后执行
inword=true; // 设置标志,表示找到一个新词的开始
n_words++; // 单词数目++

if(isspace(c)&&inword)
inword=false;

第二个if 条件判断 读入的字符c如果为空白字符 并且 之前找到一个新词的开始。
这说明这个空白字符c是一个单词的结尾后的第一个空白字符。
于是, 设置inword=false; // 清楚 新单词开始标志

2. 如果你看懂上面两个判断,应该就清楚怎么统计的了。
简单说一下:
a: 找一个单词开头。
b: 判断读入的字符是否是连续的。
c: 如果遇到空白字符,连续性就被中断,这就说明一个词完整了。
d: goto a:

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧