新人求教c语言问题,出现switch函数没有起作用,直接跳到下一步

部分代码如下,在Choose函数中:想使用一个循环,结果在第一个那个部分进行选择时出现错误,
选择Choicepass()函数后,Choicepass()函数仅仅执行到"scanf("%c",&M);",
再直接进入Choose函数中的" printf("是否重新进行?\nc->继续\ne->退出:");"这条语句。
想要知道为什么,求大神为新手求解,万分感谢!
结果如图:
图片说明
int Choicepass()

{
int n,T,L,S1,S2,S3;
char M;
printf("Please choose the model:\na->easy\nb->normal\nc->difficulty\n:");
scanf("%c",&M);

switch(M)                                                        //选择难度所用函数
{
case 'a':
    {
        srand(time(0));
        n = rand()%10+1;
        T = 3;
        S1 = Guess1(n,T);
    }break;
case 'b':
    {
        srand(time(0));
        n = rand()%50+1;
        printf("You should get the answer from 1~50.\nPlease choose the TimesLimit(5~10):");
        scanf("%d",&T);
        S2 = Guess2(n,T);
    }break;
case 'c':
    {
        srand(time(0));
        n = rand()%100+1;
        printf("You should get the answer from 1~100.\nPlease choose the TimesLimit(5~15):");
        scanf("%d",&T);
        S3 = Guess3(n,T);
    }break;
}
L = 1;
return L ;

}

    /*选择关卡模式或者选择难度模式*/

int Choose()
{
int L,T;
char k,h;

printf("选择关卡模式或者自由选择难度模式:\ng->关卡\nz->自由:");
scanf("%c",&h);

if(h == 'c')

    L = Customspass();

else if(h == 'z')

    L = Choicepass();

else printf("ERROR!\n");

printf("是否重新进行?\nc->继续\ne->退出:");
scanf("%c",&k);

if(k == 'c')     

    T = Choose();

else     
    printf("游戏结束!\n");

return T;

}

1个回答

没太看懂你的问题。如果我没有理解错的话,应该是缓冲区问题。
在choose()函数中的scanf(“%c”,&h)后面加一句getchar()试试

a18156289516
物致-皈依 switch case语句不能判断字符串,只能是整形一类的数据类型,除非用#define之类的把字符转换成数据类型
大约 4 年之前 回复
w569149893
酒话醉人丶 谢谢!谢谢!解决了!
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐