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

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

设有一组学生的成绩数据已经放在结构体数组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日

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)