资源描述
湖北理工学院C语言实验七
精品资料
实验七 结构体和共用体
实验课程名: C语言程序设计
专业班级: 15级工管1班 学号: 201540620104 姓名: 张润泽
实验时间: 12.19—12.23 实验地点: k4—508 指导教师: 吴桂芳
一、实验目的及要求
1. 掌握结构体类型变量的定义和使用;
2. 掌握结构体类型数组的概念和使用;
3. 掌握链表的概念,初步学会对链表进行操作;
4. 掌握共用体的概念与使用。
二、实验内容
1、编写input()和output()函数,输入,输出5个学生的数据记录。
程序源代码如下:
#define N 5
struct student
{
char num[6];
char name[8];
int score[4];
}stu[N];
input(struct student stu[])
{
int i,j;
for(i=0;i<N;i++)
{
printf("\n please input %d of %d\n",i+1,N);
printf("num: ");
scanf("%s",stu[i].num);
printf("name: ");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("score %d.",j+1);
scanf("%d",&stu[i].score[j]);
}
printf("\n");
}
}
print(struct student stu[])
{
int i,j;
printf("\nNo. Name Sco1 Sco2 Sco3\n");
for(i=0;i<N;i++)
{
printf("%-6s%-10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%-8d",stu[i].score[j]);
printf("\n");
}
}
void main()
{
input();
print();
}
解答:
(1) 运行结果:
(2)
(2)运行结果分析:
运行结果正确。
2、有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求打印出3门课总平均成绩,以及及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。
程序源代码如下:
#define N 5
struct student
{
char num[ 6 ];
char name[ 8 ];
int score[ 4 ];
float avr;
}stu[N];
void main()
{
int i,j,max,maxi,sum;
float average;
for(i=0;i<N;i++)
{
printf("\n please input %d of %d\n",i+1,N);
printf("num: ");
scanf("%s",stu[i].num);
printf("name: ");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("score %d.",j+1);
scanf("%d",&stu[i].score[j]);
}
printf("\n");
}
average=0;
max=0;
maxi=0;
for(i=0; i<N; i++ )
{
sum = 0;
for( j=0; j<3; j++ )
sum+=stu[ i ].score[ j ]
stu[ i ].avr=sum / 3.0;
average+= stu[ i ].avr;
if( sum > max ) { max=sum; maxi=i; }
}
average/=N;
printf("\nNo. Name Sco1 Sco2 Sco3 average\n"); /*print*/
for(i=0; i<N; i++)
{
printf("%-8s%-10s",stu[ i ].num, stu[ i ].name);
for( j=0; j<3; j++ )
printf ("%-8d", stu[ i ].score[ j ]);
printf (" %6.2f \n ", stu[ i ].avr);
}
printf ("average is %5.2f\n",average);
printf ("The best student is %s, total score is %d.",stu[maxi].name,max);
}
解答:
(1) 运行结果:
(2)运行结果分析:
运行结果正确。
3、使用结构体类型数组编写一个程序用来输入并显示教师的基本情况信息。教师的基本情况信息包括:姓名、性别、出生年月日、住址、电话、月收入。要求使用嵌套的结构体类型表示出生年月日,模拟输如下列两个教师的信息,并按下列格式输出在屏幕上。
姓名 性别 出生日期 住址 电话 月收入
1. 李四 女 1965年5月8日 莲花小区6号 7432156 1200.00
2. 王五 男 1972年8月9日 和平里12号 8654367 950.00
解答:
(1)源代码:
#include<stdio.h>
#include<string.h>
struct data
{
int year;
int month;
int day;
};
struct techer//结构体变量
{
char name[20];//姓名
char sex[4];//性别
struct data birthday;//出生日期
char addr[100];
int tel;
float revenue;
}techers[100];
int main()
{
char in;
int count = 0,i = 0;
while (1)
{
printf("请输入教师信息,确认按y,取消按n:");
scanf(" %c",&in);
if ((in == 'y') || (in == 'Y'))
{
printf("请输入教师姓名:");
scanf(" %s", techers[count].name);
printf("请输入教师性别:");
scanf(" %s", techers[count].sex);
printf("请输入教师出生日期(格式:xxxx.xx.xx):");
scanf("%d.%d.%d", &techers[count].birthday.year, &techers[count].birthday.month, &techers[count].birthday.day);
printf("请输入教师住址:");
scanf(" %s", techers[count].addr);
printf("请输入教师电话:");
scanf("%d", &techers[count].tel);
printf("请输入教师收入:");
scanf("%f", &techers[count].revenue);
count++;
}
else
{
break;
}
}
printf(" 姓名\t性别\t出生日期\t住址\t\t电话\t 月收入\n");
for (i = 0; i < count; i++)
{
printf("%d. %s\t%s\t%d年%d月%d日\t%s\t%d\t %.2f\n"
,i+1 ,techers[i].name, techers[i].sex
, techers[i].birthday.year, techers[i].birthday.month, techers[i].birthday.day
, techers[i].addr, techers[i].tel, techers[i].revenue);
}
}
(2)、运行结果:
(3)运行结果分析:
运行结果正确。
三、实验小结
1、结构体类型与基本数据类型的不同,它是复合数据类型。
2、结构体成员变量与普通变量的定义一样,可以是结构体变量。
仅供学习与交流,如有侵权请联系网站删除 谢谢10
展开阅读全文