仅供借鉴、仅供借鉴、仅供借鉴(整理了一下大一C语言每个章节的练习题、没得题目、只有程序了)

1 、实训名称

实训8:结构体和共用体

2 、实训目的及要求

1、了解结构体,共用体的概念
2、熟练掌握结构体,共用体的定义、赋值、使用。
3 、学会正确使用结构体变量

3、源代码及运行截图


  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<String.h>
  4. #define N 10
  5. struct student{
  6. char name[N];
  7. int score;
  8. int no; //学号
  9. };
  10. void input(struct student stu[N]);//输入函数
  11. void sort(struct student stu[N]);//排序函数
  12. void aver(struct student stu[N]);//求分函数
  13. void locating(struct student stu[N]);//查找函数
  14. void input(struct student stu[N]){
  15. int i;
  16. for(i=0;i<N;i++)
  17. {
  18. printf("请输入第%d名学生的信息:",i+1);
  19. scanf("%s%d%d",&stu[i].name,&stu[i].no,&stu[i].score);
  20. }
  21. }
  22. void sort(struct student stu[N]){ //冒泡排序
  23. int i,k;
  24. struct student temp;
  25. for(k=1;k<N;k++)
  26. for(i=N-1;i>=k;i--)
  27. if(stu[i].score>stu[i-1].score)
  28. {
  29. temp=stu[i];
  30. stu[i]=stu[i-1];
  31. stu[i-1]=temp;
  32. }
  33. printf("\t排名\t姓名\t学号\t成绩\n");
  34. for(i=0;i<N;i++)
  35. {
  36. printf("\t%-8d%-8s%-8d%-8d\n",i+1,stu[i].name,stu[i].no,stu[i].score);
  37. }
  38. }
  39. void aver(struct student stu[N]){
  40. int max=stu[0].score;
  41. int min=stu[0].score;
  42. double average;
  43. int i,sum=0;
  44. for(i=0;i<N;i++)
  45. {
  46. if(stu[i].score>max)
  47. {
  48. max=stu[i].score;
  49. }
  50. }
  51. for(i=0;i<N;i++)
  52. {
  53. if(stu[i].score<min)
  54. {
  55. min=stu[i].score;
  56. }
  57. }
  58. for(i=0;i<N;i++)
  59. {
  60. sum+=stu[i].score;
  61. }
  62. average=sum/10.0;
  63. printf("这10名学生的平均分为:%.2lf,最高分为:%d,最低分为:%d",average,max,min);
  64. }
  65. void locating(struct student stu[N]){
  66. int i,ch;
  67. printf("请输入你要查找的学号:");
  68. scanf("%d",&ch);
  69. for(i=0;i<N;i++)
  70. if(ch==stu[i].no)
  71. {
  72. printf("查找到的学生,信息如下\n");
  73. printf("\t姓名\t学号\t成绩\n");
  74. printf("\t%-8s%-8d%-8d\n",stu[i].name,stu[i].no,stu[i].score);
  75. }
  76. }
  77. int main()
  78. {
  79. int i;
  80. struct student stu[N];
  81. input(stu);
  82. printf("\n成绩经过排序后为:\n");
  83. sort(stu);
  84. printf("\n");
  85. locating(stu);
  86. printf("\n");
  87. aver(stu);
  88. getchar();
  89. getchar();
  90. return 0;
  91. }

4 、小结

通过本次实验,结构体可以存储不同类型的数据。可以将一类事物的相关信息写在一个结构体中便于操作。在对结构体进行赋值时需要用到循环结构。结构体可以当做特殊的数组进行对待,基本的操作和数组相似。

C语言------结构体和共用体的更多相关文章

  1. 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符

    [源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...

  2. 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型

    函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...

  3. __c语言__结构体、共用体、枚举__笔记

    2017-09-16 21:14:09 结构体,共用体,枚举 1.结构体 把不同的类型整合成一个有机的整体,以便于引用,这个类型就叫做结构体 1)结构体变量的定义方式(3种)和引用成员变量: 定义一个 ...

  4. C语言程序设计(十二) 结构体和共用体

    第十二章 结构体和共用体 当需要表示复杂对象时,仅使用几个基本数据类型显然是不够的 根本的解决方法是允许用户自定义数据类型 构造数据类型(复合数据类型)允许用户根据实际需要利用已有的基本数据类型来构造 ...

  5. [C#.NET 拾遗补漏]14:使用结构体实现共用体

    在 C 和 C# 编程语言中,结构体(Struct)是值类型数据结构,它使得一个单一变量可以存储多种类型的相关数据.在 C 语言中还有一种和结构体非常类似的语法,叫共用体(Union),有时也被直译为 ...

  6. C++程序设计之结构体,共用体,枚举和typedef

    [1]结构体的基本功 注意结构体里面可以有很多东西,可以结构体里面包含结构体 #include<iostream> using namespace std; struct Date { i ...

  7. C++面试常见问题——13结构体与共用体的sizeof

    结构体与共用体的sizeof 结构体的sizeof 结构体变量占用的内存空间大小通常是其基本类型的大小,但是由例外(字节对齐机制) struct S1{ char c[5]; int a; doubl ...

  8. 07.C语言:结构体、共用体、枚举

    一.结构体 是一种复合的数据类型,由多个不同类型的数据(为结构体的成员)组成的集合. 在c语言中没有给出结构体这种类型具体的形式(名称),但是给出类定义该结构体类型的方法(格式). 在使用结构体类型时 ...

  9. C语言:结构体,共用体

    结构体: 一个变量,存储不同类型的数据项共用体:一个变量,存储不同类型的数据项,相同的内存位置,存储不同的数据类型 #include <stdio.h> #include <stri ...

随机推荐

  1. DolphinScheduler 功能开发:⼯作流级别任务空跑(后端),测试工作流是否正确执行...

    点击上方 蓝字关注我们 ✎ 编 者 按 在今年由中国科学院软件研究所主办的开源软件所供应链点亮计划-开源之夏活动中,有不少小伙伴提交了关于 DolphinScheduler 的项目,本期是来自成都信息 ...

  2. Java SE 11 新增特性

    Java SE 11 新增特性 作者:Grey 原文地址:Java SE 11 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new ...

  3. C++ 漫谈哈夫曼树

    1. 前言 什么是哈夫曼树? 把权值不同的n个结点构造成一棵二叉树,如果此树满足以下几个条件: 此 n 个结点为二叉树的叶结点 . 权值较大的结点离根结点较近,权值较小的结点离根结点较远. 该树的带权 ...

  4. ArkUI 组件 Props

    在上一篇博客文章中简单地提到了 Props . 在使用 Props 时需要注意到一个点,子组件从寄主页面传递过来的值是单向的,也就是子组件不能直接修改传递下来的值,即单向性. 以上篇文章定义的头像组件 ...

  5. 关于Copy On Write Array List,你会安全使用么

    摘要:JDK中提供了CopyOnWriteArrayList类,简称COW.为了将读取的性能发挥到极致,CopyOnWriteArrayList读取是完全不用加锁的,并且更厉害的是:写入也不会阻塞读取 ...

  6. PHP代码审计学习-php安全基础

    PHP代码审计-php安全基础 php.ini选项 register_globals php>=4.2.0,php.ini 的 register_globals 选项的默认值预设为 Off,当 ...

  7. 【Java】学习路径46-两种创建多线程的方法、以及在匿名内部类创建线程

    两种方法: 1.创建一个继承自Thread的线程类,然后再main(不限)中构造这个线程类对象.方法在之前讲过. 2.创建一个使用Runnable接口的线程类,然后在main(不限)中构造这个Runn ...

  8. 部署k8s的heapster监控

    Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS heapster监控目前官网已经不更新,部署学习使用 heapster: 收集监控数据 influxdb:数 ...

  9. 前端Long类型丢失精度问题

    有时候后端向前端传输Long类型,数字过长会出现丢失精度的问题 比如后端传来的是这样一个长数字串 那么前端的弹窗显示的是 ![](https://img2022.cnblogs.com/blog/22 ...

  10. c++的一些笔记

    --const 的一些用法 1,修饰指针 const int *p=....   可以改变指针所指的位置,但不能改变指向位置的值. 2,修饰变量 int const * p=....  可以改变指向位 ...