(第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);
}

 


相关文章
|
17天前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
44 12
|
22天前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
109 14
|
26天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
56 10
|
26天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
44 9
|
26天前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
37 8
|
26天前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
45 6
|
26天前
|
存储 C语言
【C语言】输入/输出函数详解
在C语言中,输入/输出操作是通过标准库函数来实现的。这些函数分为两类:标准输入输出函数和文件输入输出函数。
189 6
|
26天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
59 6
|
1月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
60 4
|
存储 C语言
【C语言】 条件操作符 -- 逗号表达式 -- []下标访问操作符,()函数调用操作符 -- 常见关键字 -- 指针 -- 结构体
【C语言】 条件操作符 -- 逗号表达式 -- []下标访问操作符,()函数调用操作符 -- 常见关键字 -- 指针 -- 结构体