实验八 构造数据类型 下载本文

内容发布更新时间 : 2024/11/15 5:46:25星期一 下面是文章的全部内容请认真阅读。

实验八 构造数据类型

一、实验学时 4学时。

二、实验目的

1.掌握结构体类型变量和结构体类型指针的定义和使用。 2.掌握结构体类型数组的定义和使用。

3.理解单链表的相关概念,熟练掌握单链表的基本操作。

4.掌握共用体类型、枚举类型、用户自定义类型的定义和使用。

三、实验内容 1.阅读程序

(1)编辑并调试运行程序,分析程序运行结果。 #include struct student {

int number; char name[20]; };

void main() {

struct student stu;

printf(\请输入学生的信息:\

scanf(\ printf(\学生的信息为:\

printf(\

}

请输入学生的信息:1 Mike↙

①分析程序,写出程序运行结果:学生的信息为: 1 Mike

②能否将语句“printf(\%s\\n\”修改为“printf(\”。请说明理由。

不能,因为对结构体变量的使用是通过对其每个成员的引用来实现的。 ③如果将语句“struct student stu;”修改为: struct student stu,*pstu=&stu;

请应用指向运算符“->”完成学生信息的输入及输出。

scanf(\改为scanf(\&pstu-> name);

printf(\改为printf(\pstu->name);

(2)编程并调试运行程序,分析程序运行结果。 #include union data {

int a;

float b; char c; };

void main() {

union data d={65}; printf(\ printf(\ printf(\}

65 0

①分析程序,写出程序运行结果: 65 。

②能否将语句“union data d={ 65 };”修改为“union data d={ 65,3.14, 'F'};”?请说明理由。

不可以,因为对共用体变量进行初始化,仅限于对其第一个成员进行初始化,不是对其所有成员都赋初值。

2.编程练习 (1)定义一个结构体类型变量(包括年、月、日信息)。计算某日在本年度中是第几天? 分析:本题需要先构造一个结构体数据类型,其成员信息包括年、月、日等。 struct {

int year; int month; int day;

}date;

然后按照月份计算天数,可以采用switch多分支结构描述。同时,需要考虑输入年份值后,判断这一年是否为闰年。

输入样例: 请输入年、月、日信息:2014 10 08↙ 输出样例: 10月8日是2014年中的第281天 参考程序如下: #include struct {

int year; int month; int day; } date;

void main() {

int sum=0,leap;

printf(\请输入年、月、日信息:\

scanf(\ switch(date.month)/*先计算某月以前月份的总天数*/ {

case 1:sum=0; break; case 2:sum=31; break; case 3:sum=59; break; case 4:sum=90; break; case 5:sum=120; break; case 6:sum=151; break; case 7:sum=181; break; case 8:sum=212; break; case 9:sum=243; break; case 10:sum=273; break; case 11:sum=304; break; case 12:sum=334; break;

default:printf(\ }

sum=sum+date.day; /*再加上某天的天数*/

if(date.year@0==0||(date.year%4==0 && date.year0!=0)) /*判断闰年*/

leap=1; else

leap=0;

if(leap==1 && date.month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum++; printf(\月%d日是%d年中的第%d天\\n\}

(2)有3位学生,每位学生的信息包括学号、姓名、三门课成绩等。要求:通过键盘输入每位学生信息;输出每位学生三门课程总平均分;输出总分最高的学生信息(包括学号、姓名、三门课的成绩,总平均分)。

要求:用一个input函数输入3位学生数据;用一个average函数求总平均分;max函数找出总分最高的学生信息;每位学生的总平均分和总分最高的学生信息都在主函数main中输出。

#include #define N 3 struct student {

char num[7]; char name[8]; int score[3]; float average;