读书人

一个菜鸟的有关问题

发布时间: 2012-06-09 17:16:42 作者: rapoo

一个初学者的问题
# include <stdio.h>

void help(void);

int main(void)
{
char ch1,ch;

do
{
printf("请输入您需要的服务:");
scanf("%c", &ch1);

if (ch1=='Q'||ch1=='q')
break;
if (ch1=='h'||ch1=='H')
help();

printf("是否继续?(Y/N)\n");
scanf("%c", &ch);
printf("\n");
}while(ch=='y'||ch=='Y');

return 0;
}

void help(void)
{
printf("1,我晕\n");
printf("2.我狂晕\n");
printf("3.我狂狂晕\n");
printf("4.我狂狂狂晕\n\n");
}
这个是菜单的不断选择是否循环,按理来说当我输入h时,会再提示我是否继续,然后再要我输入ch的值,但为什么在我这里不行?输入完ch1的值后就直接退出了?就好像我只输入了一个h,它把h赋值给ch和ch1这两个参数了。

[解决办法]

C/C++ code
# include <stdio.h>void help(void);int main(void){    char ch1,ch;    do    {        printf("请输入您需要的服务:");        scanf("%c", &ch1);        getchar();        if (ch1=='Q'||ch1=='q')            break;        if (ch1=='h'||ch1=='H')            help();        printf("是否继续?(Y/N)\n");        scanf("%c", &ch);        getchar();        printf("\n");    }while(ch=='y'||ch=='Y');    return 0;}void help(void){    printf("1,我晕\n");    printf("2.我狂晕\n");    printf("3.我狂狂晕\n");    printf("4.我狂狂狂晕\n\n");}
[解决办法]
因为你输入h之后按了一个回车,于是第二个scanf时ch获得的是这个回车,于是循环结束。
解决办法:
在scanf("%c", &ch)的%前加一个空格,即scanf(" %c", &ch)来跳过这个回车。
或者
在scanf("%c", &ch)之前加一句getchar();“吃掉”前面的回车。

读书人网 >C++

热点推荐