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

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

}}

相关文档
最新文档