努力成为可丽饼 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 dir815漏洞反弹shell失败
  • ¥15 支付宝小程序云函数登录获取user_id失败
  • ¥50 python for 循环速度慢
  • ¥15 CubeMX生成的代码用keil编译有报错
  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 添加组件无法加载页面,某块加载卡住
  • ¥15 网络科学导论,网络控制