(第14列)C语言:结构体变量做函数参数

简介: (第14列)C语言:结构体变量做函数参数

题目:有n个结构体变量,内含学生姓名、学号和三门课程的成绩。要求输出平均成绩最高的学生的全部信息。


实现的结果如下:


话不多说,直接代码解析!



第一步:定义和声明

//声明结构体变量类型
struct student
{
  char name[20];
  int num;
  float score[3];
  float average;
};
    //定义输入函数input
    void input(struct student stu[]);
    //因为比较过后要返回值,所以我们定义struct student的函数
  struct student max(struct student stu[]);
    //输出平均成绩最大的同学的信息,定义一个新的结构体变量stud来存放并输出
  void print(struct student stud);
    //定义结构体数组,用于存放输入的数据
  struct student stu[3];


第二步:输入函数

void input(struct student stu[])
{
  int i;
  printf("请录入信息:\n");
  for(i=0;i<3;i++)
  {
    printf("请输入学生姓名、学号、三科成绩:");   
scanf("%s%d%f%f%f",&stu[i].name,&stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
        //平均成绩需要计算,在输入时同时计算并记录平均成绩
    stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
  }
  printf("\n");
}


第三步:比较函数

struct student max(struct student stu[])
{
  int i,m=0;
  for(i=0;i<3;i++)
  {
        //用平均成绩进行比较
    if(stu[i].average>stu[m].average)
    {
            //记录这个同学的序号
      m=i;
    }
  }
    //返回这个同学的stu全部信息
  return stu[m];
}


第四步:输入函数

void print(struct student stud)
{
  printf("平均成绩最高的学生信息为:\n");
    //分开输出
  printf("\t\t\t姓名:%s\n\t\t\t学号:%d\n\t\t\t成绩:%f %f %f\n\t\t\t平均成绩:%f\n",\
  stud.name,stud.num,stud.score[0],stud.score[1],stud.score[2],stud.average);
}


完整代码:

#include<stdio.h>
struct student
{
  char name[20];
  int num;
  float score[3];
  float average;
};
int main()
{
  void input(struct student stu[]);
  struct student max(struct student stu[]);
  void print(struct student stud);
  struct student stu[3];
  input(stu);
  print(max(stu));
  return 0; 
} 
void input(struct student stu[])
{
  int i;
  printf("请录入信息:\n");
  for(i=0;i<3;i++)
  {
    printf("请输入学生姓名、学号、三科成绩:");
    scanf("%s%d%f%f%f",&stu[i].name,&stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
    stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
  }
  printf("\n");
}
struct student max(struct student stu[])
{
  int i,m=0;
  for(i=0;i<3;i++)
  {
    if(stu[i].average>stu[m].average)
    {
      m=i;
    }
  }
  return stu[m];
}
void print(struct student stud)
{
  printf("平均成绩最高的学生信息为:\n");
  printf("\t\t\t姓名:%s\n\t\t\t学号:%d\n\t\t\t成绩:%f %f %f\n\t\t\t平均成绩:%f\n",\
  stud.name,stud.num,stud.score[0],stud.score[1],stud.score[2],stud.average);
}

 


相关文章
|
1天前
|
算法 C语言
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-2
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
1天前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
3天前
|
存储 编译器 程序员
C语言:自定义类型 - 结构体 & 联合体 & 枚举
C语言:自定义类型 - 结构体 & 联合体 & 枚举
10 2
|
3天前
|
存储 编译器 C语言
C语言:字符函数 & 字符串函数 & 内存函数
C语言:字符函数 & 字符串函数 & 内存函数
11 2
|
6天前
|
存储 编译器 C语言
[C语言]自定义类型(结构体~枚举~联合体)
[C语言]自定义类型(结构体~枚举~联合体)
|
12天前
|
缓存 安全 编译器
【C 言专栏】C 语言函数的高效编程技巧
【5月更文挑战第1天】本文探讨了C语言中函数的高效编程技巧,包括函数的定义与作用(如代码复用和提高可读性)、设计原则(单一职责和接口简洁)、参数传递方式(值传递、指针传递和引用传递)、返回值管理、调用约定、嵌套与递归调用,以及函数优化技巧和常见错误避免。掌握这些技巧能提升C语言代码的质量和效率。
【C 言专栏】C 语言函数的高效编程技巧
|
12天前
|
存储 算法 程序员
【C言专栏】C 语言结构体的应用与实践
【4月更文挑战第30天】C语言中的结构体是自定义数据类型的关键,它组合不同类型的數據以创建新类型,尤其适合处理复杂对象如学生信息。通过定义结构体如`struct Student`,包含名字、学号和成绩,可以方便地实例化和访问成员。结构体在链表实现、函数参数传递和数组中都有广泛应用,如表示链表节点和处理批量数据。理解并熟练运用结构体对于C语言编程至关重要,能提升代码效率和可读性。
|
14天前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
|
14天前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
9月前
|
存储 C语言
【C语言】 条件操作符 -- 逗号表达式 -- []下标访问操作符,()函数调用操作符 -- 常见关键字 -- 指针 -- 结构体
【C语言】 条件操作符 -- 逗号表达式 -- []下标访问操作符,()函数调用操作符 -- 常见关键字 -- 指针 -- 结构体