C语言结构体与共用体过关题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

结构体与共用体过关题共4页第1页班级考号姓名_________________试场号______________座位号______________装订线内不要答题装订线沅江市职业中专计算机专业《C语言》试卷结构体与共用体过关题考生注意:本试卷共5大题,总分150分,考试时间90分钟。一、程序写结果题:本题共6题,每题5分,共30分。1.下面程序的输出是_______。main(){enumem{em1=3,em2=1,em3}x;char*aa[]={AA,BB,CC,DD};x=em2;printf(%s%s%s\n,aa[em1],aa[x],aa[em3]);}2.下面程序的输出结果是________。structks{inta;int*b;};main(){structkss[5],*p;intn=1,i;for(i=0;i5;i++){s[i].a=n;s[i].b=&s[i].a;n=n+3;}p=&s[1];printf(%d,%d\n,++(*p-b),*(s+2)-b);}3.下面程序的输出是Structab{inta[2];charb;floatc;};typedefunion{longx[2];inty[7];charz[8];structabb[4];}MY;main(){MYthem[10];printf(%d\n,sizeof(them));}4.字符ˊ0ˊ的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是。main(){union{intb[4];longk;charc[4];}a,*s=&a;s-b[0]=0x3738;s-b[1]=0x3635;printf(〞%c\n〞,s-c[1]);}5.有以下程序输出结果是structstu{intnum;charname[10];intage;};voidfun(structstu*p){p++;p-age=45;strcpy(p-name,”liming”);}main(){structstuss[3]={{01,zhang,20},{02,Wang,19},{03,zhao,18}};fun(ss+1);printf(“%d,%s,%d\n”,ss[2].num,ss[2].name,ss[2].age);}6.设位段的空间分配由右到左,则以下程序的运行结果是。structas{unsigneda:2;unsignedb:3;unsignedc:4;}data;main(){unsignedcharx=45;data.a=7;data.b=2;data.c=23;data.i=68;data.a=data.a&x;data.c=data.b^x;printf(“%d\n”,data.a+data.b+data.c);}二、程序填空题:本题共3题,每题10分,共30分。结构体与共用体过关题共4页第2页1.以下函数creatlist用来建立一带头节点的单链表,链表的结构如下图所示,新的节点总是插入在链表的末尾。链表的头指针作为函数值返回。链表最后一个节点的next域放入NULL,作为链表结束的标志。data为字符型数据域,next为指针域。读入时字符以#表示输入结束(#不存入链表)。请填空。structnode{chardata;structnode*next;};……structnode*creatlist(){structnode*h,*s,*r;charch;inti=1;ch=getchar();while(ch!=’#’){s=(structnode*)malloc(sizeof(structnode));s-data=;s-next=NULL;if(i==1)h=s;else;r=s;i++;ch=getchar();}returnh;}2.某学习小组有10个人,每个人的信息包括:学号、姓名、班级和成绩。要求从键盘上输入他们的信息,并求出总成绩以及最高成绩者的信息。#defineNUM10#include“conio.h”structstudents{charno[7],name[9];intclass;intscore[5];};main(){structstudenta[NUM],*stu;intcount,max=0,sum=0,j;stu=a;for(count=0;countNUM;count++){scanf(“%s”,stu[count].no);scanf(”%s”,stu[count].name);scanf(”%d”,&stu[count].class);sum=0;for(j=0;j3;j++){scanf(“%d”,&stu[count].score[j]);sum+=stu[count].score[j];stu[count].score[4]=sum;if();}}printf(“no:%s\n”,stu[max].no);printf(“name:%s\n”,stu[max].name);printf(“class:%s\n”,stu[max].class);for(j=0;j5;j++)printf(“%d”,stu[max].score[j]);}3.学生的记录由学号和成绩组成,N名学生的数据在主函数中输入结构体数组s中,函数fun(),的功能是,按分数的高低排列学生的记录,高分在前。#includestdio.h#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STRECa[]){STUt;inti,j,k;for(i=0;iN-1;i++){k=i;for(j=i+1;jN;j++)if()k=j;if(k!=i){t=a[i];a[i]=a[k];a[k]=t;}}}0…h结构体与共用体过关题共4页第3页main(){STRECs[N];inti;for(i=0;iN;i++)scanf();fun(s);for(i=0;iN;i++){if((i)%4==0)printf(\n);printf(%s%4d,s[i].num,s[i].s);}}三、程序改错题:本题共3题,每题10分,共30分。1.设有一个描述零件加工的数据结构为:零件号pname;工序号wnum;指针next;下面程序建立一个包含100个零件加工数据的单项链表。#includestdio.h#includestdlib.h#defineLENsizeof(structparts)typedefstructparts{charpname[10];intwnum;structparts*next;}AS;voidmain(){AS*head,*p,*q;inti;for(i=0;i100;i++){p=(AS*)malloc(sizeof(AS));scanf(“%s%d”,p-pname,&p-wnum);p-next=NULL;if(i==0)head=p;elsep-next=q;q=p;}p=head;while(p){printf(“%s,%d\n”,p-pname,p-wnum);p++;}}2.定义一个日期结构变量(由年、月、日3个整形数据组成),计算该日期是本年度的第几日。typedefstructDATA{intyear,month,day;}AB;intleap(inty){intflag=0;if(y%4==0&&y%100!=0||y%400==0)flag=1;return(flag);}main(){intdays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};structABdata;intk,sum;scanf(“%d,%d,%d”,&data.year,&data.month,&data.day);for(k=1,sum=0;kdata.month;k++)Sum+=days[k];sum+=data.day;if(k2)sum+=leap(year);printf(“%d”,sum);}3.下列给定程序中函数fun()的作用是求出已建立的单向链表结点(不包括头结点)数据域中(数据域中的值都大于0)的最大值,并且作为函数值返回。标记并改正fun()函数中的两处错误#includestdio.htypedefstructaa{intdata;structaa*next;}NODE;intfun(NODEh){intmax=-1;NODE*p;p=h-next;while(p!=NULL){if(p-datamax)max=p-data;p=h-next;}returnmax;}NODE*createlink()/*建立返回头结点的链表*/{……结构体与共用体过关题共4页第4页……}main(){NODE*head;intm;head=creatlink();m=fun(head);printf(\nTheRESULT:%d\n,m);}四、编程题:本题共2题,共30分。1.五只猴子一起摘了一堆桃子,因为太累,决定先睡一觉再分。过了不知多久,来了一只猴子,它见别的猴子没来,便将一堆桃子平均分成5份,结果多了一个,就将多的这个吃了,拿走其中的一堆。又过了不知多久,第二只猴子来了,它不知道有一个同伴已经来过,还以为自己是第一个,便将地上的桃子平均分成5份,发现也多了一个,同样吃了这一个,拿走其中的一堆。第3只,第4只,第5只猴子都是这样......,问这5只猴子至少摘了多少个桃子?(提示:此题的关键是某数减1后能分成5份,且能分5次)2.一个工人工资管理系统,其内容包括:姓名,基本工资,奖金,实发工资。共有50名工人,编程:输入工人的全部信息,在函数fun1()中算出每名工人的实发工资,在函数fun2()中把信息存入文件“c:\ab.txt”中,并在主函数中输入输出所有工人的全部信息。typedefstructab{charname[10];floatgz[3];}MES;五、维护题(30分)1.在系统中DVD刻录机不刻录光盘,请写出解决思路。(10分)2.某人的电脑装有一台usb接口的激光打印机,而他想在word中打印文档时发现不能打印,请写出解决故障的分析思路(10分)3.分析下列故障产生的主要原因(10分)1显示器显示时花屏2硬件设备安装后,系统异常(如黑屏、死机不启动等)。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功