c语言结构体练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 } 运行结果: