-4

このコード行に問題があります: (デンマーク語で申し訳ありません)

 case 1 :
     system("cls");
       printf("K maa kun have en veardi mellem 1 og 20\nIndtast k:");
        scanf("%d", &k1);
  while(!(k1>=1 && k1 <=20))//Starten på fejlsikret tilstand
    {
     printf("K er for hoej eller har en forkert veardi.\nProev igen:  ");
     fflush(stdin);
     scanf("%d", &k1);
    }//slutning på fejlsikret tilstand

 system("cls");
 printf("X maa kun have en veardi mellem 1 og 20\nIndtast din modstanders tal: ");
 scanf("%d", &x1);
while(!(x1<21))//Starten på fejlsikret tilstand
 {
 printf("X er for høj.");
 scanf("%d", &x1);
 }//slutning på fejlsikret tilstand

            newmove=(21-x1)%(k1+1)+x1;
            printf("Du skal sige = %d", newmove);
            printf("\n\n\nTryk 1 og afslut med Enter for at komme tilbage til start");
            scanf("%d", &m);
            continue;

しかし、モジュラス部分の計算が間違っているようです。eks: x1 = 12 および k1 = 12 という数字を入れると、20 になります。しかし、17 になるはずです。

4

3 に答える 3

1

newmoveは21

newmove=(21-x1) % (k1 + 1) + x1;
        (21-12) % (12 + 1) + 12
        (  9    %    13  ) + 12
                9          + 12
         21
于 2012-11-28T16:05:58.063 に答える
0

結果は21になると思います。x1=12とk1=12を次の式に代入します。

(21-x1)%(k1+1)+x1

与える:

(21-12)%(12+1)+12 = (9)%(13)+12 = 9 + 12 = 21
于 2012-11-28T16:05:37.287 に答える
0

newmove =(21-x1)%(k1 + 1)+ x1;

したがって、x1=12およびk1=12の場合

newmove=(21-12)%(12+1)+12;
newmove=9%13+12;
newmove=9+12
newmove=21

なぜ17にする必要がありますか?

于 2012-11-28T16:05:16.053 に答える