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 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题