




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章 位域、联合、枚举、定义类型及预处理功能一、选择题1有以下程序#include #define f(x) (x*x)void main() int i1, i2;i1=f(8)/f(4) ; i2=f(4+4)/f(2+2);printf(%d, %dn,i1,i2);程序运行后的输出结果是_。A)64, 28 B)4, 4 C)4, 3 D)64, 64答案:C2有以下程序#include #define P 3void F(int x)return(P*x*x);void main() printf(%dn,F(3+5); 程序运行后的输出结果是_。A)192 B)29 C)25 D)编译出错答案:D3以下叙述中正确的是_。A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间答案:D4若有以下说明和定义 union dt int a;char b;double c;data;以下叙述中错误的是_。A)data的每个成员起始地址都相同B)变量data所占的内存字节数与成员c所占字节数相等C)程序段:data.a=5;printf(%fn,data.c);输出结果为5.000000D)data可以作为函数的实参答案:C5有以下程序:#includeunion pw int i; char ch2; a;void main() a.ch0=13; a.ch1=0; printf(%dn,a.i); 程序的输出结果是 。(注意: ch0在低字节,ch1在高字节。) A) 13 B) 14 C) 208 D) 209答案:A6. 设有如下枚举类型定义:enum language Basic=3,Assembly,Ada=100,COBOL,Fortran;枚举量Fortran的值为 A) 4 B) 7 C) 102 D) 103答案:C7. 下面程序的输出是A) 32 B) 16 C) 8 D) 24#include typedef union long x2;int y4;char z8;MYTYPE;MYTYPE them;void main() printf(%dn, sizeof(them);答案:B8字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是#include void main() union int i2; long k; char c4; r,*s=&r;s-i0=0x39;s-i1=0x38;printf(%cn,s-c0);A) 39 B) 9 C) 38 D) 8答案:B9以下对枚举类型名的定义中正确的是A)enum a=one,two,three; B)enum a one=9,two=1,three;C)enum a=one,two,three; D)enum a one,two,three;答案:B10.以下程序的输出结果是#include union myun struct int x, y, z; u;int k; a;void main() a.u.x=4; a.u.y=5; a.u.z=6; a.k=0;printf(%dn,a.u.x);A) 4 B) 5 C) 6 D) 0答案:D11有以下程序#include void main() union unsigned int n;unsigned char c;u1;u1.c=A;printf(%cn,u1.n);执行后输出结果是A) 产生语法错 B) 随机值 C) A D) 65答案:A12若有以下说明和定义union dt int a;char b;double c;data;以下叙述中错误的是_。A)data的每个成员起始地址都相同B)变量data所占的内存字节数与成员c所占字节数相等C)程序段:data.a=5;printf(%fn,data.c);输出结果为5.000000D)data可以作为函数的实参答案:C13. 在宏定义#define PI 3.14中,宏名PI代替一个 。A) 单精度数 B) 双精度数 C) 常量 D) 字符串答案:D14. 以下在任何情况下计算平方数时都不会引起二义性的宏定义是 。A) #define POWER(x) x*x B) #define POWER(x) (x)*(x)C) #define POWER(x) (x*x) D) #define POWER(x) (x)*(x)答案:D15. 若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是 。A) p=2*(int*)malloc(sizeof(int); B) p=(int*)malloc(2*sizeof(int);C) p=(int*)malloc(2*2); D) p=(int*)calloc(2,sizeof(int);答案:A16. 下面定义数组的四种方式中,正确的是 。A) int n=10; B) #define N 10int arrayn; int arrayN;C) int array(10); D) int array0;答案:B17. 下面程序的运行结果是 。#include #define ADD(x) x+xvoid main() int m=1,n=2,k=4; int sum=ADD(m+n)*k; printf(sum=%d,sum);A) sum=9 B) sum=10 C) sum=12 D) sum=24答案:C18.若有以下宏定义#include #define N 2#define Y(n) (N+1)*n)void main() int z; z=2*(N+Y(4); printf(%dn,z);A) 28 B) 24 C) 38 D) 26答案:A19 对以下定义和语句,语句正确的是 。union data int i;char c;float f;a;int n=3;A)a=5 B)a=2,a,1.2;C)printf (“%dn”,a.i=n); D)n=a;答案:C20. 以下对枚举类型名的定义中正确的是 。A)enum a=sum,mon,tue; B)enum a sum=9,mon= -1,tue;C)enum a=“sum”, “mon”,”tue”; D)enum a “sum”,”mon”,”tue”;答案:B21. 对以下说明,位段数据的引用中不能得到正确数值的是 。struct packed unsigned one:1;unsigned two:2; unsigned three:3;unsigned four:4;data;A)data.one=4 B)data.two=3C)data.three=2 D)data.four=1答案:A22执行下面的程序后,a的值是 。#include #define SQR(X) X*Xvoid main( ) int a=10,k=2,m=1;a/=SQR(k+m);printf(%dn,a);A)10 B)2 C)9 D)0答案:B23.以下关于枚举的叙述不正确的是 。A枚举变量只能取对应枚举类型的枚举元素表中元素 B可以在定义枚举类型时对枚举元素进行初始化C枚举元素表中的元素有先后次序,可以进行比较 D枚举元素的值可以是整数或字符串答案:D24若有以下说明和定义 typedef int *INTEGER; INTEGER p,*q;以下叙述正确的是 。(A)p是int型变量 (B)p是基类型为int的指针变量 (C)q是基类型为int的指针变量 (D)程序中可用INTEGER代替int类型名答案:B25. # define能做简单的代替,用宏代替计算多项式5*x*x+4*x+3之值的函数f( )正确的定义是 。(A)#define f(x) 5*x*x+4*x+3 (B)#define f 5*x*x+4*x+3 (C)#define f(x) (5*(x)*(x)+4*(x)+3) (D)#define (5*x*x+4*x+3) f(x)答案:C二、填空题1C语言提供_【_1_】_预处理的功能,有利于程序的可移植性,增加程序的灵活性,其命令以符号_【_2_】_开头。答案:【1】编译;【2】#2使用宏名代替一个_【_1_】_,可以减少程序中重复书写某些字符串的工作量,提高程序的可读性和可移植性。答案:【1】字符串3在预处理宏定义时,不做_【_1_】_检查,只有在编译已被宏展开后的源程序时才报错。答案:【1】语法4宏名的有效范围为_【_1_】_之后到本源文件结束。答案:【1】定义5可以用_【_1_】_命令终止宏定义的作用域。答案:【1】#undef6带参数的宏定义在展开时,不仅进行字符串的替换,还要进行_【_1_】_的替换。答案:【1】参数7宏名不是变量,故无类型,其参数也无类型。所以在宏定义时,字符串可以是_【_1_】_类型的数据。,答案:【1】任何8宏替换不占运行时间,只占_【_1_】_时间。答案:【1】编译9“文件包含”处理是指将另外的文件包含到_【_1_】_之中,它可以减少程序设计人员的重复劳动,通过_【_2_】_命令来实现。答案:【1】本文件;【2】#include10在#include命令中,文件名可以用双引号或尖括号括起来,两者的区别是:用_【_1_】_时,系统先在引用被包含文件的源文件所在的文件目录中寻找要包含的文件,若找不到,再按系统指定的标准方式检索其它目录;而用_【_2_】_时,不检查源文件所在的文件目录而直接按系统标准方式检索文件目录。答案:【1】双引号;【2】尖括号11被包含文件与其所在的源文件,在预编译后成为_【_1_】_个文件。答案:【1】一12一般情况下,源程序中所有的行都参加编译。如果希望对其中一部分内容只在满足一定条件时才进行编译,这就是_【_1_】_。答案:【1】条件编译13使几个不同的变量共占同一段内存的结构,称为_【_1_】_。答案:【1】共用体14共用体变量所占的内存长度等于_【_1_】_。答案:【1】最长的成员的长度15在C编译中,对枚举元素按常量处理,故称为枚举常量,不能对它们_【_1_】_。答案:【1】赋值三、编程题1. 编一函数move实现左右循环移位。调用为:move(v,n),v为要循环位移的数, n为位移的位数。n0右移。如n=4,要右移4位;n=-3,要左移3位。答 要点:(1)左右循环移位函数原型unsigned m (unsigned v,int n);函数内定义unsigned b,c;如果n0,即要求左移,左移n位相当于右移16+n位,这样左移可统一为右移处理。令b=vn;将v右移n位,高n位补0。将b、c按位或,得函数值。(2)主函数按十六进制形式输入输出待移位的数,n为int 类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025物业服务合同补充协议书
- 蜂胶历史教学课件
- 青少年与城市文化创意产业的互动-洞察及研究
- 空间大数据在测绘中的创新应用-洞察及研究
- 薪酬管理课件文档制作
- 2025年度大型企业集团专用电信服务合同协议模板
- 2025年度城市轨道交通铝合金门窗安装与安全防护合同
- 二零二五版小微企业抵押担保融资协议
- 二零二五年度文化中心装修与设施配置合同
- 二零二五年航空货运代理销售合同-航空货运代理保险代理协议
- 会场布置策划书会场布置策划书八篇
- 信访稳定考核办法
- (6.7)-胰腺癌和壶腹周围癌的外科治疗
- (完整版)食品安全自查、从业人员健康管理、进货查验记录、食品安全事故处置保证食品安全规章制度
- 2023年高考江苏卷生物试题答案及解析
- GB/T 9652.2-1997水轮机调速器与油压装置试验验收规程
- 国有企业职务职级管理办法
- 工程监理见证取样方案
- 医德医风及行风建设课件
- 闽教版小学英语单词分类
- 市政工程质量通病及防治手册(PPT)
评论
0/150
提交评论