16.体测成绩判定(c函数调用)

注意:本篇文章有点长耐心看完

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LiP6YGN5LiJ5Y2B5YWt5bK4,size_19,color_FFFFFF,t_70,g_se,x_16

 案例描述:
2014年秋季起,我国执行学生体质健康测试的新标准,大学生体测成绩低于50分将不能毕  业,按结业或肄业处理。此项标准的执行引起了学校以及诸多在校大学生的密切关注,学校建议  各级学生参与晨练,部分学生也自觉开始进行适量运动,以提高身体素质。看表一watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LiP6YGN5LiJ5Y2B5YWt5bK4,size_20,color_FFFFFF,t_70,g_se,x_16

 案例分析
表4-1中“单项指标”一栏分为7项,前五项为男生女生都需要测试的项目,后两项根据
性别决定需要测试的具体项目,这里可将项目简单分为这两类。
该系统的目的在于模拟体测成绩的判定机制,因此不要求实现所有项目成绩的判定,根据以
上分类,结合案例,对将要设计的程序,作如下要求:
(1)根据表4-2中给出的评分表,分别实现体重指数、肺活量、引体向上、仰卧起坐这四
项指标的计算功能;
(2)可以根据用户的选择,进行单项指标的成绩换算;
(3)实现总成绩的计算功能,并根据表4-3对总成绩进行判定(优秀、良好、及格、不
及格);
(4)以菜单的形式向用户展示所有功能。watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LiP6YGN5LiJ5Y2B5YWt5bK4,size_20,color_FFFFFF,t_70,g_se,x_16

 总成绩的计算方式为:各项成绩与其所占比重相乘,将相乘后的成绩相加,具体公式如下。  (1)男生:体重指数x25%+肺活量x35%+引体向上x40%;
(2)女生:体重指数x25%+肺活量x35%+仰卧起坐x40%。
案例实现
1.案例设计
案例要求实现体重指数、肺活量、引体向上、仰卧起坐这四项指标的计算功能,在案例分析  中我们将7个指标粗略划分为两类,根据划分结果可知,其中体重指数和肺活量为一类,引体向  上和仰卧起坐为一类。
按其分类,体重指数和肺活量可设置为同一类函数,这类函数可根据性别,执行不同的代码  段,完成针对某条记录的计算;引体向上和仰卧起坐可设置为同一类函数,即只针对性别为男的同学的引体向上成绩的计算,或只针对性别为女的同学的仰卧起坐成绩的计算。  若要实现上述四项指标的计算功能,需要实现四个功能函数。
案例要求程序可以菜单的形式向用户展示所有的功能,为了使程序模块化,可将菜单功能实  现为一个函数。菜单函数应能向用户展示所有功能,并获取用户的选择。
同时案例要求程序可实现对某位同学各项总成绩的计算功能,该功能同样可模块化为一个  函数。
综上,本案例的所有功能可由如下几个函数实现:
(1)求体重指数成绩的函数;
(2)求肺活量成绩的函数;
(3)求引体向上成绩的函数;
(4)求仰卧起坐成绩的函数;
(5)求总成绩的函数;
(6)菜单函数。
当然必不可少的还有主函数,主函数中可根据菜单函数返回的选项,选择需要实现的功能

Sleep函数是<windows.h>里等待函数

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int sex=0;//性别由外部转入,计算时避免性别的出现
int conutBMI(int sex)//体重指数
{
    float weight,height;
    printf("请输入体重(kg),身高(m):");
    scanf("%f%f",&weight,&height);
    float BMI=weight/(height*height);
    int seo=0;
    switch(sex)
    {
    case 0://男生
        if(BMI>17.9&&BMI<23.9)
            seo=100;
        else if(BMI>17.8||(BMI>24.0&&BMI<27.9))
            seo=80;
        else
            seo=30;
        break;
    case 1://女生
        if(BMI>17.2&&BMI<23.9)
            seo=100;
        else if(BMI>17.1||(BMI>24.0&&BMI<27.9))
            seo=80;
        else
            seo=30;
        break;
    default:
        seo=0;
        break;
    }
    printf("体重指数为:%.2f,成绩为%d\n",BMI,seo);
    return seo;
}
int conutFVC()//肺活量
{
    int FVC,seo;
    printf("请输入肺活量(ml):");
    scanf("%d",&FVC);
    switch(sex)
    {
    case 0:
        if(FVC>4800)
            seo=100;
        else if(FVC>4180&&FVC<=4800)
            seo=80;
        else if(FVC>3100&&FVC<=4180)
            seo=60;
        else
            seo=30;
        break;
    case 1:
        if(FVC>3400)
            seo=100;
        else if(FVC>3000&&FVC<=3400)
            seo=80;
        else if(FVC>2050&&FVC<=3000)
            seo=60;
        else
            seo=30;
        break;
    default:
        break;
    }
    return seo;
}
int conutChinups()//引体向上
{
    if(sex==1)
    {
        printf("引体向上是男生特有项目!\n");
        Sleep(2000);
        exit(0);
    }
    int Ups,seo;
    printf("引体向上计数为:");
    scanf("%d",&Ups);
    if(Ups>19)
        seo=100;
    else if(Ups>15&&Ups<=19)
        seo=80;
    else if(Ups>10&&Ups<=15)
        seo=60;
    else
        seo=30;
    return seo;
}
int conutSitup()//仰卧起坐
{
    if(sex==0)
    {
        printf("仰卧起坐为女生特有项目!\n");
        Sleep(2000);
        exit(0);
    }
    int Ups,seo;
    printf("仰卧起坐计数为:");
    scanf("%d",&Ups);
    if(Ups>56)
        seo=100;
    else if(Ups>52&&Ups<=56)
        seo=80;
    else if(Ups>26&&Ups<=52)
        seo=60;
    else
        seo=30;
    return seo;
}
void getNum()//总成绩
{
    int BMI,FVC,Cups,Sups;
    double num;
    BMI=conutBMI(sex);
    FVC=conutFVC(sex);
    if(sex==0)
    {
        Cups=conutChinups();
        num=BMI*0.25+FVC*0.35+Cups*0.4;
    }
    else
    {
        Sups=conutSitup();
        num=BMI*0.25+FVC*0.35+Sups*0.4;
    }
    if(num>95)
        printf("综合成绩为%.2f,优秀\n",num);
    else if(num>80&&num<95)
        printf("综合成绩为%.2f,良好\n",num);
    else
        printf("综合成绩为%.2f,及格\n",num);
}
int menu()//菜单
{
    int sec;
    printf("功能菜单:\n");
    printf("========\n");
    printf("1.体重指数\n");
    printf("2.肺活量\n");
    printf("3.引体向上\n");
    printf("4.仰卧起坐\n");
    printf("5.总成绩\n");
    printf("6.退出\n");
    printf("========\n");
    printf("请输入性别(男:0,女:1):");
    scanf("%d",&sex);
    while(sex!=1&&sex!=0)
    {
        printf("选择有误!\n请重新输入:");
        scanf("%d",&sex);
    }
    printf("请输入想要的功能:");
    scanf("%d",&sec);
    while(sec>5||sec<0)
    {
        printf("选择有误!\n请重新输入:");
        scanf("%d",&sec);
    }
    return sec;
}
int main()
{
    int sec=menu();
    switch(sec)
    {
    case 0:
        exit(0);
        break;
    case 1:
        conutBMI(sex);
        break;
    case 2:
        conutFVC(sex);
        break;
    case 3:
        conutChinups();
        break;
    case 4:
        conutSitup();
        break;
    case 5:
        getNum();
    default:
        break;
    }
    return 0;
}

这里给出两种例子:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LiP6YGN5LiJ5Y2B5YWt5bK4,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LiP6YGN5LiJ5Y2B5YWt5bK4,size_16,color_FFFFFF,t_70,g_se,x_16

 下期见

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LiP6YGN5LiJ5Y2B5YWt5bK4,size_19,color_FFFFFF,t_70,g_se,x_16

 

  • 9
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值