为啥错误 error C2181: illegal else without matching if

#include<stdio.h>
#include<math.h>
int main()
{double x,y,p1,p2,p3,p4,p5,p6;
printf("请输入奖金x:");
scanf("%f",&x);
if (x<=100000)
p1=0.1;
#include<stdio.h>
#include<math.h>
int main()
{double x,y,p1,p2,p3,p4,p5,p6;
printf("请输入奖金x:");
scanf("%f",&x);
if (x<=100000)
p1=0.1;
y=x*p1;
else if (x<=200000)
p2=0.075;
y=100000*p1+(x-100000)*p2;
else if (x<=400000)
p3=0.05;
y=100000*p1+100000*p2+(x-200000)*p3;
else if (x<=600000)
p4=0.03;
y=100000*p1+100000*p2+200000*p3+(x-400000)*p4;
else if (x<=1000000)
p5=0.015;
y=100000*p1+100000*p2+200000*p3+200000*p4+(x-600000)*p5;
else
p6=0.01;
y=100000*p1+100000*p2+200000*p3+200000*p4+400000*p5+(x-1000000)*p6;
printf("奖金总数为:10.2f%.\n",y);
return 0;
}

#include<stdio.h>
#include<math.h>
int main()
{
    double x,y,p1,p2,p3,p4,p5,p6;
    printf("请输入奖金x:");
    scanf("%f",x);
    if (x<=100000)
    {
        p1=0.1;
        y=x*p1;
    }
    else if (x<=200000)
    {
        p2=0.075;
        y=100000*p1+(x-100000)*p2;
    }
    else if (x<=400000)
    {
    p3=0.05;
    y=100000*p1+100000*p2+(x-200000)*p3;
    }
    else if (x<=600000)
    {
    p4=0.03;
    y=100000*p1+100000*p2+200000*p3+(x-400000)*p4;
    }
    else if (x<=1000000)
    {
    p5=0.015;
    y=100000*p1+100000*p2+200000*p3+200000*p4+(x-600000)*p5;
    }
    else
    {
    p6=0.01;
    y=100000*p1+100000*p2+200000*p3+200000*p4+400000*p5+(x-1000000)*p6;
    printf("奖金总数为:10.2f%.\n",y);
    }
    return 0;
}

你的if语句有多条语句,需要加上花括号{}

温馨提示:内容为网友见解,仅供参考
无其他回答

#C语言中的问题# error C2181: illegal else without matching if
因此这句就独立完成了一句 与下面你的else if 就没关系了··

#C语言中的问题# error C2181: illegal else without matching if
错误提示为:else与if不匹配 判断if(b*b-4*a*c>0)时多加一个分号“;”表示一个语句了,后面的else成独立的了 所以说else不匹配if

...error C2181: illegal else without matching if 我到底错在哪...
你第三个else if 后面多了一个;把它删除即可

...error C2181: illegal else without matching if这个错误,到底是什 ...
这样就不符合C语言语法了,所以编译器报错说:else没有与之对应的if(因为中间隔了一条语句)。即便if或else后只有一条语句,也用{}扩起来,是一个好的编程习惯。这样容易发现错误。

error C2181: illegal else without matching if错误
提示应该是说你的else没有与之匹配的if。错误在于你的if表达式后出现的分号“;”,去掉它

...error C2181: illegal else without matching if
if(year%4==0&&year%100!=0||year%100==0);if在;的时候就已经结束了。所以下面的else没有相应的if匹配。建议修改为 if(year%4==0&&year%100!=0||year%100==0){printf("days=29"); }else { printf("days=28");}

...error C2181: illegal else without matching if 么意思? 谢谢_百度...
检查下你写的if~else语句,你的语句有问题!你是写的嵌套吧?

error C2181: illegal else without matching if
if子句需要加花括号,你原代码里的if和else没办法匹配。

error C2181: illegal else without matching if 执行 cl.exe 时出...
当if的子语句多于1行的时候需要用括号括起来,而且你判断语句跟输出语句不正确,正确代码:include <stdio.h>#include <math.h>int main(void){int a = 1;int b = 2;int c = 1;int delta;delta = b*b - 4 * a*c;float x1, x2;x1 = (-b*b + sqrt(delta)) \/ (2 * a), ...

c语言老是出现error C2181: illegal else without matching if
if((aa[i] % 1000) < (aa[j] % 1000));\/\/如果aa[i]的后三位数小于aa[j]的后三位数 else if((aa[i] % 1000) == (aa[j] % 1000));\/\/如果aa[i]的后三位等于aa[j]后三位 if(aa[i] > aa[j]);\/\/如果aa[i]的值大于aa[j]的值 这三行分别在行尾多了一个分号。

相似回答