写一个程序: 总计游戏可以由任意数量的人玩。它从总数 100 开始,每个玩家轮流对该总数进行 -20 到 20 之间的整数调整。获胜者是调整后总数等于 5 的玩家。 输出应该是:
Output WE START WTITH 100. WHAT IS YOUR ADJUSMENT? -20 THE TOTAL IS: 80 YOUR ADJUSMENT? -35 NOT AN INTEGER BEWTWEEN -20 AND 20 YOUR ADJUSMENT? 10 THE TOTAL IS: 90 YOUR ADJUSMENT? 25 NOT AN INTEGER BEWTWEEN -20 AND 20 YOUR ADJUSMENT? -20 THE TOTAL IS: 70 YOUR ADJUSMENT? 7 THE TOTAL IS: 77 YOUR ADJUSMENT? -15 THE TOTAL IS: 62 YOUR ADJUSMENT? -20 THE TOTAL IS: 42 YOUR ADJUSMENT? -19 THE TOTAL IS: 23 YOUR ADJUSMENT? -18 THE TOTAL IS: 5 THE GAME IS WON IN 10 STEPS
So here is my code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int total=100, adjustment, counter=0;
printf("WE START WITH 100. WHAT IS YOUR ADJUSMENT? ");
scanf("%i", &adjustment);
while (total != 5)
{
if (adjustment>=-20&&adjustment<=20)
{
total = total+adjustment;
printf("The total is %i", &total);
counter++;}
else
{
printf("NOT AN INTEGER BEWTWEEN -20 AND 20");
counter++;
}
printf("\nYOUR ADJUSMENT? ");
scanf("%i", &adjustment);
}
printf("\nTHE GAME IS WON IN %d STEPS", &counter);
}
我不知道为什么每次我运行程序时,它都会给我一个非常大的总数。请帮我修复它!!!
最佳答案
你必须写 printf("The total is %i", total);
而不是 printf("The total is %i", &total);
到打印 total
中的值。
printf("The total is %i", &total);
是未定义的行为,因为 printf()
中的 %i
调用 int
数据,但是 &total
是 int*
类型。
另外,你必须写 printf("\nTHE GAME IS WON IN %d STEPS", counter);
而不是 printf("\nTHE GAME IS WON IN %d STEPS ", &counter);
同理。
关于C 程序 Totals 游戏可以由任意数量的人玩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33685525/