猜拳问题我程序正常运行了但是不知道为什么再输入猜拳手势的时候连续执行了两次提示语 printf("Please enter a gesture\n");希望有人能解答一下

问题遇到的现象和发生背景

程序正常运行了但是不知道为什么开始输入猜拳手势的时候连续执行了两次提示语 printf("Please enter a gesture\n");希望有人解答一下,谢谢
要保证你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。

#include<stdio.h>
#include<string.h>

int main()
{
    int k=0,y;
    char str[10],a[]={"chuizi"},b[]={"jiandao"},c[]={"bu"},d[]={"end"};
    printf("Times of draw k interval (k<=10)\n");
    scanf("%d",&k);
    
    for(y=0;k<=10&&k!=0;y++){
        printf("Please enter a gesture\n");
        gets(str);
        if(strcmp(str,a)==0){
            if(y%k==0){
                printf("%s\n",a);
            }else{
                printf("%s\n",c);
            }
        }else if(strcmp(str,b)==0){
            if(y%k==0){
                printf("%s\n",b);
            }else{
                printf("%s\n",a);
            }
        }else if(strcmp(str,c)==0){
            if(y%k==0){
                printf("%s\n",c);
            }else{
                printf("%s\n",b);
            }
        }else if(strcmp(str,d)==0){
            break;
        }
    }
    
}


下面是这道程序题的题目
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。
输入格式:
输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi代表“锤子”、JianDao代表“剪刀”、Bu代表“布”。End代表输入结束,这一行不要作为出招处理。
输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行

出现的问题##

img

第一次y=0时,没有输入,gets的输入问题可以参考这个:https://blog.csdn.net/m0_37829435/article/details/78824717

在scanf("%d",&k)之后加上getchar()接收掉换行符