实验十一
实验项目名称:结构体与共用体
所使用的工具软件及环境:Visual C++ 6.0 一、实验目的:
1.掌握结构体的概念;
2.学会通过结构体成员来使用结构体; 3.正确使用结构体数组; 4.学会共用体成员值的输出。 二、预习内容:
教材《C语言程序设计教程》第8章。
三、实验内容:
1. 读懂并输入程序,完成填空后输出结果。
建立学习成绩单结构,并建立一个同学王林(wanglin)的记录。 #include
{struct grade /* 定义结构体类型 */ {int number;
char name[10]; int math;
int english; };
struct wanglin; /* 结构体变量 */
printf(\
scanf(\输入数据 printf(\ %d%s%d%d\\n\ wanglin.english); }
2.编写一个程序,处理5个学生的信息,每个学生的信息包括:学号、姓名、三门成绩。要求输出成绩表(包括每个学生的学号、姓名、三门成绩及平均分数),并输出平均分在前3名的学生的姓名及平均分。
处理5个学生的信息的参考程序: #include \struct STU { int sn; char name[20];
- 35 -
int score[3]; float average;
} students[5]={ {1,\ {2,\ {3,\ {4,\ {5,\ }; //5个学生数据初始化 void main() {
int i, j; struct STU t; for(i=0; i<5; i++) { for(j=0; j<3; j++)
students[i].average += students[i].score[j]; //三门课成绩和 students[i].average /= 3.0; //三门课成绩平均 }
for(i=0; i <4; i++) for(j=0; j<4-i; j++)
if(students[j].average t = students[j]; students[j] = students[j+1]; students[j+1] = t; // students[j]与 students[j+1]通过第三方t交换。 } printf( \输出平均分在前3名的学生的姓名及平均分:\\n\ for(i=0; i<3; i++) { printf(\ printf(\ } } 3.输入和运行以下程序: #include %union data - 36 - { int i[2]; int b; //vc中整型占4字节 char c[5]; //vc中字符型占1字节 }u; void main( ) { scanf(\ printf(\} 输入两个整数97 67给u.i[0]和u.i[l],分析运行结果。 四.结构体、共用体说明(作用、成员类型,初始值等): 1. 2. 3. 五、源程序补充后完整清单: 1. - 37 - 六.实验结果 1.运行结果(写出典型测试数据输入和输出): 2.运行结果(写出输出结果): 3.运行结果(分析运行结果) 成绩 指导教师签名 - 38 - 实验十二 实验项目名称:文件 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.掌握文件、缓冲文件系统、文件指针的概念。 2.学会使用文件的打开、关闭、读、写等文件操作函数。 二、预习内容: 教材《C语言程序设计教程》第10章。 三、实验内容: 1.建立一个程序,用于产生10组算式,每组算式包括一个两位数的加法、减法(要求被减数要大于减数),每一组为一行,将所有的算式保存到文本文件d:\\a.txt中。 程序提示: #include fp=fopen(\for(i=1;i<=10;i++) { a=rand()0;b=rand()0; // rand()是随机数函数 if(b<2) b=b+2; fprintf(fp,\ \ a=rand()0;b=rand()0; if(a fprintf(fp,\ \ fprintf(fp,\} fclose(fp); } 2.用记事本或WORD打开d:\\a.txt文件,查看文件内容是否正确 3.向d:\\a.txt文件追加10组算式,每组算式包括一个一位数的加法、减法。 程序提示:对1题程序进行适当修改(修改打开方式与循环语句)。 四、源程序清单(第3题) - 39 - 五、实验结果(d:\\a.txt中内容) 成绩 指导教师签名 - 40 -