关于C语言
时间:2008-05-14 10:37:13
来源:论坛整理 作者: 编辑:chinaitzhe
#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的话,后面的都不会执行
网友回复:永远不会执行的,理由,同上
网友回复:自己单步调试下就明白了
网友回复:看不懂代码想干什么!
网友回复:
代码是在统计输入的行数,字符数,单词数
网友回复:可以把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要干嘛?
关键字:语言,
上一篇:哪里有c99标准文档中文版的
下一篇:下面没有链接了











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