内容发布更新时间 : 2024/11/15 5:46:25星期一 下面是文章的全部内容请认真阅读。
实验八 构造数据类型
一、实验学时 4学时。
二、实验目的
1.掌握结构体类型变量和结构体类型指针的定义和使用。 2.掌握结构体类型数组的定义和使用。
3.理解单链表的相关概念,熟练掌握单链表的基本操作。
4.掌握共用体类型、枚举类型、用户自定义类型的定义和使用。
三、实验内容 1.阅读程序
(1)编辑并调试运行程序,分析程序运行结果。 #include
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
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
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
char num[7]; char name[8]; int score[3]; float average;