c语言结构体练习

  • 格式:doc
  • 大小:85.50 KB
  • 文档页数:4

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计实验报告

实验七结构体程序设计

一、实验目的

(1)掌握结构体类型的概念、定义和使用;

(2)掌握结构体数组、结构体指针的定义和使用;

二、实验内容

1、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。程序代码:

#include

struct mes

{ int sno;

char sname[20];

float grade1;

float grade2;

float sum;

float avg;

}student [5]; //定义结构体变量数组

int main()

{

int i,j,k;

struct mes temp;

printf("请输入五位学生的信息\n");

printf("学号\t姓名\t数学\t计算机\n");

for(i=0;i<5;i++)

{scanf("%d\t%s\t%f\t%f",&student[i].sno,student[i].sname,&s tudent[i].grade1,&student[i].grade2);student[i].sum=student[ i].grade1+student[i].grade2;student[i].avg=student[i].sum/2;

} //输入每位学生间隔的信息时运用Tab键 for(i=0;i<4;i++)

{k=i;

for(j=i+1;j<5;j++)

if(student[k].sum

k=j;

temp=student[k];student[k]=student[i];student[i]=temp;

}

printf("学生成绩的排序结果为:\n");

for(i=0;i<5;i++)

{printf("学号:%d,姓名:%s,数学成绩:%3.1f,计算机成:%3.1f:%3.1f,分:%3.1f\n",student[i].sno,student[i].sname,student[i].grade1 ,student[i].grade2,student[i].avg,student[i].sum);

} //显示五位同学的信息

return 0;

}

运行结果:

图1_1

2.定义一个结构体变量(包括年、月、日)。编写一个函数days,计算该日期在本年中是第几天(注意闰年问题)。由主函数将年月日传递给days函数,计算之后,将结果传回到主函数输出。

程序代码:

#include

struct Date

{

int day;

int month;

int year;

};

int main()

{ void days(struct Date date1,int *q);

struct Date date1;

struct Date *p;

int n;

printf("请输入年份:");

scanf("%d",&date1.year);

printf("请输入月份:");

scanf("%d",&date1.month);

printf("请输入日期:");

scanf("%d",&date1.day);

p=&date1;

days(*p,&n); //使指针指向变量n,存放计算的总天数

printf("%d年%d月%d日是该年的第%d天。\n",date1.year,date1.month,date1.day,n);

return 0;

}

void days(struct Date date1,int *q)

{ int month2;

if(date1.year%400==0 || (date1.year%100!=0 && date1.year%4==0)) month2=29; //判断为润年,其该年的二月为29天else month2=28;

switch(date1.month)

{

case 1 :*q=date1.day;break;

case 2:*q=31+date1.day; break;

case 3: *q=month2+31+date1.day; break;

case 4:*q=31*2+month2+date1.day; break;

case 5:*q=31*2+month2+30+date1.day;break;

case 6:*q=31*3+month2+30+date1.day; break;

case 7:*q=31*3+30*2+month2+date1.day;break;

case 8:*q=31*4+30*2+month2+date1.day;break;

case 9: *q=5*31+30*2+month2+date1.day;break;

case 10:*q=5*31+3*30+month2+date1.day; break;

case 11:*q=6*31+3*30+month2+date1.day;break;

case 12:*q=6*31+4*30+month2+date1.day;

} //把计算的总天数赋值给*p

}

运行结果: