【发布时间】:2015-09-14 20:56:37
【问题描述】:
好的,我修改了我的代码,但当用户输入 0 时无法让它中断。我尝试了 0、“0”和“0”,但都没有中断循环。
#include <stdio.h>
#include<conio.h>
int main(){
int word;
int countword = 0;
int countpunct = 0;
do{
printf("\nEnter the String: ");
while ((word = getchar()) != EOF && word != '\n'){
if (word == ' ' || word == '.' || word == '?' || word == '!' || word == '(' || word == ')' || word == '*' || word == '&'){
countword++;
}
if (word == '.' || word == '?' || word == '!' || word == '(' || word == ')' || word == '*' || word == '&'){
countpunct++;
}
}
printf("\nThe number of words is %d.", countword);
printf("\nThe number of punctuation marks is %d.", countpunct);
} while (word!= 0);
}
【问题讨论】:
-
scanf("%c", word);将不起作用。替换为scanf("%c", &word);为什么你一次使用getchar而另一次使用scanf? -
奇怪的格式...继续在 if 行及其下方获取一个 K&R 样式的大括号,但 return 0 没有得到任何大括号。
-
没有必要
continue从无限循环的底部继续到下一次迭代,尽管它是无害的。这就是无论如何都会发生的事情。 -
你应该看看
do ... while循环。 (注意:word实际上是char并且应该这样声明(并且名称应该反映其含义;一个单词应该是一个字符串)。 -
do while 循环会替换整个 for(;;) 循环还是继续 for(;;) 循环?