C语言 我应该声明一个新变量,或者修改我的代码吗?

ecbunoof  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(88)

问题指出:
您决定在全国拔河锦标赛的决赛上下注。
在比赛之前,球员的姓名和体重按球队交替呈现(队1球员1、队2球员1、队1球员2等)。双方球员人数相同。您记录球员的体重,因为他们提出,并计算出总重量为每支球队通知您的赌注。你可以写一个C程序来帮助你。
你的程序应该首先读取一个整数,表示每个团队的成员数量。然后,程序应该读取球员的体重(整数代表公斤)交替队。
在计算每个队的总重量后,程序应该显示文本“X队具有优势”(根据哪个队具有更大的总重量,将X替换为1或2)。
然后,您将显示文本“团队1的总重量:”,然后是团队1的重量,然后是“团队2的总重量:”,然后是团队2的重量(请参见下面的示例)。
你可以保证这两支球队的总重量不会相同。
我在一个在线编译器上做了这个,得到了正确的答案

#include<stdio.h>
int main(){
    int nop, i, sum1, sum2;
    int team1_Weight, team2_Weight, player1, player2, answer;
    scanf("%d", &nop);
    for (i=0;i<nop;++i){
        scanf("%d", &player1);
        team1_Weight=team1_Weight+player1;
        scanf("%d", &player2);
        team2_Weight=team2_Weight+player2;
    }
    sum1=team1_Weight;
    sum2=team2_Weight;
    answer=(sum1 > sum2);
    if (answer){
        printf("Team 1 has an advantage\n");
        printf("Total weight for team 1: %d\n", sum1);
        printf("Total weight for team 2: %d", sum2);
    }else{
        printf("Team 2 has an advantage\n");
        printf("Total weight for team 1: %d\n", sum1);
        printf("Total weight for team 2: %d", sum2);
    }
    
}

字符串
当我提交这个作为答案时,我得到了这个:
编译错误:

7066839625989131.c: In function ‘main’:
7066839625989131.c:22:9: error: ‘team2_Weight’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         printf("Total weight for team 2: %d", sum2);
         ^
7066839625989131.c:21:9: error: ‘team1_Weight’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         printf("Total weight for team 1: %d\n", sum1);
         ^
cc1: some warnings being treated as errors

jucafojl

jucafojl1#

正如注解中所指出的,您在初始化team_weight1team_weight2之前已经使用了它们。这些变量的初始值是不确定的,这使得程序的输出无法确定。
可能是在线judge编译器给了这些你期望的值(可能是0),但这不能指望。解决方案就是显式地初始化它们。

相关问题