首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

大一学生求教。关于do.while.的有关问题

2013-11-29 
大一学生求教。关于do..while..的问题。/*2013年11月27日17:48:34 统计多少个这多少个那*/# include stdio.

大一学生求教。关于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之后 不能执行输入了 见图大一学生求教。关于do.while.的有关问题
大一学生求教。关于do.while.的有关问题大一学生求教。关于do.while.的有关问题
谢谢了!!
[解决办法]

#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);
清空缓冲区
就正常了

热点排行