gpt4 book ai didi

c - 在 C 中的循环/IF 结构外声明变量

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:32 25 4
gpt4 key购买 nike

我是 C 语言的新手,而不是整体编程。我想知道为什么当我在结构外部的 if 语句中声明要使用的变量时,我收到的输出是不正确的(无论如何对于这段代码)。

这是我的代码:

#include<stdio.h>
void grossPay();

int main()
{
grossPay();
}

void grossPay()
{
int rate = 10, hours;
double tax, grosspay, netpay;

printf("Enter work hours this week: ");
scanf("%d", &hours);

grosspay = hours * rate;

if (grosspay <= 300 && grosspay > 0)
{
tax = 0.10;
netpay = grosspay - grosspay * tax;
printf("Pay for %d hours of week with $%d per hour\n", hours, rate);
printf("Gross pay: $%.2f\n", grosspay);
printf("Net pay: $%.2f\n", netpay);
}
else if (grosspay > 300 && grosspay <=1000)
{
tax = 0.15;
netpay = grosspay - grosspay * tax;
printf("Pay for %d hours of week with $%d per hour\n", hours, rate);
printf("Gross pay: $%.2f\n", grosspay);
printf("Net pay: $%.2f\n", netpay);
}
else if (grosspay > 1000)
{
tax = 0.25;
netpay = grosspay - grosspay * tax;
printf("Pay for %d hours of week with $%d per hour\n", hours, rate);
printf("Gross pay: $%.2f\n", grosspay);
printf("Net pay: $%.2f\n", netpay);
}
else
{
printf("Invalid input. Please try again.\n\n");
}
}

编辑:我放置的代码是我对未获得正确输出的“修复”。我希望当我在整个 IF 语句之外声明一次 netpay 变量时,我会收到正确的输出,与上面代码的输出相同。

编辑 2:以前的版本

#include<stdio.h>
void grossPay();

int main()
{
grossPay();
}

void grossPay()
{
int rate = 10, hours;
double tax, grosspay, netpay;

printf("Enter work hours this week: ");
scanf("%d", &hours);

grosspay = hours * rate;
netpay = grosspay - grosspay * tax;

if (grosspay <= 300 && grosspay > 0)
{
tax = 0.10;

printf("Pay for %d hours of week with $%d per hour\n", hours, rate);
printf("Gross pay: $%.2f\n", grosspay);
printf("Net pay: $%.2f\n", netpay);
}
else if (grosspay > 300 && grosspay <=1000)
{
tax = 0.15;
printf("Pay for %d hours of week with $%d per hour\n", hours, rate);
printf("Gross pay: $%.2f\n", grosspay);
printf("Net pay: $%.2f\n", netpay);
}
else if (grosspay > 1000)
{
tax = 0.25;
printf("Pay for %d hours of week with $%d per hour\n", hours, rate);
printf("Gross pay: $%.2f\n", grosspay);
printf("Net pay: $%.2f\n", netpay);
}
else
{
printf("Invalid input. Please try again.\n\n");
}
}

最佳答案

相关代码归结为:

double tax;
netpay = grosspay - grosspay * tax;
tax = 0.10;
printf("Net pay: $%.2f\n", netpay);

这个问题是程序中的语句按照你编写的顺序执行(至少在一个函数中,除非特殊的控制流语句,如 continuegoto )。

因此:

  1. 首先我们定义一个名为tax的局部变量,它是未初始化的。
  2. 然后我们将netpay设置为grosspay - grosspay * tax的结果。这已经是错误的,因为此时 tax 没有定义的值,所以 grosspay - grosspay * tax 产生未定义的结果。
  3. 然后我们设置tax。这对 netpay 的值没有影响。
  4. 然后我们打印netpay

事情以错误的顺序发生。您需要在使用变量之前设置变量。

这就像你在告诉某人:

  1. 阅读手中的书。
  2. 带上指环王
  3. 打开它。

你想知道为什么他们不读指环王。

关于c - 在 C 中的循环/IF 结构外声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53238592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com