我在C中编写了一个程序来计算段落中的单词数。在终端屏幕上,它只需要一个句子作为输入然后冻结。有什么想法吗?我尝试过其他方法并且有效。只是想知道为什么这个没有。 这是我的代码:
#include <stdio.h>
#include <conio.h>
int main(void)
{ int i, m=0, t=1;
char x, a[100];
clrscr();
printf("Type a paragraph to count the words in it.\n");
while(t==1)
{ i=0;
while(x!='\n')
{ x=getchar();
a[i]=x;
i++;
if((x==' ')||(x=='.')||(x=='?')||(x=='!'))
m++;
}
if(a[0]=='\n')
t=0;
}
printf("\nNumber of words = %i", m);
getch();
return 0;
}
编辑: 我试图在这里使用的逻辑是: 内部循环最多包含100个字符。遇到\ n字符后,退出循环。外部循环用于将100个字符的限制扩展为无限个字符(直到退出外部循环)。如果在前一个循环以\ n结束后立即在第一个循环中遇到\ n字符,则退出外循环。这意味着要结束段落,您需要输入\ n \ n。
答案 0 :(得分:2)
当它退出内部while
循环时,如果a[0]
不是\n
,那么t
将保持为1,但由于x
没有&drawOval
#39; t因为退出内循环而改变了,它不会重新输入它,所以你会一直停留在外循环中。