资源描述:
《结构体练习题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.试利用结构体类型编制一程序,实现输入5个学生的学号,数学和语文成绩。然后计算并输出每个人的学号和平均成绩。2.已知链表结点结构如下,假设动态链表已经建立,请编写删除给定学号的结点的函数。(只编写删除子函数即可)3.编写函数实现动态链表的建立。链表结点结构如下,要求在主函数中将你所建立的链表输出到屏幕上。4.有10个学生,每个学生的信息包括学号、姓名、3门课的成绩,从键盘输入10个学生数据存入结构体数组中,要求输出个人总分最高的学生的信息(包括学号、姓名、3门课成绩、总分)。5.链表的结点数据类型如下:
2、structnode{ intdata; structnode*next;};链表的建立和输出函数如下,编写将第i个结点删除的函数,并完善主函数,调试运行整个程序。structnode*creat(){ intx; structnode *h,*s,*r; h=(structnode*)malloc(sizeof(structnode)); r=h; scanf("%d",&x); while(x!=-1) { s=(structnode*)malloc(sizeof(structn
3、ode)); s->data=x; r->next=s; r=s; scanf("%d",&x); } r->next=NULL; returnh;}voidprint(structnode*h) //打印函数{ structnode*p; p=h->next; if(p==NULL) printf("listisempty!"); else { while(p!=NULL) { printf("%4d",p->data
4、); p=p->next; } }}1.试利用结构体类型编制一程序,实现输入一个学生的数学期中和期末成绩。然后计算并输出其平均成绩。2.试利用指向结构体的指针编制一程序,实现输入三个学生的学号、数学期中和期末成绩,然后计算其平均成绩并输出成绩表。3.有一个unsignedlong型整数,现要分别将其前2个字节和后2个字节作为两个unsignedint型整数输出(设一个int型数据占2个字节),试编一函数partition实现上述要求。要求在主函数中输入该long型整数,
5、在函数partition中输出结果。4.编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num、name、score[3],用主函数输入这些记录,用print函数输出这些记录。用结构体共用体来实现。5.有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩(指全体学生所有成绩的平均值),以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。用结构体来实现。6.有一个结构体变量stu,内含学生学号、姓
6、名和3门课的成绩。要求在main函数中赋以值,在另一函数print中将它们打印输出。用结构体变量作函数参数。7.对候选人得票的统计程序。设有3个候选人,有20个人对其进行投票,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。用结构体的方法实现。8.定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题。 9.请删除已知链表中的指定结点。要求删除的结点数据从键盘输入。#defineNULL 0structstudent{ longnum; floatscore;
7、 structstudent*next;};main(){ structstudenta,b,c,*head,*p; a.num=99101;a.score=89.5; b.num=99103;b.score=90; c.num=99107;c.score=85; head=&a; a.next=&b; b.next=&c; c.next=NULL; p=head; do{ printf("%ld%5.1f",p->num,p->score); p=p->next;
8、}while(p!=NULL); del();/*请完成此函数来删除某一结点*/} 答案:略1.请在已知链表中插入某一指定结点。要求插入的结点数据从键盘输入,顺序按学号升序插入。#defineNULL 0structstudent{ longnum; intscore; structstudent*next;};main(){ structstudenta,b,c,*head,*p; a.n