C语言 循环,它确定在用户给出输入后还有多少天和多少周

nhaq1z21  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(94)

代码按预期工作,但我的问题是我不希望它打印语句"0 days amounts to: 0 weeks, 0 days."

#include <stdio.h>

int main() {
    int days;
    while (days >= 1) {
        printf("*** Days to Weeks Program ***\n"
               "Enter the number of days (or 0 to quit): ");
        scanf("%d", &days);
        int days_rem, weeks;
        int const days_per_week = 7;
        weeks = days / days_per_week;
        days_rem = days % days_per_week;
        printf("%d days amounts to: %d weeks, %d days.\n", days, weeks,
               days_rem);
    }
    printf("Thank you for playing!");
    return 0;
}

字符串
我尽量不使用if语句。我只使用代码中的信息。

hc8w905p

hc8w905p1#

在这个序列中,你声明了一个变量,但没有初始化它:

int days;
while (days >= 1) {      
    scanf("%d", &days);

字符串
当你在while循环中读取days的值时,days有一个不确定的值,使用这样的值会使你的程序变得不可预测。在检查值是什么之前,你应该 * 首先 * 给days赋值。
我希望它不要打印"0 days amounts to: 0 weeks, 0 days."语句.尽量不要使用if语句
然后,您需要使这部分成为循环条件。
为了使它简单,我建议将用户输入部分分解出来,并将其放在自己的函数中。
它可能看起来像这样:

#include <stdio.h>

int ask_for_days() {
    printf("*** Days to Weeks Program ***\n"
           "Enter the number of days (or 0 to quit): ");

    int days;

    // return 0 if input fails using the conditional operator ?:
    return scanf("%d", &days) == 1 ? days : 0;
}

int main() {
    for (int days; (days = ask_for_days()) > 0;) {
        int days_rem, weeks;
        int const days_per_week = 7;
        weeks = days / days_per_week;
        days_rem = days % days_per_week;
        printf("%d days amounts to: %d weeks, %d days.\n", days, weeks, days_rem);
    }
    printf("Thank you for playing!");
}

相关问题