努力成为可丽饼 2021-12-25 14:42 采纳率: 100%
浏览 93
已结题

学生成绩管理,不及格统计,信息查找

设有一组学生的成绩数据已经放在结构体数组stu中
struct student 
{  int num; 
   char name[20]; 
   char sex; 
   float score; 
}stu[5]={{101,"li ping",'m',45}, 
        {102 ,"zhang ping",'m',62.5}, 
        {103 ,"he fang",'m',92.5}, 
        {104 ,"cheng ling",'f',87}, 
        {105 ,"wang ming",'m',58}}; 
1)子函数实现 :不及格人数统计。要求:使用结构体指针变量作为函数参数编程,主函数中输出结果。
2)子函数实现: 根据学号在结构体数组中查找学生信息,返回该学生所在的数组下标,若没找到则返回-1。主函数中输出该学生信息。要求:使用学号、结构体指针变量作为函数参数编程。
3)子函数实现:根据姓名在结构体数组中查找学生信息,返回该学生所在的数组下标,若没找到则返回-1。主函数中输出该学生信息。要求:使用字符数组或字符指针变量(为了传递姓名)、结构体指针变量作为函数参数编程。

  • 写回答

2条回答 默认 最新

  • 南七灵 2021-12-25 15:24
    关注
    
     
    #include <stdio.h>
    #include <string.h>
    struct student 
    {  int num; 
       char name[20]; 
       char sex; 
       float score; 
    }stu[5]={{101,"li ping",'m',45}, 
            {102 ,"zhang ping",'m',62.5}, 
            {103 ,"he fang",'m',92.5}, 
            {104 ,"cheng ling",'f',87}, 
            {105 ,"wang ming",'m',58}}; 
    
    int failed(struct student *s);
    int search1(int num, struct student *s);
    int search2(char *name, struct student *s);
    int main()
    {
        printf("不及格人数共有%d个\n",failed(stu));
        int num;
        printf("请输入一个学号:");
        scanf("%d",&num);
        int a = search1(num,stu);
        if(a != -1){
            printf("%d,%s,%c,%.2f\n",stu[a].num,stu[a].name,stu[a].sex,stu[a].score);
        }else{
            printf("没有找到!\n");
        }
        char name[20];
        printf("请输入一个姓名:");
        getchar();
        gets(name);
        int b = search2(name,stu);
        if(b != -1){
            printf("%d,%s,%c,%.2f\n",stu[b].num,stu[b].name,stu[b].sex,stu[b].score);
        }else{
            printf("没有找到!");
        }
        return 0;
        
    }
    int failed(struct student *s){
        int cnt = 0;
        for(int i = 0;i < 5;i++){
            if(s[i].score < 60){
                cnt ++;
            }
        }
        return cnt;
    }
    
    int search1(int num, struct student *s){
        for(int i = 0;i < 5;i++){
            if(s[i].num == num){
                return i;
            }
        }
        return -1;
    }
    int search2(char *name, struct student *s){
        for(int i = 0;i < 5;i++){
            if(!strcmp(s[i].name,name)){
                return i;
            }
        }
        return -1;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月25日
  • 已采纳回答 12月25日
  • 创建了问题 12月25日

悬赏问题

  • ¥15 关于#Mybatis#的问题:怎么办重复数据如下"KSDM":37,"KSMC":"呼吸内科门诊","ksdm":37,"ksmc":"呼吸内科门诊"xml文件填写
  • ¥40 servlet的web程序部署出错
  • ¥50 activiti 新建流程系列问题
  • ¥50 为什么我版本升级之后运行速度变慢5倍??
  • ¥15 如何在gazebo中加载机械臂和机械手
  • ¥15 纯运放实现隔离采样方案设计
  • ¥20 easyconnect无法连接后缀带.com的网站,一直显示找不到服务器ip地址,但是带有数字的网站又是可以连接上的,如何解决
  • ¥15 电脑开机过商标后就直接这样,求解各位
  • ¥15 mysql , 用自己创建的本地主机和用户名 登录不上
  • ¥15 关于#web项目#的问题,请各位专家解答!