麻烦大佬看看我这代码哪里出错了 一个体育成绩系统 要求用函数

#include <stdio.h>

float bmi1(float BMI);

float bmi2(float BMI);

int vc1(int VC);

int vc2(int VC);

int pu(int PU);

int su(int SU);

void TScore(float Totalscore);

 

int main()

{

    float BMI, Totalscore;

    int sex, VC, PU, SU;

    printf("请输入学生性别:(1表示男,2表示女.)");

    scanf("%d\n", &sex);

    

    if(sex==1)

          {

        scanf("%f  %d %d", &BMI, &VC, &PU);

        

        bmi1(BMI );

        vc1(VC);

        pu(PU);

        printf("BMI score=%f, VC score=%d, PU score=%d", score1, score2, score3);

        Totalscore = score1+score2+score3;

        printf("Total score=%f", Totalscore);

        TScore();

    

    }

    else

    {

        scanf("%f  %d  %d", &BMI, &VC, &SU);

        

        bmi2(BMI);

        vc2(VC);

        su(SU);

        printf("BMI score=%f, VC score=%d, SU score=%d", score1, score2, score3);

        Totalscore = score1+score2+score3;

        printf("Total score=%f", Totalscore);

        TScore();

    }

    return 0;

}

 

float bmi1(float BMI)

{

    float score1;

    if(BMI >= 17.9 && BMI <= 23.9)

    score1 = 100*0.25;

    else if(BMI >= 0 && BMI <= 17.8 || BMI >= 24.0 && BMI <= 27.9)

    score1 = 80*0.25;

    else if(BMI >=  28.0)

    score1 = 60*0.25;

    else

    score1 = 30*0.25;

      return score1;

}

 

float bmi2(float BMI)

{

    float score1;

    if(BMI >= 17.2 && BMI <= 23.9)

    score1 = 100*0.25;

    else if(BMI >= 0 && BMI <= 17.1 || BMI >= 24.0 && BMI <= 27.9)

    score1 = 80*0.25;

    else if(BMI >=  28.0)

    score1 = 60*0.25;

    else

    score1 = 30*0.25;

       return score1;

}

 

int vc1(int VC)

{

    int score2;

    if(VC >= 4000)

    score2 = 100*0.35;

    else if(VC >= 4181 && VC <= 4800)

    score2 = 80*0.35;

    else if(VC >= 3101 && VC <= 4180)

    score2 = 60*0.35;

    else if(VC >= 0 && VC <= 3100)

    score2 = 30*0.35;

    else

    printf("自信点,你的肺活量不可能为负值,请重新输入!");

       return score2;

}

 

int vc2(int VC)

{

    int score2;

    if(VC >= 3400)

    score2 = 100*0.35;

    else if(VC >= 3001 && VC <= 3400)

    score2 = 80*0.35;

    else if(VC >= 2051 && VC <= 3000)

    score2 = 60*0.35;

    else if(VC >= 0 && VC <= 2050)

    score2 = 30*0.35;

    else

    printf("自信点,你的肺活量不可能为负值,请重新输入!");

       return score2;

}

 

int pu(int PU)

{

    int score3;

    if(PU >= 19)

    score3 = 100*0.4;

    else if(PU >= 16 && PU < 19)

    score3 = 80*0.4;

    else if(PU >= 10 && PU <= 15)

    score3 = 60*0.4;

    else if(PU >= 0 && PU <= 9)

    score3 = 30*0.4;

    else

    printf("自信点,你的引体向上不可能为负值,请重新输入!");

       return score3;

}

 

int su(int SU)

{

    int score3;

    if(SU >= 19)

    score3 = 100*0.4;

    else if(SU >= 16 && PU < 19)

    score3 = 80*0.4;

    else if(SU >= 10 && PU <= 15)

    score3 = 60*0.4;

    else if(SU >= 0 && PU <= 9)

    score3 = 30*0.4;

    else

    printf("自信点,你的仰卧起坐不可能为负值,请重新输入!");

       return score3;

}

 

void TScore(float Totalscore)

{

    if(Totalscore >= 95 && Totalscore <= 100)

    printf("优秀!");

    else if(Totalscore >= 80 && Totalscore <= 94)

    printf("良好!");

    else(Totalscore >= 60 && Totalscore <= 79)

    printf("及格!");

    else if(Totalscore < 60)

    printf("不及格!");

    else

    printf("请重新输入!"); 

}

代码修改如下:

#include <stdio.h>
float bmi1(float BMI);
float bmi2(float BMI);
int vc1(int VC);
int vc2(int VC);
int pu(int PU);
int su(int SU);
void TScore(float Totalscore);

int main()
{
	float BMI, Totalscore;
	int sex, VC, PU, SU;
	float score1;
	int score2, score3;
	printf("请输入学生性别:(1表示男,2表示女.)");
	scanf("%d\n", &sex);

	if(sex==1)
	{
		scanf("%f  %d %d", &BMI, &VC, &PU);
		score1 =bmi1(BMI );
		score2 =vc1(VC);
		score3 =pu(PU);

		printf("BMI score=%f, VC score=%d, PU score=%d", score1, score2, score3);
		Totalscore = score1+score2+score3;
		printf("Total score=%f", Totalscore);
		TScore(Totalscore);
	}
	else
	{
		scanf("%f  %d  %d", &BMI, &VC, &SU);
		score1 = bmi2(BMI);
		score2 =vc2(VC);
		score3 = su(SU);
		printf("BMI score=%f, VC score=%d, SU score=%d", score1, score2, score3);
		Totalscore = score1+score2+score3;
		printf("Total score=%f", Totalscore);
		TScore(Totalscore);

	}

	return 0;

}



float bmi1(float BMI)
{
	float score1;
	if(BMI >= 17.9 && BMI <= 23.9)
		score1 = 100*0.25;
	else if(BMI >= 0 && BMI <= 17.8 || BMI >= 24.0 && BMI <= 27.9)
		score1 = 80*0.25;
	else if(BMI >=  28.0)
		score1 = 60*0.25;
	else
		score1 = 30*0.25;
	return score1;
}



float bmi2(float BMI)
{
	float score1;
	if(BMI >= 17.2 && BMI <= 23.9)
		score1 = 100*0.25;
	else if(BMI >= 0 && BMI <= 17.1 || BMI >= 24.0 && BMI <= 27.9)
		score1 = 80*0.25;
	else if(BMI >=  28.0)
		score1 = 60*0.25;
	else
		score1 = 30*0.25;
	return score1;
}



int vc1(int VC)
{
	int score2;
	if(VC >= 4000)
		score2 = 100*0.35;
	else if(VC >= 4181 && VC <= 4800)
		score2 = 80*0.35;
	else if(VC >= 3101 && VC <= 4180)
		score2 = 60*0.35;
	else if(VC >= 0 && VC <= 3100)
		score2 = 30*0.35;
	else
		printf("自信点,你的肺活量不可能为负值,请重新输入!");

	return score2;

}



int vc2(int VC)
{
	int score2;
	if(VC >= 3400)
		score2 = 100*0.35;
	else if(VC >= 3001 && VC <= 3400)
		score2 = 80*0.35;
	else if(VC >= 2051 && VC <= 3000)
		score2 = 60*0.35;
	else if(VC >= 0 && VC <= 2050)
		score2 = 30*0.35;
	else
		printf("自信点,你的肺活量不可能为负值,请重新输入!");
	return score2;
}



int pu(int PU)
{
	int score3;
	if(PU >= 19)
		score3 = 100*0.4;
	else if(PU >= 16 && PU < 19)
		score3 = 80*0.4;
	else if(PU >= 10 && PU <= 15)
		score3 = 60*0.4;
	else if(PU >= 0 && PU <= 9)
		score3 = 30*0.4;
	else
		printf("自信点,你的引体向上不可能为负值,请重新输入!");
	return score3;
}



int su(int SU)
{
	int score3;
	if(SU >= 19)
		score3 = 100*0.4;
	else if(SU >= 16 && SU < 19)
		score3 = 80*0.4;
	else if(SU >= 10 && SU <= 15)
		score3 = 60*0.4;
	else if(SU >= 0 && SU <= 9)
		score3 = 30*0.4;
	else
		printf("自信点,你的仰卧起坐不可能为负值,请重新输入!");
	return score3;
}



void TScore(float Totalscore)
{
	if(Totalscore >= 95 && Totalscore <= 100)
		printf("优秀!");
	else if(Totalscore >= 80 && Totalscore <= 94)
		printf("良好!");
	else if(Totalscore >= 60 && Totalscore <= 79)
		printf("及格!");
	else if(Totalscore < 60)
		printf("不及格!");
	else
		printf("请重新输入!"); 

}

 

你先说说现在的问题是什么,编译不通过,还是运行效果不符合,以便快速定位问题

printf("BMI score=%f, VC score=%d, PU score=%d", score1, score2, score3);

这score1,score2,score3也没定义啊

 if(VC >= 4000)

    score2 = 100*0.35;

    else if(VC >= 4181 && VC <= 4800)

    score2 = 80*0.35;

    else if(VC >= 3101 && VC <= 4180)

    score2 = 60*0.35;

孙旭写的不对啊。第二个else if永远进不来,第三个只有<4000才进来,要把范围重新规划一下

代码修改如下:

#include <stdio.h>
float bmi1(float BMI);
float bmi2(float BMI);
int vc1(int VC);
int vc2(int VC);
int pu(int PU);
int su(int SU);
void TScore(float Totalscore);

int main()
{
	float BMI, Totalscore;
	int sex, VC, PU, SU;
	float score1;
	int score2, score3;
	printf("请输入学生性别:(1表示男,2表示女.)");
	scanf("%d\n", &sex);

	if(sex==1)
	{
		scanf("%f  %d %d", &BMI, &VC, &PU);
		score1 =bmi1(BMI );
		score2 =vc1(VC);
		score3 =pu(PU);

		printf("BMI score=%f, VC score=%d, PU score=%d", score1, score2, score3);
		Totalscore = score1+score2+score3;
		printf("Total score=%f", Totalscore);
		TScore(Totalscore);
	}
	else
	{
		scanf("%f  %d  %d", &BMI, &VC, &SU);
		score1 = bmi2(BMI);
		score2 =vc2(VC);
		score3 = su(SU);
		printf("BMI score=%f, VC score=%d, SU score=%d", score1, score2, score3);
		Totalscore = score1+score2+score3;
		printf("Total score=%f", Totalscore);
		TScore(Totalscore);

	}

	return 0;

}



float bmi1(float BMI)
{
	float score1;
	if(BMI >= 17.9 && BMI <= 23.9)
		score1 = 100*0.25;
	else if(BMI >= 0 && BMI <= 17.8 || BMI >= 24.0 && BMI <= 27.9)
		score1 = 80*0.25;
	else if(BMI >=  28.0)
		score1 = 60*0.25;
	else
		score1 = 30*0.25;
	return score1;
}



float bmi2(float BMI)
{
	float score1;
	if(BMI >= 17.2 && BMI <= 23.9)
		score1 = 100*0.25;
	else if(BMI >= 0 && BMI <= 17.1 || BMI >= 24.0 && BMI <= 27.9)
		score1 = 80*0.25;
	else if(BMI >=  28.0)
		score1 = 60*0.25;
	else
		score1 = 30*0.25;
	return score1;
}



int vc1(int VC)
{
	int score2;
	if(VC >= 4000)
		score2 = 100*0.35;
	else if(VC >= 4181 && VC <= 4800)
		score2 = 80*0.35;
	else if(VC >= 3101 && VC <= 4180)
		score2 = 60*0.35;
	else if(VC >= 0 && VC <= 3100)
		score2 = 30*0.35;
	else
		printf("自信点,你的肺活量不可能为负值,请重新输入!");

	return score2;

}



int vc2(int VC)
{
	int score2;
	if(VC >= 3400)
		score2 = 100*0.35;
	else if(VC >= 3001 && VC <= 3400)
		score2 = 80*0.35;
	else if(VC >= 2051 && VC <= 3000)
		score2 = 60*0.35;
	else if(VC >= 0 && VC <= 2050)
		score2 = 30*0.35;
	else
		printf("自信点,你的肺活量不可能为负值,请重新输入!");
	return score2;
}



int pu(int PU)
{
	int score3;
	if(PU >= 19)
		score3 = 100*0.4;
	else if(PU >= 16 && PU < 19)
		score3 = 80*0.4;
	else if(PU >= 10 && PU <= 15)
		score3 = 60*0.4;
	else if(PU >= 0 && PU <= 9)
		score3 = 30*0.4;
	else
		printf("自信点,你的引体向上不可能为负值,请重新输入!");
	return score3;
}



int su(int SU)
{
	int score3;
	if(SU >= 19)
		score3 = 100*0.4;
	else if(SU >= 16 && SU < 19)
		score3 = 80*0.4;
	else if(SU >= 10 && SU <= 15)
		score3 = 60*0.4;
	else if(SU >= 0 && SU <= 9)
		score3 = 30*0.4;
	else
		printf("自信点,你的仰卧起坐不可能为负值,请重新输入!");
	return score3;
}



void TScore(float Totalscore)
{
	if(Totalscore >= 95 && Totalscore <= 100)
		printf("优秀!");
	else if(Totalscore >= 80 && Totalscore <= 94)
		printf("良好!");
	else if(Totalscore >= 60 && Totalscore <= 79)
		printf("及格!");
	else if(Totalscore < 60)
		printf("不及格!");
	else
		printf("请重新输入!"); 

}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632