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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改