欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】二级C语言分类模拟题546及答案解析.doc

    • 资源ID:1325575       资源大小:89.50KB        全文页数:18页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】二级C语言分类模拟题546及答案解析.doc

    1、二级 C语言分类模拟题 546及答案解析(总分:65.00,做题时间:90 分钟)一、选择题(总题数:40,分数:65.00)1.有以下程序 #includestdio.h struct S int a,b;data2=10,100,20,200; main() struct S p=data1; printf(“%d/n“,+(p.a); 程序运行后的输出结果是_。(分数:2.00)A.21B.11C.20D.102.有以下程序(说明:字母 A的 ASCII码值是 65): #includestdio.h void fun(char*s) while(*s) if(*s%2)printf(“

    2、%c“,*s); s+; main() char a()=“BYTE“; fun(a); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.BTB.YEC.YTD.BY3.可在 C程序中用作用户标识符的一组标识符是_。(分数:2.00)A.void define WORDB.as_b3 _123 IfC.For abc caseD.2c DO SIG4.下面 for语句的循环次数为_。 for(x=1, y=0; (y!=19) x+);(分数:2.50)A.是无限循环B.循环次数不定C.最多执行 6次D.最多执行 5次5.下面描述中,不属于软件危机表现的是_。(分数

    3、:1.50)A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高6.下列叙述中正确的是_。(分数:1.00)A.对长度为 n的有序链表进行查找,最坏情况下需要的比较次数为 nB.对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C.对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D.对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)7.以下选项中不能用作 C程序合法常量的是_。(分数:2.00)A.1,234B./123C.123D.“/x7G“8.若函数调用时的实参为变量时,以下关于函数形

    4、参和实参的叙述中正确的是_。(分数:2.50)A.函数的实参和其对应的形参共占同一存储单元B.形参只是形式上的存在,不占用具体存储单元C.同名的实参和形参占同一存储单元D.函数的形参和实参分别占用不同的存储单元9.对关系 S和关系 R进行集合运算,结果中既包含关系 S中的所有元组也包含关系 R中的所有元组,这样的集合运算称为_。(分数:2.50)A.并运算B.交运算C.差运算D.除运算10.有以下程序 #includestdio.h main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2)continue; x+; x+; p

    5、rintf(“x=%d/n“,x); 程序执行后的输出结果是_。(分数:2.00)A.x=8B.x=4C.x=6D.x=1211.设有条件表达式:(EXP)?i+;j-,则以下表达式中(EXP)完全等价的是_。(分数:2.00)A.(EXP=0)B.(EXP!=0)C.(EXP=1)D.(EXP!=1)12.以下定义语句中正确的是_。(分数:1.00)A.char a=“A“b=“B“;B.flo at a=b=10.0;C.int a=10,*b=D.float *a,b=13.以下程序的输出结果是_。 main() int a=3; printf(“%d/n“, (a+a-=a*a); (

    6、分数:2.50)A.-6B.12C.0D.-1214.有三个关系 R、S 和 T如下: R A B C a 1 2 b 2 1 c 3 1 S A D c 4 T A B C D c 3 1 4 则由关系 R和 S得到关系 T的操作是_。(分数:2.00)A.自然连接B交C.投影D并15.请读程序段: char str=“ABCD“,*p=str, printf(“%d/n“,*(p+4); 程序段的输出结果是_。(分数:1.00)A.68B.0C.字符“D“的地址D.不确定的值16.以下程序段中有语法错误的是_。(分数:2.00)A.fun(char aa1()while(*aa)print

    7、f(“%c“,*aa+);B.fun(chatr*aa)while(aa0)printf(“%c“,*aa+);C.main()char*aa=“Hello!“;while(*aa)printf(“%c“,*aa+);D.main()char aa10=“Hello!“;while(*aa)printf(“%c“,*aa+); 17.有以下程序: main() int e=2,4,6,8,10,y=0,x,*p; p=a1; for(x=1;x3;x+)y+=px; printf(“%d/n“,y); 程序运行后的输出结果是_。(分数:2.00)A.10B.11C.14D.1518.有以下程序

    8、: #include stdio.h int a =4; int f(int n) int t = 0; static int a=5; if (n%2) int a=6; t + = a+ +; else int a=7; t + = a+ +; return t + a+ +; main( ) int s=a, i=0; for (; i2;i+ +) s + = f(i); printf(“%d/n“, s) ; 程序运行后的输出结果是_。(分数:2.50)A.36B.24C.32D.2819.有以下程序段: FILE*fp; if(fp=fopen(“test.txt“,“w“)=NU

    9、LL) printf(“不能打开文件!“); exit(0); else printf(“成功打开文件!“); 若指定文件 test.txt不存在,且无其他异常,则以下叙述错误的是_。(分数:1.00)A.输出“不能打开文件!”B.输出“成功打开文件!”C.系统将按指定文件名新建文件D.系统将为写操作建立文本文件20.有以下程序: #include stdio.h main( ) int a =2,4,6,8, *p=a,i; for(i=0;i4;i+) ai=*p+; printf(“%d/n“,a2); 程序的输出结果是_。(分数:1.00)A.2B.8C.4D.621.以下程序段中的变

    10、量已正确定义 for(i=0;i4;i+,i+) for(k=1;k3;k+);printf(“*“); 程序段的输出结果是_。(分数:1.00)A.* *B.*C.*D.*22.有以下程序: #include stdio.h void f(int x,int n) if(n1) f( printf(“%d,“,x0); else printf(“%d,“,x 0); main() int z6=1,2,3,4,5,6; f(z,6); printf(“/n“); 程序的运行结果是_。(分数:1.00)A.6,5,4,3,2,1,B.1,1C.1,1,1,1,1,1,D.1,2,3,4,5,6

    11、,23.以下叙述中错误的是_。(分数:2.00)A.C语言的可执行程序是由一系列机器指令构成的B.用 C语言编写的源程序不能直接在计算机上运行C.通过编译得到的二进制目标程序需要连接才可以运行D.在没有安装 C语言集成开发环境的机器上不能运行 C源程序生成的.exe 文件24.下列对于线性链表的描述中正确的是 _。(分数:2.00)A.存储空间不一定是连续,且各元素的存储顺序是任意的B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且各前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的25.以下定义数组的语句中错误的是_。(分数:2

    12、.00)A.int num24=1,2,3,4,5,6B.int num3=1,2,3,4,5,6);C.int num=1,2,3,4,5,6;D.int num4=1,2,3,4,5,6;26.下列选项中不能作为 C语言合法常量的是 _ 。(分数:1.00)A.“cd“B.0.1e+6C.“/a“D.“/011“27.设有 int x=11;则表达式(x+*1/3)的值是_。(分数:1.00)A.3B.4C.11D.1228.若有以下类型说明语句: char w;int x;flooat y,z; 则表达式 w*x+z-y的结果为_类型。(分数:1.00)A.floatB.charC.in

    13、tD.double29.现在有以下定义,int a;double b;float c;char k;则下面的表达式 a/b+c-k值的类型为:(分数:1.00)A.intB.doubleC.floatD.char30.若有以下程序: #include stdio.h int f(int m) static int n=0; int a=2; n+ +; a+ +; return n+m+a; main( ) int k; for.(k=0; k4; k+ +) printf(“%d,“, f(k); 则程序的输出结果是_。(分数:2.00)A.3,5,7,9,B.4,7,10,13,C.4,5

    14、,6,7,D.4,6,8,10,31.有以下定义:“int a; long b; double x, y;”,则以下选项中正确的表达式是_。(分数:1.00)A.a%(int x-y)B.a=x!=y;C.(a*y)%bD.y=x+y=x32.已知下列函数定义: fun(int *b,int c,int n,int data) int k; for(k=0;km*n;k+) *b=data; b+; 则调用此函数的正确写法是(假设变量 a的说明为 int a50)_。(分数:2.50)A.fun(*a,4,5,1);B.fun(C.fun(int*)a,4,5,1);D.fun(a,4,5,1

    15、);33.设 q1和 q2是指向一个 int型一维数组的指针变最,k 为 float型变量,下列小能正确执行的语句是 _ 。(分数:2.00)A.k=*q1*(*q2);B.q1=k;C.q1=q2;D.k=*q1+*q2;34.设有如下关系表: (分数:2.50)A.T=R/SB.T=RSC.T=RSD.T=RS35.下列判断正确的是 _ 。(分数:1.00)A.chara=“ABCD“;等价于 char*a;*a=“ABCD“;B.char str10=“ABCD“;等价于 char str10;str=“ABCD“;C.char*s=“ABCD“;等价于 char s;*s=“ABCD“

    16、;D.charc5=“ABCD“,d5=“ABCD“;等价于 char c5=d5=“ABCD“;36.在软件设计中不使用的工具是_。(分数:1.00)A.系统结构图B.程序流程图C.PAD图D.数据流图(DFD 图)37.某二叉树中有 n个度为 2的结点,则该二叉树中的叶子结点数为_。(分数:1.00)A.n+1B.n-1C.2nD.n/238.有以下程序 #include stdio.h main() int n,*p=NULL; *p= printf(“Input n:“); scanf(“%d“, printf(“output n:“); printf(“%d/n“,p); 该程序试图

    17、通过指针 p为变量 n读入数据并输出,但程序有多处错误,以下语句正确的是_。(分数:1.00)A.int n,*p=NULL;B.*p=C.scanf(“%d“,39.以下关于 C语言数据类型使用的叙述中错误的是_。(分数:1.00)A.若只处理“真”和“假”两种逻辑值,应使用逻辑类型B.若要保存带有多位小数的数据,可使用双精度类型C.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D.整数类型表示的自然数是准确无误差的40.在数据结构中,从逻辑结构上看可以分成_。(分数:2.00)A.动态结构和静态结构B.线性结构和非线性结构C.内部结构和外部结构D.紧凑结构和非紧凑结构二

    18、级 C语言分类模拟题 546答案解析(总分:65.00,做题时间:90 分钟)一、选择题(总题数:40,分数:65.00)1.有以下程序 #includestdio.h struct S int a,b;data2=10,100,20,200; main() struct S p=data1; printf(“%d/n“,+(p.a); 程序运行后的输出结果是_。(分数:2.00)A.21 B.11C.20D.10解析:解析 声明 data 是结构体型 S的数组。初始化时 data0.a=10; data0.b=100;data1.a=20;data1.b=200。主函数中 p=data1 ;

    19、 即 p.a=data1.a;p.b=data1.b;执行语句printf(“%dn“,+(p.a); 打印输出时 p.a 先增 1再打印。即 p.a = data1.a=20,先增 1等于 21,因此程序运行结果是 21。2.有以下程序(说明:字母 A的 ASCII码值是 65): #includestdio.h void fun(char*s) while(*s) if(*s%2)printf(“%c“,*s); s+; main() char a()=“BYTE“; fun(a); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.BTB.YE C.YTD.BY

    20、解析:解析 本题中执行 fun(a)时,会取字符串 a的第一个字母 B,因为字母 B的 ASCII码值为 66,所以不会输出字母 B,函数只会输出 ASCII码值为奇数的字母,字母 Y的 ASClI码值为 89,字母 T的 ASCII码值为 84,字母 E的 ASCII码值为 69,因此 B选项正确。3.可在 C程序中用作用户标识符的一组标识符是_。(分数:2.00)A.void define WORDB.as_b3 _123 If C.For abc caseD.2c DO SIG解析:4.下面 for语句的循环次数为_。 for(x=1, y=0; (y!=19) x+);(分数:2.50

    21、)A.是无限循环B.循环次数不定C.最多执行 6次D.最多执行 5次 解析:解析 本题考查 for循环的使用。根据条件考虑 x的取值变化,x 从 1取到 5,可以循环 5次,但并不知道 y如何变化,有可能出现 y=19提前跳出循环的情况,所以最多执行 5次。5.下面描述中,不属于软件危机表现的是_。(分数:1.50)A.软件过程不规范 B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高解析:解析 软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的

    22、增长。因此本题答案为 A。6.下列叙述中正确的是_。(分数:1.00)A.对长度为 n的有序链表进行查找,最坏情况下需要的比较次数为 nB.对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C.对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n) D.对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)解析:解析 二分法查找只适用于顺序存储的有序表,对于长度为 n的有序线性表,最坏情况只需比较log 2 n次。7.以下选项中不能用作 C程序合法常量的是_。(分数:2.00)A.1,234 B./123C.123D.“/x7

    23、G“解析:解析 选项 A中的 1,234在两侧加双引号才是 C程序的合法常量。8.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是_。(分数:2.50)A.函数的实参和其对应的形参共占同一存储单元B.形参只是形式上的存在,不占用具体存储单元C.同名的实参和形参占同一存储单元D.函数的形参和实参分别占用不同的存储单元 解析:解析 在 C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。9.对关系 S和关系 R进行集合运算,结果中既包含关系 S中的所有元组也包含关系 R中的所有元组,这样的集合运算称为_。(分数:2.50)A.并运算 B.交运算C.差运算D.除运算解析:

    24、解析 关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。10.有以下程序 #includestdio.h main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2)continue; x+; x+; printf(“x=%d/n“,x); 程序执行后的输出结果是_。(分数:2.00)A.x=8 B.x=4C.x=6D.x=12解析:解析 本题考查的是 for循环的嵌套。外循环的循环变量 i从 0递增到 1会循环 2次,内循环的循环变量 j从 0递增到 3会循环 4次。但是内循环中有一条

    25、if语句,每当 j%2为真,即 j为奇数时会跳过下面的 x+;语句,所以 4次内循环只有 2次执行到 x+;语句,再加上外循环中包含的 2条 x+;语句,所以每次外循环会使 x自增 4次,2 次外循环下来 x的值为 8。故应该选择 A。11.设有条件表达式:(EXP)?i+;j-,则以下表达式中(EXP)完全等价的是_。(分数:2.00)A.(EXP=0)B.(EXP!=0) C.(EXP=1)D.(EXP!=1)解析:12.以下定义语句中正确的是_。(分数:1.00)A.char a=“A“b=“B“;B.flo at a=b=10.0;C.int a=10,*b= D.float *a,b

    26、=解析:解析 在 A选项中,定义了两个 char型的变量,但是在这两个变量之间应该加上逗号;在 B选项中,没有对 b进行定义,只是对 b进行了赋值,因此是错误的;在 D选项中,把一个指针赋值给了一个float型的变量,因此是错误的。13.以下程序的输出结果是_。 main() int a=3; printf(“%d/n“, (a+a-=a*a); (分数:2.50)A.-6B.12C.0D.-12 解析:解析 本题可以写成:a+a+(a-(a*a),因为*的优先级最高,其次是-=的,+的优先级最低,所以先求 a-=a*a=9,表达式变为 a+a+-=9,即 a=a-9=-6,再次变为 a+(-

    27、6)=-12,故选择 D选项。14.有三个关系 R、S 和 T如下: R A B C a 1 2 b 2 1 c 3 1 S A D c 4 T A B C D c 3 1 4 则由关系 R和 S得到关系 T的操作是_。(分数:2.00)A.自然连接 B交C.投影D并解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据 T中元组可以判断关系 R和 S做的是自然连接操作,答案为A。15.请读程序段: char str=“ABCD“,*p=str, printf(“%d/n“,*(p+4); 程序段的输出结果是_。(分

    28、数:1.00)A.68B.0 C.字符“D“的地址D.不确定的值解析:解析 在对字符数组赋字符串值时,系统会自动在字符串的末尾加上一个字符串结束标志“/0”,故指向字符数组的指针 p的*(p+4)的值为“/0”。由于“/0”的编码值就是 0,所以本题输出为 0。16.以下程序段中有语法错误的是_。(分数:2.00)A.fun(char aa1()while(*aa)printf(“%c“,*aa+);B.fun(chatr*aa)while(aa0)printf(“%c“,*aa+);C.main()char*aa=“Hello!“;while(*aa)printf(“%c“,*aa+);D.

    29、main()char aa10=“Hello!“;while(*aa)printf(“%c“,*aa+); 解析:17.有以下程序: main() int e=2,4,6,8,10,y=0,x,*p; p=a1; for(x=1;x3;x+)y+=px; printf(“%d/n“,y); 程序运行后的输出结果是_。(分数:2.00)A.10B.11C.14 D.15解析:解析 指针变量 p指向数组元素 a1,则 p1即为 a2,p2即为 a3,执行第一次 for循环时,y=y+p1=0+a2=6,第二次执行 for循环,y=y+p2=6+a3=14,此时 x为 3,for 循环条件不满足,退

    30、出循环,输出 y的值为 14。18.有以下程序: #include stdio.h int a =4; int f(int n) int t = 0; static int a=5; if (n%2) int a=6; t + = a+ +; else int a=7; t + = a+ +; return t + a+ +; main( ) int s=a, i=0; for (; i2;i+ +) s + = f(i); printf(“%d/n“, s) ; 程序运行后的输出结果是_。(分数:2.50)A.36B.24C.32D.28 解析:解析 在主函数 main( )中定义了两个变量

    31、 s和 i,同时给 s赋初值。a=4,i 赋初值 0。当 i=0时。执行“s+=f(i);”语句,调用 f()并将 i的初值 0传递给形参 n。首先执行 if语句中的条件:n%2,若条件为假,则执行 else下的语句,a=7,t=7+0=7,使用 return返回 t,t=7+(a+)=7+5=12,此时 a运算完后自增 1,变为 6;返回主函数中,s=4+12=16。当 i=1时,执行“s+=f(i);”语句,调用 f()并将 i的初值传递给形参 n。首先执行 if语句中的条件:n%2,条件为真,执行 if下面的语句,t=0,a=6 t=0+6=6,使用 return返回 t,t=6+6=1

    32、2,返回主函数中,s=16+12=28。最后输出的结果为 28。因此 D选项正确。19.有以下程序段: FILE*fp; if(fp=fopen(“test.txt“,“w“)=NULL) printf(“不能打开文件!“); exit(0); else printf(“成功打开文件!“); 若指定文件 test.txt不存在,且无其他异常,则以下叙述错误的是_。(分数:1.00)A.输出“不能打开文件!” B.输出“成功打开文件!”C.系统将按指定文件名新建文件D.系统将为写操作建立文本文件解析:解析 fopen 函数以一定方式打开指定文件,返回一个指向文件的文件指针,如果不能实现打开指定文

    33、件的操作,则返回一个空指针 NULL。如果指定文件不存在则创建一个文件名为指定文件名的新文件,然后打开它。程序中,文件 test.txt不存在,但无其他异常,表示可以建立新文件,命名为test.txt,C 项正确,并以只写方式打开它,D 项正确,返回指向文件的指针,if 条件不成立,输出“成功打开文件!”,B 项正确。20.有以下程序: #include stdio.h main( ) int a =2,4,6,8, *p=a,i; for(i=0;i4;i+) ai=*p+; printf(“%d/n“,a2); 程序的输出结果是_。(分数:1.00)A.2B.8C.4D.6 解析:解析 本

    34、题通过语句“*p=a”将一维数组 a的首地址的值赋值给变量 p,即 p的值为 2。执行 for循环,ai=*p+,指将 p的值赋给 ai后,再进行自增操作,因此 4次循环后 a2的值为 6。因此 D选项正确。21.以下程序段中的变量已正确定义 for(i=0;i4;i+,i+) for(k=1;k3;k+);printf(“*“); 程序段的输出结果是_。(分数:1.00)A.* *B.*C.* D.*解析:解析 由于内层循环 for(k=1;k3;k+)后面直接跟了空语句“;”,因此在循环内部什么操作也不做,执行完内层循环后执行打印语句,所以打印了一个“*”,故本题答案 C。22.有以下程序

    35、: #include stdio.h void f(int x,int n) if(n1) f( printf(“%d,“,x0); else printf(“%d,“,x 0); main() int z6=1,2,3,4,5,6; f(z,6); printf(“/n“); 程序的运行结果是_。(分数:1.00)A.6,5,4,3,2,1, B.1,1C.1,1,1,1,1,1,D.1,2,3,4,5,6,解析:解析 在调用一个函数的过程中又出现直接或间接的调用该函数本身,称为函数的递归调用。本题目中递归函数调用执行过程为:f(z,6)-f(C.int num=1,2,3,4,5,6;D.

    36、int num4=1,2,3,4,5,6;解析:解析 int num24定义 2行 4列数组,赋值给 num数组 3行错误。所以选择 A。26.下列选项中不能作为 C语言合法常量的是 _ 。(分数:1.00)A.“cd“ B.0.1e+6C.“/a“D.“/011“解析:解析 所谓常量是在程序运行过程中,其值不能被改变的量。包括整型数量、实型常量、字符常量和字符串常量等类型。选项 B中 0.1e+6是用指数形式表示的实型常量。C 语言的语法规定,字母 e之前必须要有数字,后面的指数必须为整数,并且在字母 e前后以及数字之间不得插入空格,选项 C中用双引号括起来表示字符串/a。选项 D中“011

    37、“表示用单引号括起来的转义字符八制进数 011。选项 A中在用单引号表示的字符常量中,只能包含一介字符。27.设有 int x=11;则表达式(x+*1/3)的值是_。(分数:1.00)A.3B.4 C.11D.12解析:28.若有以下类型说明语句: char w;int x;flooat y,z; 则表达式 w*x+z-y的结果为_类型。(分数:1.00)A.float B.charC.intD.double解析:解析 在进行运算时,不同类型的数据参加运算,需要先将其转换成同类型的数据,然后再进行运算。转换的顺序由低到高为:char,shortintunsignedlongdoubleflo

    38、at,故结果为 float型。29.现在有以下定义,int a;double b;float c;char k;则下面的表达式 a/b+c-k值的类型为:(分数:1.00)A.intB.double C.floatD.char解析:解析 双目运算中两边运算量类型转换规律: 运算数 1 运算数 2 转换结果类型 短整型 长整型 短整型-长整型 整型 长整型 整型-长整型 字符型 整型 字符型-整型 有符号整型无符号整型有符号整型-无符号整型 整型 浮点型 整型-浮点型 在 a/b的时候,a,b 的类型不一致,根据类型转换规则,把整型转换成 double类型,之后的加,减类似。转化规则为 char

    39、,shortintunsignedlongdoublefloat30.若有以下程序: #include stdio.h int f(int m) static int n=0; int a=2; n+ +; a+ +; return n+m+a; main( ) int k; for.(k=0; k4; k+ +) printf(“%d,“, f(k); 则程序的输出结果是_。(分数:2.00)A.3,5,7,9,B.4,7,10,13,C.4,5,6,7,D.4,6,8,10, 解析:解析 本题考查静态局部变量以及自增运算符,静态局部变量在函数凋用结束后,并不释放,仍然保留它的值,本题中,k

    40、 为 0时,return n+m+a 之前,n 为 1,a 为局部变量,值为 3,m 为 0,所以第一个返回值为 4。k 为 1,在函数返回值之前,静态局部变量为 2,局部变量 a仍然为 3,m 为 1,所以结果是 6,依此类推答案为 D。31.有以下定义:“int a; long b; double x, y;”,则以下选项中正确的表达式是_。(分数:1.00)A.a%(int x-y)B.a=x!=y;C.(a*y)%bD.y=x+y=x 解析:解析 选项 A、C,取模运算符(%)用于计算两个整数相除所得的余数,int x-y 与 a*y的结果是双精度,因此不能使用取模运算符;选项 B,a

    41、 是属于整型变量,x、y 属于双精度变量,因此不能将 x赋值给 a。32.已知下列函数定义: fun(int *b,int c,int n,int data) int k; for(k=0;km*n;k+) *b=data; b+; 则调用此函数的正确写法是(假设变量 a的说明为 int a50)_。(分数:2.50)A.fun(*a,4,5,1);B.fun(C.fun(int*)a,4,5,1);D.fun(a,4,5,1); 解析:解析 本题考查函数调用时的参数传递。fun 函数的调用形式为“fun(int *b,int m,int n,int data)”,而调用数组时,用数组名表示一

    42、个指向数组第一个元素的指针,因此调用时的形式为fun(a,4,5,1)。33.设 q1和 q2是指向一个 int型一维数组的指针变最,k 为 float型变量,下列小能正确执行的语句是 _ 。(分数:2.00)A.k=*q1*(*q2);B.q1=k; C.q1=q2;D.k=*q1+*q2;解析:解析 本题考查指针变量的赋值操作。选项 A)是将指针 q1和 q2所指向的变量值相乘,然后赋给k;选项 B)中,float 型数据和指引型数据之间不能进行赋值运算;选项 C)中,是两个指针变量之间的赋值;选项 D)中,是两个指针型变量所指向的两个 int型数据相加。34.设有如下关系表: (分数:2

    43、.50)A.T=R/SB.T=RSC.T=RS D.T=RS解析:解析 T 就是关系 R中有的,同时 S中也有的有序组(4、5、6),即交运算()。35.下列判断正确的是 _ 。(分数:1.00)A.chara=“ABCD“;等价于 char*a;*a=“ABCD“;B.char str10=“ABCD“;等价于 char str10;str=“ABCD“;C.char*s=“ABCD“;等价于 char s;*s=“ABCD“;D.charc5=“ABCD“,d5=“ABCD“;等价于 char c5=d5=“ABCD“; 解析:解析 a=“ABCD“书写错误,因为“;”左边不能出现常量;数

    44、组名 s是代表 s数组首地址的地址常量,而不是变量;字符串只有在定义时维数可以省略。36.在软件设计中不使用的工具是_。(分数:1.00)A.系统结构图B.程序流程图C.PAD图 D.数据流图(DFD 图)解析:解析 数据分析主要使用的是数据流图和数据字典,概念设计阶段使用的是系统结构图,在详细设计阶段使用的是程序流程图。所以答案选择 C。37.某二叉树中有 n个度为 2的结点,则该二叉树中的叶子结点数为_。(分数:1.00)A.n+1 B.n-1C.2nD.n/2解析:38.有以下程序 #include stdio.h main() int n,*p=NULL; *p= printf(“In

    45、put n:“); scanf(“%d“, printf(“output n:“); printf(“%d/n“,p); 该程序试图通过指针 p为变量 n读入数据并输出,但程序有多处错误,以下语句正确的是_。(分数:1.00)A.int n,*p=NULL; B.*p=C.scanf(“%d“,解析:解析 选项 B的正确写法应为“p=”,选项 C的正确写法应为“scanf(“%d“,p);”,选项 D的正确写法应为“printf(“%din“,*p);”。故本题答案为 A。39.以下关于 C语言数据类型使用的叙述中错误的是_。(分数:1.00)A.若只处理“真”和“假”两种逻辑值,应使用逻辑类

    46、型 B.若要保存带有多位小数的数据,可使用双精度类型C.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D.整数类型表示的自然数是准确无误差的解析:解析 C 语言不存在逻辑类型,所以 A错误。单精度 float类型可提供 6位有效数字,双精度double类型可提供 16位有效数字,所以要保存带有多位小数的数据,要使用双精度类型,所以 B选项正确。结构体类型可以保存不同类型数据,所以 C正确,整数的表示是不存在误差的,所以 D选项正确。40.在数据结构中,从逻辑结构上看可以分成_。(分数:2.00)A.动态结构和静态结构B.线性结构和非线性结构 C.内部结构和外部结构D.紧凑结构和非紧凑结构解析:


    注意事项

    本文(【计算机类职业资格】二级C语言分类模拟题546及答案解析.doc)为本站会员(registerpick115)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开