代码不工作(C)
我想用struct和array计算工资,但它不起作用。当您看到代码时,您将更好地理解此练习。出于某种原因,如果在代码不工作(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,
工资
和工作日
中输入一个数字(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位数。@Δινύσηςρζις编辑您的问题,不要发表评论。