C语言结构体与共用体过关题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级 考号 姓名_________________试场号______________座位号______________
装订线内不要答题
◆◆◆◆◆◆◆◆◆◆装◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆订◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆线◆◆◆◆◆◆◆
沅江市职业中专计算机专业《C 语言》试卷
结构体与共用体过关题
考生注意:本试卷共5大题,总分150 分,考试时间 90 分钟。 一、程序写结果题:本题共6题,每题5分,共30分。 1. 下面程序的输出是_______。 main()
{ enum em{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. 下面程序的输出结果是________。 struct ks
{ int a; int *b;}; main()
{ struct ks s[5],*p; int n=1,i;
for(i=0;i<5;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.下面程序的输出是 Struct ab{int a[2];char b;float c;}; typedef union { long x[2]; int y[7]; char z[8];
struct ab b[4]; } MY; main()
{ MY them[10];
printf("%d\n",sizeof(them));}
4. 字符ˊ0ˊ的ASCII 码的十进制数为48,且数组的第0个元素在低位,则
以下程序的输出结果是 。 main() { union
{ int b[4]; long k ;char c[4];} a,*s=&a ; s->b[0]=0x3738; s->b[1]=0x3635;
printf(〞%c\n 〞,s->c[1]);}
5.有以下程序输出结果是 struct stu
{int num;char name[10];int age; }; void fun(struct stu *p) { p++;
p->age=45;
strcpy(p->name,”liming ”); }
main()
{struct stu ss[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.设位段的空间分配由右到左,则以下程序的运行结果是 。 struct as
{ unsigned a : 2 ; unsigned b : 3 ; unsigned c : 4 ; } data ; main ( )
{ unsigned char x=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分。
1.以下函数creatlist用来建立一带头节点的单链表,链表的结构如下图所示,新的节点总是插入在链表的末尾。链表的头指针作为函数值返回。链表最后一个节点的next域放入NULL,作为链表结束的标志。data为字符型数据域,next为指针域。读入时字符以#表示输入结束(#不存入链表)。请填空。
struct node
{ char data;
struct node *next;
};
……
struct node * creatlist( )
{ struct node *h,*s,*r;
char ch;int i=1;
ch=getchar();
while (ch!=’#’)
{ s=(struct node*)malloc(sizeof(struct node));
s->data= ;
s->next=NULL;
if(i==1) h=s;
else ;
r=s;
i++;
ch=getchar();}
return h;}
2.某学习小组有10个人,每个人的信息包括:学号、姓名、班级和成绩。要求从键盘上输入他们的信息,并求出总成绩以及最高成绩者的信息。
#define NUM 10
#include “conio.h”
struct students
{ char no[7],name[9];
int class;
int score[5]; };
main() { struct student a[NUM],*stu;
int count,max=0,sum=0,j;
stu=a;
for(count=0;count { scanf(“%s”,stu[count].no); scanf(”%s”,stu[count].name); scanf(”%d”,&stu[count].class); sum=0; for(j=0;j<3;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;j<5;j++) printf(“%d ”,stu[max].score[j]); } 3.学生的记录由学号和成绩组成,N名学生的数据在主函数中输入结构体数组s中,函数fun(),的功能是,按分数的高低排列学生的记录,高分在前。 #include #define N 16 typedef struct{ char num[10]; int s ;}STREC; int fun (STREC a[]) {STU t; int i,j,k; for(i=0;i {k=i; for(j=i+1;j if( ) k=j; if(k!=i) {t=a[i];a[i]=a[k];a[k]=t;} }}