华北水利水电C 语言实验11,华北水利水电大学C语言实验11.doc

华北水利水电大学C语言实验11

C语言程序设计实验报告

实验11、结构体程序设计

班级 2013156 学号 201315613 姓名 吴浩

【实验目的】

(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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值