C语言程序设计实验报告实验七结构体和联合体程序设计
《C语言程序设计》实验报告
实验七、结构体和联合体程序设计
学号 姓名 一、实验目的
掌握结构体类型变量和数组、共用体类型变量和数组以及枚举类型变量的定义和使用。
掌握链表的基本,初步学会对链表进行操作。
通过编程和调试程序,加深对结构体和共用体概念的理解。
实验前复习结构体类型、共用体类型和枚举类型的概念。
二、实验内容及步骤:
1、编程利用结构体实现输入若干学生的学号、姓名和成绩,求平均分以及高于平均分的同学。
要求:1 求平均分的过程由函数实现。 2)打印格式为:学生学号 姓名 成绩,且其过程由函数实现。
程序代码:
#include
#include
typedef struct student int num;
char name[20];
int score;
struct student *next; ST,*STU;
STU createlink int n int i; STU p,q,head; if n 0 return NULL ; head STU malloc sizeof ST ; printf "input datas:\n" ; scanf "%d %s %d",&head- num,head- name,&head- score ; p head; for i 1;i n;i++ q STU malloc sizeof ST ; scanf "%d %s %d",&q- num,q- name,&q- score ; p- next q; p q; p- next NULL; return head ; void list STU head STU p head; int i 0; double sum 0; for ;p! NULL;p p- next sum sum+ double p- score ; i++; p head; while p! NULL if double p- score sum/i printf "高于平均的学生为:%d %s %d\n",p- num,p- name,p- score ; p p- next; double average STU head
int i 0; double sum 0; for ;head! NULL;head head- next sum sum+ double head- score ; i++; return sum/i ; void main STU h;
int n;
double ave;
printf "input number of node:" ;
scanf "%d",&n ;
h createlink n ;
ave average h ;
printf "平均成绩为:%lf\n",ave ;
list h ; 对程序进行测试,并观察运行结果。将程序的运行情况写在下面。
『运行结果:』
input number of node:10
input datas:
1 A 98
2 B 87
3 C 76
4 D 67
5 E 89
6 F 54
7 G 88
8 H 57
9 I 68
10 J 94
平均成绩为:77.800000
高于平均成绩的学生为:
1 A 98
2 B 87
5 E 89
7 G 88
10 J 94
Press any key to continue
2、编写一个程序,利用联合变量,求任意输入字符的ASCII码值。例如:输入”A”则输出65。
程序代码:
#include
union ASCII char ch;
int t;
p;
void main printf "请输入一个字符:" ;
scanf "%c",&p.ch ;
printf "%d\n",p.ch ; 对程序进行测试,并观察运行结果。将程序的运行情况写在下面。
『运行结果:』
请输入一个字符:A
65
Press any key to continue
三、问题讨论
1、答:当对结构体变量赋值时,可以整体引用,一般情况下不能对结构体变量整体引用,只能引用其成员。?答:结构体也是和数组类似的一种构造类型。但和数组不同的是结构体的各个分量可以分别具有不同的数据类型。四、实验总结
4