当前位置:文档之家› 厦门理工学院+C语言+实验8

厦门理工学院+C语言+实验8

《C语言程序设计》实验报告
实验序号:8 实验项目名称:结构体
学 号
姓 名
DEBUG
专业、班级
实验地点
指导教师
实验时间
一、实验目的及要求
1、掌握结构体变量的定义和使用;
2、掌握结构体数组的定义和使用;
3、了解结构指针的定义和使用
二、实验设备(环境)及要求
使用turbo c 2.0+windows系列操作系统的环境。
【实验提示】
(1)结构体定义
struct Student
{
int num;//学号
char name[20];//班级注意字节长度
char classname[20];//班级
float score[3];//三门课程成绩
float aver_score; //平均分
}
(2)数据组织提示:
在主函数中定义一个结构体数组。
{"zheng",32,8000}
};
int i;
for(i=0;i<5;i++)
{
printf("%s,%d,%.2lf\n",qian[i].name,qian[i].year,qian[i].sum);
if(qian[i].year>30) qian[i].sum=qian[i].sum+100;
float score[3];//三门课程成绩
float aver_score; //平均分
} STU,* pSTU;
说明如下三条语句的含义:
student stu1;
STU stu2;
pSTU pstu;
2.采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,初始化5名职工的信息,最后再对工作年限超过30年的职工加100元工资,然后分别输出工资变化之前和之后的所有职工的信息。
switch(date.month)
{
case 1:days=date.day;break;
case 2:days=date.day+31;break;
case 3:days=date.day+59;break;
case 4:days=date.day+90;break;
case 5:days=date.day+120;break;
char classname[20];
float score[3];
double aver_score;
}stu[5];
input()
{
int i;
for (i=0;i<=4;i++)
{
scanf("%d %s %s %f %f %f",&stu[i].num,&stu[i].name,&stu[i].classname,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
case 11:days=date.day+304;break;
case 12:days=date.day+334;break;
}
if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3)
days+=1;
printf("%d/%d is the %dth day in %d.\n",date.month,date.day,days,date.year);
}
2.
#include<stdio.h>
void main()
{
struct qian
{
char name[20];
long int year;
float sum;
}qian[]={
{"xnt",31,5000},
{"pmj",25,2500},
{"chen",30,10000},
{"xiong",31,5000},
三、实验内容与步骤
1.学生成绩管理:有5个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。从键盘输入5个学生数据,要求打印出每个学生三门课的平均成绩,以及每门课程平均分、最高分学生数据(包括学号、班级、姓名、三门课成绩,平均分)。
【实验要求】
(1)定义学生结构体。
(2)用一个函数实现5个学生数据的输入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。要求平均分和平均分最高的学生数据都在主函数种输出。
}
}
average()
{
int i;
for (i=0;i<=4;i++)
{
stu[i].aver_score=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
}
}
max()
{
int i,j=0;
for (i=1;i<=4;i++)
{
if (stu[i].aver_score>stu["%s,%d,%.2lf\n",qian[i].name,qian[i].year,qian[i].sum);
}
}
3.
#include<stdio.h>
struct
{
int year;
int month;
int day;
}date;
int main()
{
int days;
scanf("%d,%d,%d",&date.year,&date.month,&date.day);
return 0;
}
运行结果截图:
3.定义一个结构体变量(包括年、月、日)。计算某年某月某日是本年中第几天?注意闰年问题。
运行结果截图:
四、分析与讨论
对上机实践结果进行分析,上机的心得体会。
五、教师评语
签名:
日期:
成绩
附源程序清单:
1.
#include<stdio.h>
struct Student
{
int num;
char name[20];
case 6:days=date.day+151;break;
case 7:days=date.day+181;break;
case 8:days=date.day+212;break;
case 9:days=date.day+243;break;
case 10:days=date.day+273;break;
}
return(j);
}
void main()
{
int i,maxi;
input();
average();
for (i=0;i<=4;i++)
{
printf("%s %lf\n",stu[i].name,stu[i].aver_score);
}
maxi=max();
printf("%d %s %s %f %f %f %lf",stu[maxi].num,stu[maxi].name,stu[maxi].classname,stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].aver_score);
Student stu[20] //定义有20个变量的元素的结构体数组(根据需要确定数组的大小)。
(3)结构体数组使用
循环输入学生信息:
平均分计算函数,以数组名作参数
void averagescore(student stu[], int number)
{
int i;
for(i = 0; i<= number; i++)
{
………
}
return k; //返回最高平均分数组元素的下标
}
【测试数据】
自己设计一组测试数据。
运行结果截图:
【思考与扩展】
如果这样定义结构体
typedef struct Student
{
int num;//学号
char name[20];//姓名注意字节长度
char classname[20];//班级
{
Stu[i] = (stu[i].score[0]+ stu[i].score[1]+stu[i].score[2])/3.0
}
}
求平均分最高的学生
int averagescore(student stu[], int number)
{
int k = 0;
//查找最高平均分并记录在数组中的下标值
for( int i = 0; i<= number; i++)
相关主题