Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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
C中的Else if语句未按预期工作_C_If Statement - Fatal编程技术网

C中的Else if语句未按预期工作

C中的Else if语句未按预期工作,c,if-statement,C,If Statement,下面是我的程序,我正试图在visual studio上运行它,它不断给我一个错误如果不匹配if则非法 我相信它是想告诉我我的else与我的if不匹配,但它确实匹配。下面是我的代码;有人可以运行它,让我知道问题是什么,这样我以后就不会重复了吗 /* counting number of students that pass*/ #include <stdio.h> main() { int pass, fail, grade; printf(" This progra

下面是我的程序,我正试图在visual studio上运行它,它不断给我一个错误
如果不匹配if则非法

我相信它是想告诉我我的
else
与我的
if
不匹配,但它确实匹配。下面是我的代码;有人可以运行它,让我知道问题是什么,这样我以后就不会重复了吗

/* counting number of students that pass*/
#include <stdio.h>

main()
{
    int pass, fail, grade;
    printf(" This program  tells you total number of students that passed\n Enter -1 to finish the program");

    pass = 0;
    fail = 0;
    grade = 0;

    while (grade != -1) {           /* Enter -1 to finish the while loop*/
        printf("Enter the grade of the student, 1 is pass, 2 is fail, -1 finishes the program\n");
        scanf_s("%d", &grade);
        if (grade == 1)
            printf("The student passed\n");
        pass = pass + 1;                /* Add 1 to the pass*/
        else if (grade == 2)
            printf("The student failed\n");
        fail = fail + 1;            /*Add 1 to fail */
        else
            printf("You have entered an invalid number, please try again\n");
    }

    if (pass > 8)
        printf("More than 8 students passed; raise tuition fees\n");

    getchar();
}
/*计算通过考试的学生人数*/
#包括
main()
{
int合格、不合格、等级;
printf(“此程序告诉您通过\n输入-1以完成程序的学生总数”);
通过=0;
失败=0;
等级=0;
while(grade!=-1){/*输入-1以完成while循环*/
printf(“输入学生的分数,1为通过,2为不通过,-1完成课程\n”);
scanf_s(“%d”和等级);
如果(等级==1)
printf(“通过考试的学生”);
通过=通过+1;/*将1添加到通过*/
否则,如果(等级==2)
printf(“学生失败\n”);
失败=失败+1;/*将1添加到失败*/
其他的
printf(“您输入的号码无效,请重试\n”);
}
如果(通过>8)
printf(“超过8名学生通过;提高学费”);
getchar();
}

大括号是你的朋友。更改代码段

if (grade == 1)
    printf("The student passed\n");
pass = pass + 1;                /* Add 1 to the pass*/
else if (grade == 2)
    printf("The student failed\n");
fail = fail + 1; 


牙套是你的朋友。更改代码段

if (grade == 1)
    printf("The student passed\n");
pass = pass + 1;                /* Add 1 to the pass*/
else if (grade == 2)
    printf("The student failed\n");
fail = fail + 1; 

代码
pass=pass+1不在if语句下,多个语句需要大括号:

if (grade == 1)
{
    printf("The student passed\n");
    pass = pass + 1; 
} 


else if (grade == 2)
{
   printf("The student failed\n");
   fail = fail + 1;            /*Add 1 to fail */
}
代码
pass=pass+1不在if语句下,多个语句需要大括号:

if (grade == 1)
{
    printf("The student passed\n");
    pass = pass + 1; 
} 


else if (grade == 2)
{
   printf("The student failed\n");
   fail = fail + 1;            /*Add 1 to fail */
}

语句
pass=pass+1将在if之外:

    if (grade == 1)
    {
        printf("The student passed\n");
        pass = pass + 1;                /* Add 1 to the pass*/
    }
    else if (grade == 2)

语句
pass=pass+1将在if之外:

    if (grade == 1)
    {
        printf("The student passed\n");
        pass = pass + 1;                /* Add 1 to the pass*/
    }
    else if (grade == 2)

大量使用大括号。。。检查
scanf
brages的返回值,防止人们穿着裤子被抓住。你应该使用int-main(void)、int-main或其他标准规范,但不要使用main,至少如果这不是C90代码的话。也许阅读这篇文章有助于自由地编写好的代码使用brages。。。检查
scanf
brages的返回值,防止人们被裤子绊倒。你应该使用int-main(void)、int-main或其他标准规范,但不要使用main,至少如果这不是C90代码的话。也许阅读这篇文章有助于编写好的代码谢谢你的快速回复,这本书没有教我:)谢谢你的快速回复,这本书没有教我:)