C语言 为什么输入字符'T'不返回数组的总和?

m1m5dgzv  于 2023-01-25  发布在  其他
关注(0)|答案(2)|浏览(131)

我是一个初学者,试图用一个数组来计算一个人在CS50课程上花费的总小时数,但是当它提示输入字符T时,程序结束了,它不计算总数。

#include <cs50.h>
#include <stdio.h>

int main (void)
{
    int weeks = get_int("Weeks taking CS50: ");

    int hours [weeks];
    for (int i=0; i < weeks; i++)
    {
        hours[i] = get_int("WK %i Number of hours: ",i);
    }
    char output;
    do
    {
        output = get_char("Enter T for total hours, A for average hours per week: ");
    } while (output != 'T' && output != 'A');

    int total =0;
    for (int i=0; i < weeks; i++)
    {
        total += hours [i];

        if (output == 'T')

        return total;
    }
}

我尝试将if语句放在第一个,但结果总计不正确-结果为21782。我假设问题出在第二个for循环中-我最终也会让它计算平均值,但首先我希望总计能够正常工作

nue99wik

nue99wik1#

在这个for循环中

for (int i=0; i < weeks; i++)
{
    total += hours [i];

    if (output == 'T')

    return total;
}

在循环的第一次迭代中,由于该if语句,程序立即退出

if (output == 'T')

    return total;

如果要输出total的值,则编写如下示例

if ( output == 'T' )
{
    int total = 0;

    for ( int i = 0; i < weeks; i++ )
    {
        total += hours[i];
    }

    printf( "total = %d\n", total );
}

请注意,您应该在使用变量的最小范围内声明变量。
或者,如果要为选择内容'A'追加代码,则代码如下所示

int total = 0;

for ( int i = 0; i < weeks; i++ )
{
    total += hours[i];
}

if ( output == 'T' )
{
    printf( "total = %d\n", total );
}
else
{
    printf( "average = %d\n", total / weeks );
}
qxgroojn

qxgroojn2#

你从来不打印总数,你只打印return total,而且你在循环的第一次迭代中也这样做,这意味着totalhours[0]是一样的。
您需要printf结果,并将其移动到循环的 * 后面 *:

// ...

    int total = 0;
    for(int i = 0; i < weeks; i++) {
        total += hours[i];
    }

    if(output == 'T')
        printf("Total: %d\n", total);
    else
        printf("Average: %d\n", total / weeks);

相关问题