繁体   English   中英

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

[英]Why does my code jump to else immediately?

#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

您需要从getCarryMark返回进位标记:

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

您缺少getCarryMarks方法中的return语句!

您错过了getCarryMark中的return语句

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

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

#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);
        cm1 = getCarryMark();

        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 = 0.0;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM