Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 试图在一个for循环中使用多个条件,但只执行两个_Arrays_C_For Loop_If Statement - Fatal编程技术网

Arrays 试图在一个for循环中使用多个条件,但只执行两个

Arrays 试图在一个for循环中使用多个条件,但只执行两个,arrays,c,for-loop,if-statement,Arrays,C,For Loop,If Statement,我想知道是否有人能帮助我做错事 该程序的思想是获取代表年薪的10个用户输入值,并输出在所述工资的纳税范围内所欠的总税款。所有年薪低于2万美元的员工需缴纳10%的税费,2万至5万美元的员工需缴纳20%的税费,5万至10万美元的员工需缴纳30%的税费,10万美元以上的员工需缴纳40%的税费。然而,当我为每个假设的税级输入测试工资时,只有描述工资低于20000美元以及介于20000美元和50000美元之间的工资才能正确执行。其余的人似乎默认20%的税率,即使我输入的工资是10万美元 #include

我想知道是否有人能帮助我做错事

该程序的思想是获取代表年薪的10个用户输入值,并输出在所述工资的纳税范围内所欠的总税款。所有年薪低于2万美元的员工需缴纳10%的税费,2万至5万美元的员工需缴纳20%的税费,5万至10万美元的员工需缴纳30%的税费,10万美元以上的员工需缴纳40%的税费。然而,当我为每个假设的税级输入测试工资时,只有描述工资低于20000美元以及介于20000美元和50000美元之间的工资才能正确执行。其余的人似乎默认20%的税率,即使我输入的工资是10万美元

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  int salaryBase [] = {20000, 50000, 100000};
  float taxBase [] = {0.10, 0.20, 0.30, 0.40};
  int annualSalaries [11];
  float taxesToPay [11];

  for (int i=0;i<10;i++)
  {
    printf("Enter annual salary\n");
    scanf("%d", &annualSalaries[i]);

  }
  for (int n=0;n<10;n++)
  {
    if(annualSalaries[n]<=salaryBase[0])
    {
    taxesToPay[n]=annualSalaries[n]*taxBase[0];
    }
    else if(salaryBase[0]<annualSalaries[n]<=salaryBase[1])
    {
    taxesToPay[n]=annualSalaries[n]*taxBase[1];
    }
    else if(salaryBase[1]<annualSalaries[n]<=salaryBase[2])
    {
    taxesToPay[n]=annualSalaries[n]*taxBase[2];
    }
    else if(annualSalaries[n]>salaryBase[2])
    {
    taxesToPay[n]=annualSalaries[n]*taxBase[3];
    }
  }
  printf("SALARY  TAXES\n");

  for (int g=0;g<10;g++)
  {
  printf("$%d  $%.2f\n", annualSalaries[g], taxesToPay[g]);
  }

  return 0;
  
  

}
#包括
#包括
内部主(空){
国际工资基数[]={20000,50000,100000};
浮动税基[]={0.10,0.20,0.30,0.40};
国际年报[11];
浮动税停止日[11];

对于(int i=0;i如注释所示,您不能说
aasalaryBase[0]OT:为了便于可读性和理解(对于我们人类来说,编译器不关心)请始终缩进代码。在每个左大括号“{”之后缩进。在每个右大括号“}”之前取消缩进。建议每个缩进级别为4个空格。注意:缩进宽度较小(例如2个空格)使用可变宽度fontsC时将“丢失”。fontsC不支持链接条件。C不遵循经典的算术约定。
salaryBase[0]OT:为了便于可读性和理解(对于我们人类,编译器不关心),请一致地缩进代码。在每个大括号后缩进'{.Unindent在每个右大括号“}”之前。建议每个缩进级别为4个空格。注意:使用可变宽度字体时,较小的缩进宽度(例如2个空格)将“丢失”:参考:
float taxBase[]={0.10,0.20,0.30,0.40}
double
值转换为
float
值。这不是一个好主意,建议:
float taxBase[]={0.10f,0.20f,0.30f,0.40f};
注意值后面的
f
,这使得它们
float
值为(j=0;j
根据
int
的大小,这将循环12或24次。建议:
for(j=0;j
这将循环3次关于:
taxesToPay[i]=annualSalaries[i]*taxBase[sizeof taxBase];
1)taxBase的大小,取决于
int
的大小,将乘以16或32,而不是您想要的。2)这将访问超出数组末尾的部分taxBase@user3629249感谢您的评论和建议。我犯了错误。我已相应地更正了我的答案。BR.关于:
float taxBase[]={0.10,0.20,0.30,0.40}
double
值转换为
float
值。这不是一个好主意,建议:
float taxBase[]={0.10f,0.20f,0.30f,0.40f};
注意值后面的
f
,这使得它们
float
值为(j=0;j
根据
int
的大小,这将循环12或24次。建议:
用于(j=0;j
这将循环3次关于:
taxesToPay[i]=annualSalaries[i]*taxBase[sizeof taxBase];
1)taxBase的大小,取决于
int
的大小,将乘以16或32,而不是您想要的。2)这将访问超出数组末尾的部分taxBase@user3629249谢谢您的评论和建议。我犯了错误。我已相应地更正了我的答案。BR。
#include <stdio.h>
#include <stdlib.h>
#define N 10            // you should not embed the "magic number" in the code

int main(void) {
    int salaryBase [] = {20000, 50000, 100000};
    float taxBase [] = {0.10f, 0.20f, 0.30f, 0.40f};
    int annualSalaries[N];
    float taxesToPay[N];
    char buf[BUFSIZ];
    int i, j;

    for (i = 0; i < N; i++) {
        printf("Enter annual salary (No.%d)\n", i + 1);
        fgets(buf, sizeof buf, stdin);
        sscanf(buf, "%d", &annualSalaries[i]);  // should not use scanf()
    }
    for (i = 0; i < N; i++) {
        taxesToPay[i] = annualSalaries[i] * taxBase[sizeof taxBase / sizeof taxBase[0] - 1];    // assign to the default value
        for (j = 0; j < sizeof salaryBase / sizeof salaryBase[0]; j++) {
            if (annualSalaries[i] <= salaryBase[j]) {
                taxesToPay[i] = annualSalaries[i] * taxBase[j];
                break;
            }
        }
    }
    printf("SALARY  TAXES\n");

    for (i = 0; i < N; i++) {
        printf("$%d  $%.2f\n", annualSalaries[i], taxesToPay[i]);
    }
    return EXIT_SUCCESS;
}