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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;
}
printf("\nResult: \n");
for(i=0;i<3;i++)
printf("%5s: %d\n",leader[i].name,leader[i].count);
for(i=0;i<N;i++)
{printf("%5s%10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%9d",stu[i].score[j]);
printf("\n");
}
}
2、#include<stdio.h>
struct
{int num;
scanf("%d",&stu[i].score[j]);
}
printf("\n");
}
print(stu);
return 0;
}
void print(struct student stu[6])
{int i,j;
printf("\n NO. name score1 score2 score3\n");
person[i].name,&person[i].sex,&person[i].job);
if (person[i].job=='s')
scanf("%d",&person[i].category.banji);
else if(person[i].job=='t')
scanf("%s",&person[i].category.position);
}
}
3、#include<stdio.h>
#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;
average+=stu[i].avr;
if (sum>max)
{max=sum;
maxi=i;
}
}
average=average/N;
printf(" NO. name score1 score2 score3 average\n");
for (i=0;i<N;i++)
{printf("%5s%10s",stu[i].num,stu[i].name );
{printf("score %d:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
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;
char name [10];
char sex;
char job;
union
{int banji;
char position[10];
}category;
}person[2];
int main()
{int i;
for(i=0;i<2;i++)
{scanf("%d %s %c %c",&person[i].num,
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。
四、算法描述及实验步骤
1、先定义N为5即有五个学生,建立结构体struct student,再定义字符型数组num和name、整型数组score。对print进行函数声明且定义i、j。再用for语句进行循环输出相应的num、Name、score。
for(i=0;i<N;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++)
福建农林大学金山学院实验报告
系(教研室):专业:年级:2014
实验课程:姓名:学号:实验室号:
计算机号:实验时间:指导教师签字:成绩:
实Fra Baidu bibliotek7:结构体和共用体
一、实验目的和要求
1.掌握结构体类型变量的定义和使用
2.掌握结构体类型数组的概念和应用
3.掌握共用体的概念与使用
二、实验内容和原理
1.编写一个函数print,输出一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num、name、score[3],用主函数输入这些记录,用print函数输出这些记录。
2.设有若干个人员的数据,其中有学生和老师。学生数据包括:姓名、号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。现要求把它们放在同一表格中,见图1。如果job项是t(教师),则第5项为position(职务)。如果job项是s,则第5项为class(班级)。要求输入人员的数据,然后再输出。为简化起见,只设两个人(一个学生,一个教师)。
printf("his scores 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].avr);
}
4、#include<string.h>
for(j=0;j<3;j++)
printf("%9.2f",stu[i].score[j]);
printf(" %8.2f\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);
#include<stdio.h>
struct person
{char name[20];
int count;
}leader[3]={"L",0,"Z",0,"F",0};
int main()
{int i,j;
char leader_name[20];
for(i=1;i<=10;i++)
{scanf("%s",leader_name);
附录:
1、#include<stdio.h>
#define N 5
struct student
{char num[6];
char name[8];
int score[4];
}stu[N];
int main()
{void print(struct student stu[6]);
int i,j;
for(i=0;i<N;i++)
4、先声明结构体类型struct Person、定义字符型数组name和整型count。定义原始数据leader[3]={"L",0,"Z",0,"Wang",0};定义整型i,j和字符型数组leadername,用for语句限制投票人总共i个为10人,和用for语句进行循环和if语句for(j=0;j<3;j++)if(strcmp(leadername,leader[j].name)==0)leader[j].count++;
2、先声明结构体struct,再定义int num;char name[10];char sex;char job;和共用体int banji;/char position[10];和结构体数总共2个;定义整型i,用for语句循环,以此先得到num,.name,sex,job,再用if语句的嵌套对于job字符的不同判断共用体需要放什么。最后用for语句循环和if语句来输出结果。
{printf("\ninput 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);
来得出相对候选人的得票数。
调试过程
第二题person[i].category.position应定义为字符串型而不是字符型。
五、实验结果
1、
2、
3、
4、
七、总结
通过这次的上机作业,知道有时需要自己创建一些数据类型,并用它来定义变量。能区分结构体和共用体之间的差别。引用结构体变量的方式。怎么在结构变量中的成员进行赋值、比较、输入和输出等操作。
else
printf("Input error!");
}
printf("\n");
printf("NO. name sexjob class/position\n");
for(i=0;i<2;i++)
{if(person[i].job=='s')
printf("%-6d%-10s%-3c%-3c%-6d\n",person[i].num,person[i].name,
person[i].sex,person[i].job,person[i].category.banji);
else
printf("%-6d%-10s%-3c%-3c%-6s\n",person[i].num,person[i].name,
person[i].sex,person[i].job,person[i].category.position);
3、先定义N为5即有5个学生。建立结构体struct student,再定义字符型数组num和name、浮点型数组score、avr。定义整型i,j,maxi;浮点型sum,max,average。用for语句分别各组输入num、name、score。再用for语句sum+=stu[i].score[j];stu[i].avr=sum/3.0;average+=stu[i].avr;求sum,average的值,和用if语句if(sum>max){max=sum;maxi=i;}来讲最高成绩者保存在maxi。最后输出全部学生成绩和最好的成绩。
return 0;
}
相关文档
最新文档