大一学生求教。关于do..while..的问题。
/*
2013年11月27日17:48:34 统计多少个这多少个那
*/
# include <stdio.h>
int main()
{
int a = 0, b = 0, c = 0, d = 0;//a表示数字的个数,b表示字母的个数,c表示空格的个数,d表示其他的个数
char ch,ch1;
do
{
printf("请输入一行字符:\n");
while ((ch = getchar())!='\n')
{
if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')
b++;
else if
(ch >= '0' && ch <= '9')
a++;
else if
(ch == ' ')//一定注意是 == 而不是 =
c++;
else
d++;
}
printf("该字符串共有\n%d个数字\n%d个字母\n%d个空格\n%d个其他字符\n是否需要继续输入?(Y/N):\n",a,b,c,d);
scanf(" %c",&ch1);
}
while (ch1 == 'Y'||ch1 == 'y');
return 0;
}
编译组建时都没有报错 问题是我输入Y或者y之后 不能执行输入了 见图
谢谢了!!
[解决办法]
#include <stdio.h>
int main()
{
int a = 0, b = 0, c = 0, d = 0;//a表示数字的个数,b表示字母的个数,c表示空格的个数,d表示其他的个数
char ch,ch1;
do
{
printf("请输入一行字符:\n");
while ((ch = getchar())!='\n')
{
if (ch >= 'a' && ch <= 'z'
[解决办法]
ch >= 'A' && ch <= 'Z')
b++;
else if(ch >= '0' && ch <= '9')
a++;
else if(ch == ' ')//一定注意是 == 而不是 =
c++;
else
d++;
}
printf("该字符串共有\n%d个数字\n%d个字母\n%d个空格\n%d个其他字符\n是否需要继续输入?(Y/N):\n",a,b,c,d);
scanf(" %c",&ch1);
fflush(stdin); //清空输入流
}while (ch1 == 'Y'
[解决办法]
ch1 == 'y');
return 0;
}
增加fflush函数.
[解决办法]
因为第二次循环的时候getchar()的缓冲区里还有一个“\n”
一上来ch就直接等于“\n”了
所以导致直接就结束了
需要先用fflush(stdin);
清空缓冲区
就正常了