关于C语言

时间:2008-05-14 10:37:13   来源:论坛整理  作者:  编辑:chinaitzhe
#include <stdio.h>

#define IN 1
#define OUT 0
main()
{
int c,nl,nw,nc,state;
state=OUT;
nl=nw=nc=0;
while((c=getchar())!='n'){
nc;
if(c=='\n')
nl;
if(c==' ' ¦ ¦ c=='\n' ¦ ¦ c=='\t') //假如c是空格则state=OUT
state=OUT;
else if(state==OUT){ //到了这里假如state=OUT则 state=IN下面的语句 可为什么没执行
state=IN;
nw;
}
}
printf("%d %d %d\n",nl,nw,nc);
system("pause");
}
当我输入a a a的时候
网友回复:当选择了if(c==' ' | | c=='\n' | | c=='\t') 以后if(state==OUT)就没有选择了...
你应该用switch
并且适当组织break
网友回复:你的
state=OUT
是在if语句里执行,也就是说,必须你的if语句判定为真,state才能为OUT.
假如是这样,那么你的else if又怎么会执行呢?????????

换句话说,当if语句判定成功就直接跳出去了,不会在进行else if 的判定

楼主明白??
网友回复:应该是这样吧!
if(c==' ' | | c=='\n' | | c=='\t') //假如c是空格则state=OUT
state=OUT;
else
{

}

if(state==OUT){ //到了这里假如state=OUT则 state=IN下面的语句 可为什么没执行
state=IN;
nw;


网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



if (c==' '  || c=='\n'  || c=='\t')  

{//假如c是空格则state=OUT 

    state=OUT; 

}

else if(state==OUT)

{//只有当前状态是out的时候重新读了一个非空格字符单词数才增加1, 

    //假如在单词内部,继续读到单词就不增加了,所以逻辑没有问题

    state=IN; 

      nw; 

} 


网友回复:state=OUT;
else if(state==OUT){ 假如state不为OUT的话,后面的都不会执行
网友回复:永远不会执行的,理由,同上
网友回复:自己单步调试下就明白了
网友回复:看不懂代码想干什么!
网友回复:
引用 8 楼 qmm161 的回复:
看不懂代码想干什么!

代码是在统计输入的行数,字符数,单词数
网友回复:可以把else if(state==OUT){ 中的else 直接去掉就可以了,
练习一下调试吧,什么都要自己去琢磨
网友回复:The c programming language 中的例子,对于配对的if和else只能执行其中一个,执行了if,后面else的语句就不会执行了!

网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





if(c==' '  ¦ ¦ c=='\n'  ¦ ¦ c=='\t')  //假如c是空格则state=OUT,然后开始新一轮的循环 

state=OUT; 

else if(state==OUT){    //执行else的前提是c不是空格、换行符,tab符,假如c是其中一个else后面的就不会执行 

state=IN; 

          nw; 




你的结束符是n,输入完了别忘了输个n表示结束!你可以结合这个题的思路看一下代码,这样理解才会轻易一些!
网友回复:可以去这个网站看看 www.wdfan.cn
网友回复:lz要干嘛?
关键字:语言,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面