代码不工作(C)

代码不工作(C),c,C,我想用struct和array计算工资,但它不起作用。当您看到代码时,您将更好地理解此练习。出于某种原因,如果在工资和工作日中输入一个数字(100和2) 下注[i]。总工资=下注[i]。工资*下注[i]。工作天数不会给我200,但会给我其他东西。一般来说,该程序将无法工作,我正在努力找到原因 #include <stdio.h> struct User { char First_Name[25]; char Last_Name[25]; int Wage,

我想用struct和array计算工资,但它不起作用。当您看到代码时,您将更好地理解此练习。出于某种原因,如果在
工资
工作日
中输入一个数字(100和2)
下注[i]。总工资=下注[i]。工资*下注[i]。工作天数不会给我200,但会给我其他东西。一般来说,该程序将无法工作,我正在努力找到原因

#include <stdio.h>

struct User
{
    char First_Name[25];
    char Last_Name[25];
    int Wage, Days_Worked;
    int Tax;
    int Wage_Booking;
    int Net_Wage;
    int Gross_Wage;
};

int main()
{
    int i;
    int Wage_Summary = 0;
    struct User Wagered[1];

    for(i = 0; i < 1; i++)
    {
        /*printf("First Name: ");
        scanf("%s", &Wagered[i].First_Name);
        printf("\n");

        printf("Last Name: ");
        scanf("%s", &Wagered[i].Last_Name);
        printf("\n");*/

        printf("Wage: ");
        scanf("%d", &Wagered[i].Wage);
        printf("\n");

        printf("Days He Worked: ");
        scanf("%d", &Wagered[i].Days_Worked);
        printf("\n");

        Wagered[i].Gross_Wage = Wagered[i].Wage * Wagered[i].Days_Worked;
        Wagered[i].Wage_Booking = Wagered[i].Gross_Wage * 0.2;
        Wagered[i].Tax = (Wagered[i].Gross_Wage - Wagered[i].Wage_Booking) * 0.05;
        Wagered[i].Net_Wage = Wagered[i].Gross_Wage - Wagered[i].Wage_Booking - Wagered[i].Tax;
        Wage_Summary += Wagered[i].Net_Wage;
    }

    printf("The Summary of the Gross Wages is: %d\n", Wagered[i].Gross_Wage);

    return 0;
} 
#包括
结构用户
{
char First_Name[25];
char Last_Name[25];
int工资,工作天数;
国际税收;
国际工资登记;
国际净工资;
国际总工资;
};
int main()
{
int i;
int工资汇总=0;
结构用户下注[1];
对于(i=0;i<1;i++)
{
/*printf(“名字:”);
scanf(“%s”,下注(&i.),名字);
printf(“\n”);
printf(“姓氏:”);
scanf(“%s”,下注(&i.),姓氏);
printf(“\n”)*/
printf(“工资:”);
scanf(“%d”,下注[i]。工资);
printf(“\n”);
printf(“他工作的日子:”);
scanf(“%d”,下注(&i.),工作天数);
printf(“\n”);
下注[i]。总工资=下注[i]。工资*下注[i]。工作天数;
下注[i]。工资=下注[i]。总工资*0.2;
下注[i]。税收=(下注[i]。总工资-下注[i]。工资记账)*0.05;
下注[i]。净工资=下注[i]。总工资-下注[i]。工资-下注[i]。税收;
工资汇总+=下注[i]。净工资;
}
printf(“工资总额的汇总为:%d\n”,下注[i]。工资总额);
返回0;
} 
此声明:

printf("The Summary of the Gross Wages is: %d\n", Wagered[i].Gross_Wage);
在您的
for
循环之外。因此,当
i
具有值
1
时,它将被执行,从而访问
下注[1]。不存在的
下注[1]
总工资超出数组的范围。将其移动到
循环的
内部,如下所示:

for(i = 0; i < 1; i++)
{
    .
    .
    .

    Wagered[i].Gross_Wage = Wagered[i].Wage * Wagered[i].Days_Worked;
    Wagered[i].Wage_Booking = Wagered[i].Gross_Wage * 0.2;
    Wagered[i].Tax = (Wagered[i].Gross_Wage - Wagered[i].Wage_Booking) * 0.05;
    Wagered[i].Net_Wage = Wagered[i].Gross_Wage - Wagered[i].Wage_Booking - Wagered[i].Tax;
    Wage_Summary += Wagered[i].Net_Wage;

    printf("The Summary of the Gross Wages is: %d\n", Wagered[i].Gross_Wage);
}
(i=0;i<1;i++)的

{
.
.
.
下注[i]。总工资=下注[i]。工资*下注[i]。工作天数;
下注[i]。工资=下注[i]。总工资*0.2;
下注[i]。税收=(下注[i]。总工资-下注[i]。工资记账)*0.05;
下注[i]。净工资=下注[i]。总工资-下注[i]。工资-下注[i]。税收;
工资汇总+=下注[i]。净工资;
printf(“工资总额的汇总为:%d\n”,下注[i]。工资总额);
}

您将看到正确的结果打印出来。

您的问题描述变得模糊。你提供什么投入?你期望什么样的产出?您得到的输出是什么?例如,如果在&Wagered[i]。工资我的输入是100,在&Wagered[i]。工作天数我的输入是2,Wagered[i]。总工资=Wagered[i]。工资*Wagered[i]。工作天数;应该是200,但不是。相反,它给了我一个7位数的数字,每次我编译和运行这个7位数的数字都会改变。但它仍然有7位数。@Δινύσηςρζις编辑您的问题,不要发表评论。