C语言程序设计 实验报告7--结构体共用体

  • 格式:doc
  • 大小:61.50 KB
  • 文档页数:5

福建农林大学实验报告
系(教研室): 信息与机电工程系 专业: 机械设计制造及其自动化 年级: 2014
实验课程: C语言程序设计 姓名: 学号: 实验室号:B703
计算机号: 79 实验时间: 2015.11.24 指导教师签字: 成绩:

实验7:结构体和共用体
一、 实验目的和要求
1.掌握结构体类型变量的定义和使用
2.掌握结构体类型数组的概念和应用
3.掌握共用体的概念与使用
二、 实验内容和原理
1. 编写一个函数print,输出一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括
num、name、score[3],用主函数输入这些记录,用print函数输出这些记录。
2. 设有若干个人员的数据,其中有学生和老师。学生数据包括:姓名、号码、性别、职业、班级。教
师的数据包括:姓名、号码、性别、职业、职务。现要求把它们放在同一表格中,见图1。如果
job项是t(教师),则第5项为position(职务)。如果job项是s,则第5项为class(班级)。
要求输入人员的数据,然后再输出。为简化起见,只设两个人(一个学生,一个教师)。
num name sex job class

position
101 Li f s 501
102 Wang m t prof
图1
3. 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求输
出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。
4. 对候选人得票的统计程序。设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各
人得票结果。设有10人投票。

三、 实验环境
1. 硬件:PC机;
2. 软件:Windows操作系统、Visual C++ 6.0 。

四、 算法描述及实验步骤
参照实验辅导书
五、 调试过程
详细记录程序在调试过程中出现的问题及解决方法

六、 实验结果
第一题

.
第三题

第四题
4.

七.总结

对上机实验结果进行分析、上机的心得体会及改进意见。

附录:
第一题
#include
#define N5
struct student
{char num[6];
char name[8];
int score[4];
}stu[5];
void main()
{void print(struct student stu[6]);
int i,j;
for(i=0;i<5;i++)
{printf("\n input score of student%d:\n",i+1);
printf("NO.:");
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(stu);
}
void print(struct student stu[6])
{int i,j;
printf("\nNO.name score1 score2 score3\n");
for(i=0;i<5;i++)
{printf("%5s%10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%9d",stu[i].score[j]);
printf("\n");}
}

第三题
3. #include #include
#define N 5
struct student
{ char num[6];
char name[8];
float score[3];
float avr;
}stu[N];
int main ()
{int i,j,maxi;
float sum,max,average;
for(i=0;i{printf("input scores of student %d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{printf("score %d:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
average=0;
max=0;
maxi=0;
for(i=0;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=average/N;
printf(" NO. name score score2 score3 average\n");
for(i=0;i{ printf("%5s%10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%9.2f",stu[i].score[j]);
printf(" %8.2\n",stu[i].avr);
}
printf("average=%5.2f\n",average);
printf("The highest score is:student %s,%s\n",stu[maxi].num,stu[maxi].name);
printf("his score
are:.%6.2f, %6.2f, %6.2f,,average:%5.2f./n",stu[maxi].score[0] ,stu[maxi].score[1],stu[maxi].score[2],stu[maxi].a
vr);
}

第四题
4. #include"string.h"
main()
{
struct person
{char name[10];
int count;
};
struct person candi[3]={"li",0,"zhang",0,"wang",0};
int i,j;
char name[10];
printf("输入选票:\n");
for(i=1;i<=10;i++)
{scanf("%s",name);
for(j=0;j<3;j++)
if(strcmp(name,candi[j].name)==0)candi[j].count++;
}
printf("\n");
for(i=0;i<3;i++)
printf("%5s:%d\n",candi[i].name,candi[i].count);}