华北水利水电大学C语言实验11
C语言程序设计实验报告
实验11、结构体程序设计
班级 156 学号 15613 姓名 吴浩
【实验目的】
(1)掌握结构体类型的概念、定义和使用;
(2)掌握结构体数组、结构体指针的定义和使用;
【实验内容及步骤】
1、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序,排序用函数实现。
【程序代码】:
#include
#define N 5
struct Student
{int num;char name[20];float score[2];float aver;float add;};
int main()
{int i;
void input(struct Student stu[]);
void sort(struct Student stu[]);
struct Student stu[N],*p=stu;
input(p);
printf("各个同学的平均成绩和总成绩分别是:\n");
for(i=0;i
{printf("%s\n%5.2f\n%5.2f\n",stu[i].name,stu[i].aver,stu[i].add);
printf("\n");}
sort(p);printf("按成绩高低排序后为:\n");for(i=0;i
printf("学号:%d 姓名:%s 总成绩:%5.2f\n",stu[i].num,stu[i].name,stu[i].add);
return 0;}
void input(struct Student stu[])
{int i;
printf("请输入各个学生的信息:学号、姓名、两门课的成绩:\n");
for(i=0;i
{scanf("%d%s%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1]);stu[i].aver=(stu[i].score[0]+stu[i].score[1])/2;
stu[i].add=(stu[i].score[0]+stu[i].score[1]);
}}
void sort(struct Student stu[])
{struct Student t;
int i,j,k;
for(i=0;i
{k=i;
for(j=i+1;j
if(stu[j].add>stu[k].add)
k=j;
t=stu[k];stu[k]=stu[i];stu[i]=t;
}}
【运行结果】
2.定义一个结构体变量(包括年、月、日)。编写一个函数days,计算该日期在本年中是第几天(注意闰年问题)。由主函数将年月日传递给days函数,计算之后,将结果传回到主函数输出。
【程序代码】
#include
typedef struct
{ int year;
int month;
int day;}date;
int days(date d)
{ int num = 0;
int m, da, i;
if ((d.year %4 == 0 && d.year %100!=0)||(d.year % 400 == 0))
{
for (m = 1; m <= d.month ; m++)
{
if (m == 2)
da = 29;
else if (m==4||m==6||m==8||m==11) da = 30;
else da = 31; for (i = 1; i <= da;i++)
{
num++;
if ( m == d.month && i == d.day )
return num; } } }
else
{
for (m = 1; m <= d.month ; m++)
{
if (m == 2) da = 28;
else if (m==4||m==6||m==8||m==11)
da = 30;
else
da = 31;
for (i = 1; i <= da;i++)
{
num++;
if ( m == d.month && i == d.day )
return num;
}}}}
int main()
{ d