qianyu_QWQ 2022-12-17 20:47 采纳率: 100%
浏览 18
已结题

结构体加指针加数组如何改

1)不及格人数统计;
2)子函数实现: 根据学号在结构体数组中查找学生信息,返回该学生所在的数组下标,若没找到则返回 - 1。
主函数中输出该学生信息。要求:使用学号、结构体指针变量作为函数参数编程

如何修改

#include<stdio.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 search(int y,int* ch)
{
    int i = 0;
    ch = stu;
    for (; ch < 106;i++,ch++)
    {
        if (y==stu[i].num)
        {
            return i;
        }
        if(y<101 && y>105)
        {
            return (-1);
        }
    }
}
int main()
{
    int i, x = 0, y;
    int* ch = stu;
    for (i = 0; i < 5; i++)
    {
        if (stu[i].score < 60)
        {
            x += 1;
        }
    }
    printf("请输入你想查找的学生的编号:\n");
    scanf_s("%d", &y);
    y -= 1;
    y = search(y,ch);
    if (y == -1)
    {
        printf("数据输入错误");
        return 0;
    }
    else
    {
        printf("%d %s %s %lf", stu[i].num, stu[i].name, stu[i].sex, stu[i].score);
    }
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 浪客 2022-12-17 21:00
    关注
    
    #include <stdio.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 search(int y) //
    {
       int i = 0;
       // int ch = stu[0].num; //
       for (; i < 5; i++)//
       {
          if (y == stu[i].num)
          {
             return i;
          }
          // if (y < 101 && y > 105)
          // {
          //    return (-1);
          // }
       }
       return -1;
    }
    int main()
    {
       int i, x = 0, y;
       //int ch;
       for (i = 0; i < 5; i++)
       {
          if (stu[i].score < 60)
          {
             x += 1;
          }
       }
       printf("请输入你想查找的学生的编号:\n");
       scanf_s("%d", &y);
       // y -= 1;
       y = search(y);
       if (y == -1)
       {
          printf("数据输入错误");
          // return 0;
       }
       else
       {
          printf("%d %s %c %f", stu[y].num, stu[y].name, stu[y].sex, stu[y].score); //
       }
       return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 已采纳回答 12月19日
  • 创建了问题 12月17日

悬赏问题

  • ¥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项目#的问题,请各位专家解答!