版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、级 C 语言分类模拟题 516( 总分: 51.00 ,做题时间: 90 分钟 )一、选择题 (总题数: 35,分数: 51.00)1. 以下程序的输出结果是_。#include < stdio.h >main()int a23=1, 2, 3, 4, 5, 6, (*p)3, i; p=a;for(i=0; i <3; i+) if(i < 2) p1i=p1i-1;else p1i=1;printf("%d/n", a01+a11+a12);( 分数: 2.50 )A. 8B. 7 VC. 12D. 9解析: 解析 此题考查 for 循环及 if
2、 ?else 语句嵌套,第 1次执行 for 循环, p10=p10=p10-1=3 第 2 次执行 for 循环, p11=p11-1=4 ;第 3 次执行 for 循环, p12=1 ,最后输出的是 a01+a11+a12=2+4+1=7。2. 以下表达中正确的选项是_ 。( 分数: 2.00 )A. 使用 break 语句可以使流程跳出 switch 语句体 VB. break 语句不能用于提前结束 for 语句的本层循环C. continue 语句使得整个循环终止D. 在 for 语句中, continue 与 break 的效果是一样的,可以互换解析: 解析 break 跳出 swi
3、tch 语句或循环语句, contiune 结束本次循环,继续进行剩余的循环。 所以 答案选择 A 。3. 有以下程序:#include < stdio.h > void fun(int*s, int n1, int n2) int i, j, t;i=n1; j=n2;while (i < j) t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; i+; j-; main() int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, i, *p=a;fun(p, 0, 3); fun(p, 4, 9); fun(p, 0, 9); for
4、(i=0; i<10; i+) printf("%d", *(a+i);程序的输出结果是( 分数: 1.00 )A. 0987654321B. 4321098765C. 5678901234 VD. 0987651234解析:4. 以下表达中正确的选项是 _ 。分数: 2.00 A. 只要适当地修改代码,就可以将do-while与while相互转换 VB. 对于"for 表达式1;表达式2;表达式3循环体"首先要计算表达式2的值,以便决定是否开始循环C. 对于 "for 表达式 1; 表达式 2;表达式 3循环体 " ,只在个别
5、情况下才能转换成 while 语句D. 如果根据算法需要使用无限循环即通常所称的“死循环,贝帜能使用while语句解析: 解析 do-while 与 while 可以相互转换,所以选择A。5. 有以下程序:# include < stdio.h >main() char a="H"a=(a >="A" a<="Z") ? (a-"A"+"a" ):a; printf("%c/n",a ); 程序运行后的输出结果是_。(分数: 1.00 )A. .AB.
6、 .aC. .HD. .h Va-"A"+"a"赋值给a,括号里的运算是把解析: 解析 多元运算符问号前面表达式为真,所以 大写字母 变成小写字母,所以答案应为选项 D。6. 以下定义数组的语句中错误的选项是 。分数: 1.00 A. int num=1,2,3,4,5,6;B. int num3=1,2,3,4,5,6;C. int num24=1,2,3,4,5,6; VD. int num4=1,2,3,4,5,6;解析: 解析 C 选项中定义的数组为2 行 4 列,而赋值时赋成了 3 行,因此出错7. 设有某函数的说明为: int*func in
7、t a10,int n ;贝以下表达中,正确的选项是_。分数: 1.00 A. 形参 a 对应的实参只能是数组名B. 说明中的a10写成a或*a效果完全一样 VC. func的函数体中不能对 a进行移动指针如a+ 的操作D. 只有指向 10 个整数内存单元的指针,才能作为实参传给 a解析: 解析 此题重点考查返回指针值的函数的相关知识。 返回指针值的函数,一般定义形式为: 类型名*函数名参数列表。fune函数被定义为指针型函数,它的一个形参为整型数组a,形参 a 对应的实参可以 是数组名和指针,A、 D 错误。实参传递给形参 a 的是地址值,实参和形参指向同一段内存单元,在 fune 函数体内
8、对形参 a 进行移动指针操作,可以改变实参的值, C 错8. 有以下程序:#include < stdio.h >#define N 5#define M N+1#define f (x)(x*M)main( )int i1,i2;i1=f(2);i2=f(1+1);printf("%d%d/n",i1,i2); 程序的运行结果是_ 。( 分数: 2.00 )A. 12 7B. 12 12C. 11 11D. 11 7 V解析: 解析 此题考查宏定义。宏定义只是做简单的替换,所以此题中执行语句 f(2)=(2*N+1)=11 , 执行语句 f(1+1)=(1+1
9、*N+1)=7 。因此选项 D 正确。9. 有以下程序#include < stdio.h >main()int b33=0,1,2,0,1,2,0,1,2,i,j,t=1;for(i=0;i < 3;i+)for(j=i;j <=i;j+)t+=bibji; printf("%d/n",t); 程序运行后的输出结果是。( 分数: 1.00 )A. 3B. 4 VC. 1D. 9解析: 解析 每次内循环只循环一次就结束,第一次外循环时 t=t+b0b00=1+b00=1+0=1 ; 第二次外循环时 t=t+b1b11=1+b11=1+1=2 ;第三次
10、外循环时 t=1+b2b22=2+b22=2+2=4 。故本 题答案为 B。10. 循环控制语句“ while(!scanf("%d" , &i)getchar( ) ;执行的情况是 ( ) ( 分数: 1.00 )A. 循环输入字符,遇文件结束符EOF退出VB. 循环条件有错,不能执行C. 假设输入数据 i 有错,暂停等待处理D. 键入 i 值后,回车退出循环解析:11. 以下表达中正确的选项是 _ 。( 分数: 2.00 )A. 栈是“先进先出的线性表B. 队列是“先进后出的线性表C. 循环队列是非线性结构B 错误;D. 有序线性表既可以采用顺序存储结构,也可以
11、采用链式存储结构V解析:解析栈是先进后出的线性表,所以 A错误;队列是先进先出的线性表,所以循环队列是 线性结构的线性表,所以C 错误。12. 以下表达中正确的选项是_ 。 分数: 1.00 A. 空字符串不占用内存,其内存空间大小是 0B. 两个连续的单引号 " 是合法的字符常量C. 可以对字符串进行关系运算D.两个连续的双引号 " "是合法的字符串常量V解析:解析字符串常量包括空字符串所占内存字节数等于字符串中字节数加1, A 选项错误。字符常量是用单引号括起来的一个字符, B 选项错误。 C 语言中,字符串比拟不能直接用关系运算符进 行正确比拟, 可以用字符
12、串比拟函数 strcmp 来实现, C 选项错误。字符串常量是由一对双引号括 起的字符序列,D 选项正确。13. 以下表达中正确的选项是_ 。 分数: 2.00 A. 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式B. 一条语句只能定义一个数组C. 每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元VD. 在引用数组元素时,下标表达式可以使用浮点数 解析: 解析 数组的元素是同一类型,占用连续空间,所以选择C。14. 以下表达中正确的选项是_ 。 分数: 1.00 A. 在 C 语言程序中, main 函数必须放在其他函数的最前面B. 每个后缀为.C的C语言源程
13、序都可以单独进行编译VC. 在 C 语言程序中,只有 main 函数才可单独进行编译D. 每个后缀为 .C 的 C 语言源程序都应该包含一个 main 函数 解析: 解析 C 语言是一种成功的系统描述语言,具有良好的移植性,每个后缀为.C 的 C 语言源程序都可以单独进行编译。15. 以下程序的输出结果是_。int x=1 ; funint p int x=4 ; x+=p+ ; printf"%d",x ; main int a=3 ; funa ; x+=a+ ; printf"%d/n",x ; 分数: 1.00 A. 8 4B. 4 5C. 7
14、4 VD. 9 5解析:解析此题考查局部变量和全局变量的关系。在调用 fun函数时,形参p值为3实参a传 递的 , 在 x+=p+ 中, x 是局部变量 局部优先 , x 和 p 的和 7 放在变量 x 中, p 再自加变为 4, 显示输出 x 的值 7 ; 主函数中的 x 是全局变量,值为1 , x 和 a 的和 4 放在变量 x 中, a 再自加变为 4,显示输出 x 的值 4。16. 某二叉树有 5 个度为 2 的结点,那么该二叉树中的叶子结点数是。 分数: 1.00 A. 10B. 8C. 6 VD. 4解析: 解析 根据二叉树的根本性质 3:在任意一棵二叉树中,度为O 的叶子结点总是
15、比度为 2的结点多 一个,17. 假设有定义:所以此题中是 5+1=6 个。float x=1.5; int a=1, b=3, c=2; 那么正确的 switch 语句是。( 分数: 2.00 )A. switch(a+b) case 1:printf("*/n");case c:printf("*/n");B. switch(int)x);case 1:printf("*/n");case 2:printf("*/n");C. switch(x)case 1.0:printf("*/n");
16、case 2.0:printf("*/n");D. switch(a+b)case 1:printf("*/n");case 2+1:printf("*/n"); V解析: 解析 B 选项的“ switch(int)x); 语句中不应该有最后的分号。 switch(expr1) 中的 expr1 不 能用浮点类型或 long 类型,也不能为一个字符串, 因此 C 错误。 case 后面只能是常量表达式, 因此 A 错误。18. 有以下程序#include <stdio.h > typedef struct int b,p;
17、A; void f(A c) /* 注意: c 是结构变量名 */ int j; c.b+=1;c.p+=2; main() int i;A a=1,2; f(a); printf("%d,%d/n",a.b,a.p); 程序运行后的输出结果是 。( 分数: 2.00 )A. 2,4B. 1,2 VC. 1,4D. 2,3 解析:19. 有以下程序:#include <stdio.h > struct link int data ; struct link* next; main() struct link *h,a,b; h=&a;a.data=10;
18、a.next=&b;b.data=20; 程序运行时不能输出10,20 的语句是 。( 分数: 1.00 )A. printf("%d,%d/n",h->data,a.next.data); VB. printf("%d,%d/n",a.data,(%a.next).data);C. printf("%d,%d/n",h->data,(*a.next).data);D. printf("%d,%d/n",a.data,a.next- > data);解析: 解析可用以下 3 种形式来引用结
19、构体变量中的成员:结构体变量名成员名;指针变量名 ->成员名; (* 指针变量名 ) 成员名。主函数定义了两个结构体变量a,b 其成员 data 分别为 10 和 20,且 a 成员指针指向b。A选项中a.next为指针,其引用格式为 a.next- >data与(*a.next).data , A选项错误, 故 选择 A 选项。 B 选项 a.data=10 ,(*a.next).data=20 ,能正确输出 10,20;C 选项 h- > data=10 , (*a.next).data=20 ,能正确输出 10,20;D 选项 a.data=10 , a.next- &
20、gt;data=20 ,能正确输出 10,20。20. 有以下程序#includemain() int a=0,b=0;/* 给 a 赋值 a=10;b=20; 给 b 赋值*/printf("a+b=%d/n",a+b);/* 输出计算结果 */ 程序运行后的输出结果是_。( 分数: 1.00 )A. a+b=O VB. a+b=30C. a+b=1OD. 出错解析:解析注释/*和*/之间计算机不参与编译,所以a、b值仍为0,答案选择A。21. 假设有定义: double a=22;int i=O,k=18; ,那么不符合 C 语言规定的赋值语句是_。( 分数: 2.00
21、 )A. i=(a+k) < =(i+k);B. i=a%11; VC. a=a+,i+D. i=!a;解析:解析取模运算符“ %、二元运算符具有左结合性,参与运算的量均为整型。B选项中的 a 变量是 double 实型,不符合规定。22. 表达式 (int)(double)9/2)-9%2 的值是 。( 分数: 2.00 )A. 0B. 3 VC. 4D. 5解析: 解析先将整型数据 9 强制转换成 double 型,然后除以 2,得到的结果与 double 型保 持一致,即 为 4.5 ,然后将 4.5 强制转换成整型数据 4,然后计算 9%2 的值为 1,最后计算 4-1 的 值为
22、 3 ,所以选择 B 选项。23. 假设 a 是数值类型,那么逻辑表达式 (a=1)|(a!=1) 的值是 _。( 分数: 1.00 )A. 1 VB. 0C. 2D. 不知道 a 的值,不能确定解析:解析由于 a=1 和 a!=1 两者互斥,即总有一个为真,因此二者的“或也必定为真。24. 字符 A 的 ASCII 代码值是 65,字符变量 c1 的值是 A, c2的值是 D。那么执行语句 printf("%d,%d",c1,c2-2);的输出结果是。( 分数: 1.00 )A. A,68B. 65,66 VC. A,BD. 65,68解析: 解析 在 C 语言中,字符型
23、数据在内存中的存储形式是 ASCII 码值。当需要以整型格式输出 字符时,输出的也是 ASCII码值。字符"A"和"D"的ASCII码值分别为 65和68。25. 有以下程序 #include < stdio.h >#define S(x)4*(x)*x+1main() int k=5,j=2;printf("%d/n",S(k+j);程序运行后的输出结果是_。( 分数: 2.00 )A. 143 VB. 197C. 33D. 28解析:26. 有以下程序:#include < stdio.h >#includ
24、e < string.h >main() char p20="a","b","c","d",q="abc",r="abcde"strcat(p,r);strcpy(p+strlen(q),q);printf("%d/n",strlen(p); 程序运行后的输出结果是_。( 分数: 1.00 )A. 11B. 9C. 6 VD. 7解析: 解析 strcpy :字符串拷贝函数; strlen :求字符串长度函数 (注意:不包含字符串结束标识 符
25、"/0") ;strcat :字符串连接函数。 执行完语句 strcat(p ,r) ;后, p 数组中存储的元素为: a,b,c,d,a,b,c,d,e 执行语句 strcpy(p+strlen(q),q) ;得到的结果是将 q 所指向的字符串拷贝至 p+strlen(q) 开始的存储位置, 因为 strlen 的值为 3,即从 p+3 开始存储 q 中的元素。所以执行完 strcpy(p+strlen(q),q) 语句后,字 符 数组 p20 的存储元素为: a,b,c,a,b,c 。所以 strlen(p) 的结果为 6 , C 选项正确。27. 软件按功能可以分为:
26、应用软件、系统软件和支撑软件(或工具软件 ) 。下面属于应用软件的是( 分数: 1.00 )A. 编译程序B. 操作系统C. 教务管理系统 VD. 汇编程序解析: 解析 编译软件、操作系统、汇编程序都属于系统软件,只有教务管理系统才是应用软件。所以选择 C 选项。28. 以下 _ 不属于对象的根本特征。( 分数: 2.50 )A. 继承性 VB. 封装性C. 分类性D. 多态性解析: 解析 对象具有如下特征:?标识惟一性,指对象是可区分的;?分类性,指可以将具有相同属性和操作的对象抽象成类;?多态性,指同一个操作可以是不同对象的行为;?封装性,从外面看只能看到对象的外部特征,而不知道也无需知道
27、数据的具体结构以及实现操 作的算法;?模块独立性好,对象是面向对象的软件的根本模块,对象内部各种元素彼此结合得 很紧密,内聚性强。29. 假设指针p已正确定义并指向如下图存储单元:那么执行语句*p+;后,*p的值是(分数:1.00 )A. 20B. 30 VC. 21D. 31解析:30. 有以下程序:#include < stdio.h >mai n() int a, b, k, m, *p1, *p2;k=1, m=8;p1= &k, p2二&m;a=/*p1-m; b=*p1+*p2+6;prin tf("%d", a); prin tf(
28、"%d/n", b);编译时编译器提示错误信息,你认为出错的语句是。(分数:1.00 )A. a=/*p1-m; VB. b=*p1+*p2+6;C. k=1, m=8;D. p1= &k, p2二&m;解析:解析此题考查指针,p1= &k表示p指向k的地址,那么*p=k ,依次类推,在对指针进行 赋值时没有 错误。a=/*p+m赋值,在C语言中“ /* 表示注释,所以答案选择 A。31. 以下程序的输出结果是_。#include < stdio.h >mai n() int k, j, m;for (k=5; k > =1; k-) m=0;for (j=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人借款权益转让合同模板(2024年版)版B版
- 2025年度幕墙抗风抗震加固工程合同范本4篇
- 2025年度文化娱乐品牌授权使用许可
- 2025年度出租车司机职业操守与信息保密合同
- 2025年度墓地陵园墓地使用权购买协议3篇
- 2025年度肉类产品加工与销售一体化合同3篇
- 2025年度餐饮加盟店品牌授权与维护合同3篇
- 二零二五年度宠物猫宠物用品代理销售合同3篇
- 2025版基因编辑技术合作项目建议书编制范本3篇
- 2025年KTV主题房间租赁及定制服务协议3篇
- 成长小说智慧树知到期末考试答案2024年
- 红色革命故事《王二小的故事》
- 海洋工程用高性能建筑钢材的研发
- 苏教版2022-2023学年三年级数学下册开学摸底考试卷(五)含答案与解析
- 英语48个国际音标课件(单词带声、附有声国际音标图)
- GB/T 6892-2023一般工业用铝及铝合金挤压型材
- 冷库安全管理制度
- 2023同等学力申硕统考英语考试真题
- 家具安装工培训教案优质资料
- 在双减政策下小学音乐社团活动有效开展及策略 论文
- envi二次开发素材包-idl培训
评论
0/150
提交评论