【问题标题】:Add and print multiple char in C [closed]在 C 中添加和打印多个字符 [关闭]
【发布时间】:2015-05-02 15:55:04
【问题描述】:

我正在创建一个骰子游戏,用户在其中掷 3 个骰子并获得一些随机输出(最多为整数 6)。我的下一步是将获得的这 3 个值相加并得到其总和。 我如何实现这一目标?任何建议都会有所帮助。

这是我的源代码:

//Roll-a-dice Game!
int main(){
    char input1;
    char input2;
    char input3;
    int i;
    int diceRoll;
    int sumDice = (int)(input1-'0') + (int)(input2-'0') + (int)(input3-'0');

    printf("User's First Input: (Press any key to continue) ");
    scanf("\n %c", &input1);

    for(i=0;i<1;i++){
        diceRoll = (rand()%6) + 1;
        printf("%d\n\n", diceRoll);
    }

    printf("User's Second Input: (Press any key to continue) ");
    scanf("\n %c", &input2);

    for(i=0;i<1;i++){
        diceRoll = (rand()%6) + 1;
        printf("%d\n\n", diceRoll);
    }

    printf("User's Third Input: (Press any key to continue) ");
    scanf("\n %c", &input3);

    for(i=0;i<1;i++){
        diceRoll = (rand()%6) + 1;
        printf("%d\n\n", diceRoll);
    }


    printf("Sum of observations: %d", sumDice);

    return 0;
}

sumDice 函数没有输出正确答案,我认为问题出在这个特定函数的某个地方。

【问题讨论】:

  • 你需要计算sumDice 你掷骰子之后,而不是之前。
  • 您在对变量进行任何输入之前计算sumDice。在得到它们之前,你希望如何对它们求和?这是显而易见的常识:在你把钱放在钱包里之前,你不能数钱包里的钱。当您编写代码甚至懒得阅读您所写的内容(或从其他人那里复制/粘贴代码而不了解它的作用)时,就会发生这种情况。
  • 你为什么要对字符求和?
  • @KenWhite 首先,我为我的不幸错误道歉,可能的原因是我缺乏注意力或常识。我很遗憾在发布之前没有回顾我的代码。这只是我在调试代码时遇到的一个小剪切/粘贴错误的问题。
  • 不要编辑问题来合并答案;这样做会使所有答案都无效。

标签: c char int add scanf


【解决方案1】:

int sumDice = (int)(input1-'0') + (int)(input2-'0') + (int)(input3-'0'); 背后的逻辑是有道理的,但你必须在为input1input2input3 赋值后使用它。

你得到了错误的答案,因为当你一开始初始化sumDice时,输入变量没有被初始化,所以它们里面存储了随机值。

这里是你必须放的地方:

int sumDice = (int)(input1-'0') + (int)(input2-'0') + (int)(input3-'0');
printf("Sum of observations: %d", sumDice);

【讨论】:

  • 谢谢,我已经对我的代码进行了更改。顺便说一句,我是按照您第一次描述的方式完成的,之后我对代码进行了一些更改。抱歉,我在发布之前没有回顾我的代码。我的错。
  • @Adivir 不客气 :)
  • @Adivir 如果您的问题已经解决,请随时接受我的帖子作为原始答案。
  • 在@Jahid 指出错误之前,我仍然没有得到正确的答案。该代码现在工作正常。顺便谢谢你的帮助,我真的很感激。
【解决方案2】:

从这个说法来看:

用户掷 3 个骰子并获得一些随机输出(最多 整数 6)。我的下一步是将获得的这 3 个值相加并得到它的 总和

我假设你想要这个:

首先将sumDice初始化为0

int sumDice=0;

然后,在每个 for 循环中,在 diceRoll=rand()... 行之后添加:

sumDice+=diceRoll;

并删除最后的sumDice= (int)(input-'0')... 行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多