C 程序 Totals 游戏可以由任意数量的人玩

标签 c

写一个程序: 总计游戏可以由任意数量的人玩。它从总数 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 数据,但是 &totalint* 类型。

另外,你必须写 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/

相关文章:

c++ - 将源代码和 header 包含到顶层 C 包装器中

c - 在 C 中读取和写入文件时遇到问题

c++ - if(x==y==z) 有效,if(x!=y!=z) 无效

C 随机树指针警告(有时会崩溃)

c - C语言递归中static关键字的使用

C和内存中的资源保护

c - ARM Cortex M3 上的 GCC : Calling functions from specific addresses

c - 设计通用哈希

c - 从命令行参数获取 unicode 符号

将字符串组合成 C 中的列表