使用C程序进行关于除法和模数的入门编程的麻烦

时间:2018-09-02 23:42:29

标签: c increment division modulus

我为头衔太低表示歉意,但我想更具体一些,但是我正在参加入门编程课程,并且我没有太多的编程经验。我得到的问题是,我需要找到爬山的全部绳索。它必须准确地指出需要多少根100英尺的绳索,以及多少根10英尺的绳索。我面临的问题是,例如当山高611英尺时,我不确定如何使程序显示需要6根100英尺的绳索和2根10英尺的绳索。我的代码允许使用600或610或10英尺之类的简单数字,但我不知道如何补偿介于几十个数字之间的数字。我的代码位于下方-再次致歉,我无法对此进行更具体的说明。

pushWarning

3 个答案:

答案 0 :(得分:2)

要确定10英尺长的绳索的数量,只需在剩余高度上加9,然后再除以10即可得出最后的步幅:

ten_feet_rope = (total_height % 100 + 9) / 10;

您的问题陈述还不够精确:

  • 如果高度为599英尺怎么办?答案应该是6 100英尺的绳索还是5 100英尺的绳索和10 10英尺的绳索?

如果目标是最大程度地减少绳索的总重量,则两个答案都是相同的,但第一个答案似乎更易于使用。

这是修改后的版本:

#include <stdio.h>

int main() {
    // declaration of variables
    int total_height;
    int hundred_feet_rope;
    int ten_feet_rope;

    //prompt user for input information
    printf("How tall is the mountain?\n");
    if (scanf("%d", &total_height) != 1)
        return 1;

    //calculations for how many skeins of 100 feet rope are needed, and how many 10 feet rope is needed
    hundred_feet_rope = (total_height + 9) / 100;
    if (100 * hundred_feet_rope >= total_height)
        ten_feet_rope = 0;
    else
        ten_feet_rope = (total_height % 100 + 9) / 10;

    //output results
    printf("You will need %d skeins of 100 feet rope and %d skeins of 10 feet rope!\n", hundred_feet_rope, ten_feet_rope);

    return 0;
}

答案 1 :(得分:1)

要消耗额外的10英尺长的绳索,您需要 的10的倍数,则必须按现有编号以考虑最后划分之前绳索的该额外长度。

ten_feet_rope = (total_height % 100 + 9) / 10;
// here ============================^^^

这在计算机科学中很常见。例如:使用指定的块大小对称加密任意数量的数据。

至少我认为这就是您要问的。我将解决这种潜在的泄漏问题变成了100英尺的倍数(可能会发生。假设您的高度为95英尺;在这种情况下,您需要一个100英尺长,而没有10英尺长)。

答案 2 :(得分:1)

您可以使用模数运算符查看剩余数除以10是否大于0,如果是,则将其增加一根10英尺的绳索:

if (total_height % 10 > 0)
    ten_feet_rope++;