结构体与共用体.docx
- 文档编号:24746173
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:17
- 大小:18.51KB
结构体与共用体.docx
《结构体与共用体.docx》由会员分享,可在线阅读,更多相关《结构体与共用体.docx(17页珍藏版)》请在冰豆网上搜索。
结构体与共用体
试卷编号:
825
所属语言:
C语言
试卷方案:
结构体与共用体
试卷总分:
90分
共有题型:
5种
━━━━━━━━━━━━━━
一、填空共5题(共计10分)
━━━━━━━━━━━━━━
第1题(2.0分)题号:
205
结构体是不同数据类型的数据集合,作为数据类型,
必须先说明结构体【1】,再说明结构体变量.
答案:
=======(答案1)=======
类型
第2题(2.0分)题号:
208
将函数funl的入口地址赋给指针变量p的语句是【1】.
答案:
=======(答案1)=======
p=funl;
第3题(2.0分)题号:
232
设有以下结构类型说明和变量定义,且sizeof(int)=2,则变量a在内存所占字节数是【1】.
structstud
{charnum[6];
ints[4];
doubleave;
}a,*p;
答案:
=======(答案1)=======
22
第4题(2.0分)题号:
345
若在程序中用到"strlen()"函数时,应在程序开头写上包含命令#include"【1】".
答案:
=======(答案1)=======
string.h
第5题(2.0分)题号:
803
预处理命令行都必须以【1】号开始.
答案:
=======(答案1)=======
#
━━━━━━━━━━━━━━━━━
二、单项选择共20题(共计40分)
━━━━━━━━━━━━━━━━━
第1题(2.0分)题号:
464
以下描述中,正确的是()。
A:
预处理是指完成宏替换和文件包含中指定的文件的调用
B:
预处理指令只能位于C源文件的开始
C:
C源程序中凡是行首以#标识的控制行都是预处理指令
D:
预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备
答案:
C
第2题(2.0分)题号:
472
下列程序运行结果为:
#defineP3
#defineS(a)P*a*a
main()
{intar;
ar=S(3+5);
printf("\n%d",ar);
}
A:
192
B:
29
C:
27
D:
25
答案:
B
第3题(2.0分)题号:
488
当定义一个结构体变量时,系统分配给它的内存是()。
A:
各成员所需内存量的总和
B:
结构中第一个成员所需内存量
C:
结构中最后一个成员所需内存量
D:
成员中占内存量最大者所需的容量
答案:
A
第4题(2.0分)题号:
489
设有如下定义:
structsk{inta;floatb;}data,*p;
若要使p指向data中的a域,正确的赋值语句是()。
A:
p=(structsk*)&data.a;
B:
p=(structsk*)data.a;
C:
p=&data.a;
D:
*p=data.a;
答案:
A
第5题(2.0分)题号:
490
以下对枚举类型名的定义中正确的是()。
A:
enuma={sum,mon,tue};
B:
enuma{sum=9,mon=-1,tue};
C:
enuma={"sum","mon","tue"};
D:
enuma{"sum","mon","tue"};
答案:
B
第6题(2.0分)题号:
491
在下列程序段中,枚举变量c1,c2的值依次是()。
enumcolor{red,yellow,blue=4,green,white}c1,c2;
c1=yellow;c2=white;
printf("%d,%d\n",c1,c2);
A:
1,6
B:
2,5
C:
1,4
D:
2,6
答案:
A
第7题(2.0分)题号:
545
C程序中的宏展开是在()。
A:
编译时进行的
B:
程序执行时进行的
C:
编译前预处理时进行的
D:
编辑时进行的
答案:
C
第8题(2.0分)题号:
546
C语言中,定义结构体的保留字是()。
A:
union
B:
struct
C:
enum
D:
typedef
答案:
B
第9题(2.0分)题号:
547
结构体类型的定义允许嵌套是指()。
A:
成员是已经或正在定义的结构体型
B:
成员可以重名
C:
结构体型可以派生
D:
定义多个结构体型
答案:
A
第10题(2.0分)题号:
548
对结构体类型的变量的成员的访问,无论数据类型如何都可使用
的运算符是()。
A:
.
B:
->
C:
*
D:
&
答案:
A
第11题(2.0分)题号:
549
相同结构体类型的变量之间,可以()。
A:
相加
B:
赋值
C:
比较大小
D:
地址相同
答案:
B
第12题(2.0分)题号:
550
使用共用体变量,不可以()。
A:
节省存储空间
B:
简化程序设计
C:
进行动态管理
D:
同时访问所有成员
答案:
D
第13题(2.0分)题号:
551
enuma{sum=9,mon=-1,tue};
定义了()。
A:
枚举变量
B:
3个标识符
C:
枚举数据类型
D:
整数9和-1
答案:
C
第14题(2.0分)题号:
552
在定义构造数据类型时,不能()。
A:
说明变量
B:
说明存储类型
C:
初始化
D:
末尾不写分号
答案:
D
第15题(2.0分)题号:
557
若有int*p=(int*)malloc(sizeof(int));则向内存申请到内存
空间存入整数123的语句为()。
A:
scanf("%d",p);
B:
scanf("%d",&p);
C:
scanf("%d",*p);
D:
scanf("%d",**p);
答案:
A
第16题(2.0分)题号:
558
若有inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句为()。
A:
printf("%d",*(a+5));
B:
printf("%d",p[5]);
C:
printf("%d",*(p+5));
D:
printf("%d",*p[5]);
答案:
D
第17题(2.0分)题号:
562
int(*p)[6];它的含义为()。
A:
具有6个元素的一维数组
B:
定义了一个指向具有6个元素的一维数组的指针变量
C:
指向整型指针变量
D:
指向6个整数中的一个的地址
答案:
B
第18题(2.0分)题号:
563
char*match(charc)是()。
A:
函数定义的头部
B:
函数预说明
C:
函数调用
D:
指针变量说明
答案:
A
第19题(2.0分)题号:
571
staticstruct{inta1;floata2;chara3;}a[10]={1,3.5,'A'};
说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存
储方式,其中被初始化的下标变量是()。
A:
a[1]
B:
a[-1]
C:
a[0]
D:
a[10]
答案:
C
第20题(2.0分)题号:
701
以下叙述中不正确的是()。
A:
预处理命令行都必须以#号开始
B:
在程序中凡是以#号开始的语句行都是预处理命令行
C:
C程序在执行过程中对预处理命令行进行处理
D:
以下是正确的宏定义#defineIBM_PC
答案:
C
━━━━━━━━━━━━━━━━
三、程序填空共1题(共计10分)
━━━━━━━━━━━━━━━━
第1题(10.0分)题号:
73
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
用结构体调用的方法编程。
要求输入A,B,C,D,E,F五
个元素的数值,并按从大到小的顺序输出。
-------------------------------------------------------*/
#include
#defineNsizeoftbl/sizeoftbl[0]/*取得数组有多少个元素*/
intA,B,C,D,E,F;
structele
{
charvn;
/***********SPACE***********/
int【?
】;
}tbl[]={{'A',&A},{'B',&B},{'C',&C},{'D',&D},{'E',&E},{'F',&F}},t;
main()
{
intk,j,m;
/***********SPACE***********/
for(k=0;k<【?
】;k++)
{
printf("Enterdatafor%c\n",tbl[k].vn);
scanf("%d",tbl[k].vp);
}
m=N-1;
while(m>0)
{
for(k=j=0;j /***********SPACE***********/ if(*tbl[j].vp<【? 】) { t=tbl[j]; tbl[j]=tbl[j+1]; tbl[j+1]=t; k=j; } /***********SPACE***********/ 【? 】; } for(k=0;k printf("%c(%d)",tbl[k].vn,*tbl[k].vp); printf("\n"); } 答案: =======(答案1)======= *vp =======(答案2)======= N =======(答案3)======= *tbl[j+1].vp =========或========= *tbl[j+1].vp =======(答案4)======= m=k ━━━━━━━━━━━━━━━━ 四、程序改错共2题(共计20分) ━━━━━━━━━━━━━━━━ 第1题(10.0分)题号: 139 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 下题是一段有关结构体变量传递的程序. ------------------------------------------------------*/ #include structstudent { intx; charc; }a; f(structstudentb) { b.x=20; /**********FOUND**********/ b.c=y; printf("%d,%c",b.x,b.c); } main() { a.x=3; /**********FOUND**********/ a.c='a' f(a); /**********FOUND**********/ printf("%d,%c",a.x,b.c); } 答案: =======(答案1)======= b.c='y'; =======(答案2)======= a.c='a'; =======(答案3)======= printf("%d,%c",a.x,a.c); 第2题(10.0分)题号: 217 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 用指针作函数参数,编程序求一维数组中的最大和最小的 元素值. ------------------------------------------------------*/ #include #defineN10 /***********FOUND***********/ voidmaxmin(intarr[],int*pt1,*pt2,n) { inti; /***********FOUND***********/ *pt1=*pt2=&arr[0]; for(i=1;i { /***********FOUND***********/ if(arr[i]<*pt1)*pt1=arr[i]; if(arr[i]<*pt2)*pt2=arr[i]; } } main() { intarray[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; /***********FOUND***********/ *p1=&a;*p2=&b; maxmin(array,p1,p2,N); printf("max=%d,min=%d",a,b); } 答案: =======(答案1)======= voidmaxmin(intarr[],int*pt1,int*pt2,intn) =========或========= maxmin(intarr[],int*pt1,int*pt2,intn) =========或========= voidmaxmin(int*arr,int*pt1,int*pt2,intn) =======(答案2)======= *pt1=*pt2=arr[0]; =========或========= *pt1=*pt2=*(arr+0); =========或========= *pt2=*pt1=arr[0]; =======(答案3)======= if(arr[i]>*pt1)*pt1=arr[i]; =========或========= if(*(arr+i)>*pt1)*pt1=arr[i]; =========或========= if(*pt1<*(arr+i))*pt1=arr[i]; =========或========= if(*pt1 =======(答案4)======= p1=&a;p2=&b; ━━━━━━━━━━━━━━━━ 五、程序设计共1题(共计10分) ━━━━━━━━━━━━━━━━ 第1题(10.0分)题号: 226 /*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 编写函数实现两个数据的交换,在主函数中输入任 意三个数据,调用函数对这三个数据从大到小排序。 ------------------------------------------------*/ #include voidwwjt(); voidswap(int*a,int*b) { /**********Program**********/ /**********End**********/ } main() { intx,y,z; scanf("%d%d%d",&x,&y,&z); if(x if(x if(y printf("%3d%3d%3d",x,y,z); wwjt(); } voidwwjt() { FILE*IN,*OUT; intm,n; inti[2]; IN=fopen("in.dat","r"); if(IN==NULL) { printf("ReadFILEError"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("WriteFILEError"); } for(n=0;n<3;n++) { for(m=0;m<2;m++) { fscanf(IN,"%d",&i[m]); } swap(&i[0],&i[1]); fprintf(OUT,"%d\n",i[0]); fprintf(OUT,"%d\n",i[1]); } fclose(IN); fclose(OUT); } 答案: ---------------------- intk; k=*a; *a=*b; *b=k; ---------------------- ==================================================成绩分析================================================== 没有试卷分析信息......
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 共用