为什么我的代码会立即跳转到其他地方?

时间:2016-12-24 16:23:48

标签: c if-statement

#include <stdio.h>
int printMenu(int);
int studentglobal;
float getCarryMark(float);
float cm1;


main()
{
    printf("-----------------------------------------------------\n");
    printf("\t\tTotal Score calculator\n");
    printf("-----------------------------------------------------\n");
    int counter, x, studentcount = 1,sum = 0 ;

    x = printMenu(studentglobal);

    for (counter = 0; counter < x; counter++)

    {
        studentcount = studentcount + counter;
        printf("Student : %d \n", studentcount);
        getCarryMark(cm1);

        if (cm1 >= 0 && cm1 <= 50)
        {
            printf("right range!!\n");
        }
        else
        {
            printf("INVALID RANGE!!!\n");
        }
        printf("%.2f\n", cm1);
    }

}

int printMenu(int nstudent)
{
    printf("Enter no of student: ");
    scanf("%d", &nstudent);
    return(nstudent);
}

float getCarryMark(float carrymark)
{
    printf("Enter your carrymarks: ");
    scanf("%f", &carrymark);
    return(carrymark);
}

实际上,当我输入200时,它会显示INVALID RANGE!!!,但是当我输入20时,它仍会显示INVALID RANGE!!!。它以某种方式跳过了if语句。如果我有任何错误请告诉我,请不要打扰其他部分。 ert gf dfg dgd dg dfgd gd dg dg dgdfg

4 个答案:

答案 0 :(得分:4)

您需要从getCarryMark返回carrymark:

float getCarryMark(float carrymark)
{
    printf("Enter your carrymarks: ");
    scanf("%f", &carrymark);
    return(carrymark);
}

答案 1 :(得分:3)

你在getCarryMarks方法中缺少一个return语句!

答案 2 :(得分:2)

你错过了getCarryMark中的return语句

答案 3 :(得分:2)

getCarryMark 函数按值获取参数,修改该值并将其返回,但是,从不使用返回的值。修改参数的值并不会将此更改反映到外部,因为它已通过值传递。

我已经部分更新了代码,以便它可以执行if语句。请尝试以下代码。

out[:] = ...