版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二级 C语言分类模拟题 548选择题1、下列叙述中正确的是A. 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B. 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C. 顺序存储结构能存储有序表,链式存储结构不能存储有序表D. 链式存储结构比顺序存储结构节省存储空间2、设x、y和z是int 型变量,且 x=4 ,y=6 ,z=8 ,则下列表达式中值为 0的是A x&.y B x =yC x|y+z&y-z D !(x y)&!z|1)3、下面程序的运行结果是 。for(i=3;i 7;i+)printf(i%2)?(*%dn):(#%dn),i); A *3#4*
2、5*6B #3*4#5*6C #3*4#5#6D *3#4*5#6 4、有以下程序:#include int fun()static int x=1;x*=2;return x;main()int i, s=1;for(i=1; i =3; i+) s*=fun();printf(%dn, s);程序运行后的输出结果是 。A 30 B 10 C 0 D 645、有以下程序#includeint fun(int (*s)4,int n,int k) int m,i;m=s0kl;for(i=1;i m) m=sik;return m;main() int a44=1,2,3,4,11,12,13
3、,14, 21,22,23,24, 31,32,33,34;printf(%dn,fun(a,4,0); 程序的运行结果是 。A. 4 B. 34 C. 31 D. 326、有以下程序:#include#includestruct Aint a;char b10;double c;void f(struct A t);main()struct A a=1001,ZhangDa,1098.0;f(a);printf(%d,%s,%6.lfn,a.a,a.b,a.c);void f(struct A t)t.a=1002;strcpy(t.b,ChangRong);t.c=1202.0; 程序运行
4、后的输出结果是 。A 1002,ZhangDa,1202.0 B 1002,ChangRong,1202.0C 1001,ChangRong,1098.0 D 1001,ZhangDa,1098.07、对于下列定义,不正确的叙述是 ( ) 。union data int a ;char b ;double c ;x=y ;A. 变量x 所占内存的长度等于成员 c的长度B. 变量x 的地址和它的各成员地址都是相同的C. 可以在定义时对 x 初始化D. 不能对变量 x 赋值,故 x=y 非法8、若变量已正确定义,在 if(W)printf(%dn,k);中,以下不可替代 W的是 A a b+c B
5、 ch=getchar() C a=b+c D a+9、有以下程序:#includemain() int c,d;c=13&5;d=10&5;printf(%d,%dn,c,d); 程序的运行结果是 。A 5,1 B 1,1 C 18 ,1 D 13,110 、有以下程序: #include main() int x=8; for(;x 0;x-) if(x%3) printf(%d,x-); contmue;printf(%d,-x); 程序运行后的输出结果是 。8,5,4,2,A 7,4,2, B 8,7,5,2, C9,7,6,4, D11 、若有以下程序: #includemain(
6、) int c; c=105; printf(%dn, c); 则程序的输出结果是 。A 5 B 15 C 10000 D 10512 、在数据结构中,从逻辑上可以把数据结构分为 。A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构C.线性结构和非线性结构 D. 内部结构和外部结构13 、以下正确的说法是 。A 定义函数时,形参的类型说明可以放在函数体内B return 后边的值不能为表达式C 如果函数值的类型与返回值类型不一致,以函数值类型为准D 如果形参与实参类型不一致,以实参类型为准14 、有以下程序:#include main() int i;for(i=1; i =5; i+)if
7、(i%2)printf(*);else continue;printf(#);printf($n);程序的输出结果是 。A*#*#*#$B#*#*#*$C*#*#$D#*#*$15 、有如下程序:#include main()int a=1,b;b=(a 2)%3;printf(%d,%d,a,b); 程序运行后的输出结果是 。A1,1B 2,0C1,0D2,116 、若各选项中所用变量已正确定义,函数 fun 中通过 return 语句返回一个函数值,以下选项中错 误的程序是 。Amain()x=fun(2,10);float fun(int a,int b)Bfloat fun(int a
8、,int b)main()x=fun(i,j);Cfloat fun(int,int);main()x=fun(2,10);float fun(int a,int b)Dmain()float fun(int i,int j);x=fun(i,j); float fun(int a,int b)17 、下述程序的输出结果是 #include void main()char a=1,b=2;char c=ab 2; printf(n%d,c);A9 B10 C 12 D218 、负责数据库中查询操作的数据库语言是 。D数据控制语言A数据定义语言 B数据管理语言 C数据操纵语言19 、有以下程序:
9、#include main()int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1;int i,j,k,t;for(i=0;i 4;i+)for(j=0;j 3;j+)for(k=j+1;kaki)t=aji;aji=aki;aki=t;/* 按列排序 */for(i=0;i 4;i+)printf(%d,aii);程序运行后的输出结果是 。A1,6,2,1,B 8,7,3,1,C4,7,5,2,D1,6,5,7,20 、在软件开发中,需求分析阶段可以使用的工具是 。AN-S 图 BDFD图 C PAD图 D程序流程图21 、以下选项中,能定义 s为合法的结构体变量的
10、是 ( ) 。A. typedef struct abc double a;char b10; s;B. struct double a;char b10;s;C. struct ABC double a;char b10;ABC s;D. typedef ABC double a;char b10;ABC s;22 、以下叙述中正确的是AC程序中各函数之间既允许直接递归调用,也允许间接递归调用BC程序中各函数之间不允许直接递归调用,也不允许间接递归调用CC程序中各函数之间允许直接递归调用,不允许间接递归调用DC程序中各函数之间不允许直接递归调用,允许间接递归调用23 、以下程序中 C的二进制
11、值是 char a=2,b=4,c; c=ab 2 A00000011B00010100C00011100D 0001100024、设有变量说明 int(*p)m,其中的标识符 p是( ) 。A. m 个指向整型变量的指针B. 指向 m个整型变量的指针C. 一个指向具有 m个整型元素的一维数组的指针D. 具有 m个指针元素的一维指针数组,每个元素都指向整型变量25 、 软件 ( 程序 ) 调试的目标是A. 诊断和改正程序中的错误 B. 尽可能多地发现程序中的错误 C. 发现并改正程序中的所有错误 D. 确定程序中错误的性质26 、结构化程序设计的 3种结构是 A顺序结构、选择结构、转移结构B分
12、支结构、等价结构、循环结构 C多分支结构、赋值结构、等价结构 D顺序结构、选择结构、循环结构27、 fgetc 函数的作用是从指定文件读入一个个字符,该文件的打开方式必须是 A. 只读 B. 追加 C. 读或读写 D. 以上均正确28 、对于下列定义,不正确的叙述是 ( ) 。 union data int a ;char b ;double c ;x=y ;A. 变量x 所占内存的长度等于成员 c 的长度B. 变量x 的地址和它的各成员地址都是相同的C. 可以在定义时对 x 初始化D. 不能对变量 x赋值,故x=y 非法29 、下列叙述中正确的是 。A循环队列中的元素个数随队头指针与队尾指针
13、的变化而动态变化B循环队列中的元素个数随队头指针的变化而动态变化C循环队列中的元素个数随队尾指针的变化而动态变化D以上说法都不对30 、下面不属于软件需求分析阶段主要工作的是 。A需求变更申请 B需求分析 C需求评审 D需求获取31 、下列运算符中优先级最低的算符是 A|B!=C = D+32 、有以下程序:#include main() int a=1, b=0;if(-a)b+;else if(a=0) b+=2;else b+=3;printf(%dn, b);程序运行后的输出结果是 。A0 B1C2 D333 、有以下程序#include #define S(x)4*(x)*x+1ma
14、in() int k=5,j=2; printf(%dn,S(k+j);程序运行后的输出结果是 。A143B 197C33 D2834 、 if 语句的基本形式是: if( 表达式 ) 语句,以下关于 “表达式 ”值的叙述中正确的是 A必须是逻辑值B必须是整数值C必须是正数D可以是任意合法的数值35 、在下列选项中,没有构成死循环的程序段是 。Aint i=100;while(1) i=i%100+1 ;if(i 100)break ;Bfor(;);Cint k=1000 ;do+k ;while(k =1000) ;D int s=36 :while(s); -s ;36 、 C语言源程序
15、名的后缀是 。A.C B.exeC.objD.cp37 、若有以下程序#include void fun(int a,int n) intt,i,j;for(i=1;i n;i+=2)for(j=i+2;j aj)t=ai;ai=aj;aj=t;main() int c10=10,9,8,7,6,5,4,3,2,1,i; fun(c,10);for(i=0;i sex);D scanf(%d,ps-age);39 、C语言中标准库函数 fputs(str,fp) 的功能是 。A从 str 指向的文件中读一个字符串存入 fp 指向的内存B把 str 所指的字符串输出到 fp 所指的文件中C从 f
16、p 指向的文件中读一个字符串存入 str 指向的内存D把 fp 指向的内存中的一个字符串输出到 str 指向的文件40 、若有以下程序#include int f(int a, int n)if(n 1)int t;t=f(a, n-1);returnt an-1?t:an-1;elsereturn a0;main() int a=8, 2, 9, 1, 3, 6, 4, 7, 5; printf(%dn, f(a, 9); 则程序的输出结果是 。A1 B9 C8 D 5答案:选择题1、A 解析 顺序存储方式是把逻辑上相邻的结点存储在物理上相邻的存储单元里,结点之间的关系由存 储单元的邻接关系
17、来体现。其优点是占用最少的存储空间。所以选项D错误。顺序存储结构可以存储如二叉树这样的非线性结构,所以选项 B错误。链式存储结构也可以存储线性表,所以选项 C错误。2、D 解析 本题考查逻辑运算符的使用。 当“&”的两个运算对象都是逻辑 1时,表达式返回值才是 1;“| 的两个运算对象至少有一个是逻辑 1时,表达式返回值也是 1,x y 为1,!z 为0,1&0为1,0| 为 1,因此, !1 为0 。3、D解析 本题考查printf 函数的输出格式和条件表达式 “?: ”的使用。printf 函数输出时 “*%d n” 和“#%dn”中的“#”和“* ”都是直接输出。条件表达式的基本格式为:
18、 “a?b:c ”。它的运算规 则为:当 a为非0时,整个表达式的值取 b的值,当 a为0时,整个表达式取 c的值。4、D 解析 分析程序可知, main 函数中初始化 s=1 ,然后根据 i 的值 1、2、3执行 3次for 循环,每次将 s当前值与函数 fun() 的返回值相乘,并将乘积赋给 s,所以 for 循环等价于: s=s*fun()*fun()*fun();可见 s 的值取决于 fun() 函数的返回值。在 fun() 函数中,定义了一个静态局部变量 x并初始化为1,再将x的值乘以2返回,因为静态局部变量 x在编译时赋初值, 并且只 赋值一次,下一次调用时都是保留上一次的值,所以
19、 fun() 函数每次被调用,返回值都是上一次的 2 倍,所以 s=1248=64。故答案选 D选项。5、C解析 在主函数中,定义并初始化了 4行4列的二维数组 a,并通过调用fun 函数,将fun 函数中指向 一维数组的指针变量 s指向了二维数组 a的首地址,使得指针变量 s与数组a共用同一存储单元。 在fun 函数中,通过 for 循环,求得了数组 a 第0 列中最大的值,并赋给 m返回主函数。由于数组 a 第0列的值 分别为1、11 、21 、31 ,故其最大值是 31 。6、D 解析 本题考查结构体的相关操作以及传值、传址的区别,该题中调用 f 函数后,会生成参数 a 的一 个副本,而
20、不会改变 a的值,所以 a值维持原值,选项 D正确。7、C 解析 本题主要考查的知识点是联合体的内存使用。联合体所占用的内存空间为最长的成员所占用 的空间,各个成员分量全部是从低地址方向开始使用内存单元。 不能在定义共用体变量时对它初始化。8、A 解析 选项 A是非法的表达式, C语言中没有运算符。9、A 解析 “ &”按位与运算, 13=1101B , 5=101B ,执行语句 c=13&5 ;结果为 101B=5 ,即 c=5 。“ &” 逻辑与运算, 10与5均为真,结果为真,即 d=1 。故A选项正确。10、D 解析 coutinue 的作用是跳出循环体中剩余的语句而进行下一次循环。第
21、一次循环x 的值为 8 ,循环体中if 条件成立,打印 x的值8后将x减1,再执行 continue 语句,跳出本次循环。第二次判断循 环条件时, x的值变为6,不满足循环体内 if 条件,执行打印 -x 的操作,即打印 5后跳出循环。第三 次判断循环条件时 x的值为4,满足循环体中 if 条件,执行打印 x- 的操作,即打印4,后将x值减一, 执行 continue 语句,跳出本次循环。第四次判断循环条件时 x的为 2,满足循环体中 if 条件,打印 x- ,即打印 2后将x 减一,执行 continue 语句,跳出本次循环。在进行 for 条件表达式中第三个表 达式c- 的操作后 x的值为
22、0,不满足条件结束循环。所以打印结果为 “8,5,4,2, ”。11、B 解析 本题考查位运算中的按位异或运算符。异或运算只有在两个比较的位不同时其结果是1,否则结果为 0,10 用二进制表示为 00001010 ,5用二进制表示为 00000101 ,异或运算后结果为 00001111 ,即15 ,选项 B正确。12、C 解析 逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性 结构表示数据元素之间一对多或多对一的关系。 13 、 C14、A 解析 #include stdio.h int main()int i;for(i=1; i =5; i+)if(i%2
23、)printf(*);elsecontinue;printf(#);printf($n);/*i=1*#*i=3*#*i=5*#$所以输出为 *#*#*#$ 和一个换行符 */ ,因此正确答案为 A。15、C 解析 “”是右移运算符,功能是将一个数的各个二进制位右移若干位,本题中将变量a( 二进制: 00000001) 右移2位, a 2的结果为 0,再对3求余,结果为 0,赋给 b的值为 0、a的值不变, 输出结果为: 1,0 。故本题答案为 C选项。16、A 解析 在函数调用前,需要定义或声明, A选项错误。 17、A18、C 解析 数据定义语言:负责数据的模式定义与数据的物理存取构建;数
24、据操纵语言:负责数据的操 纵,包括查询及增加、删除、修改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以 及并发控制、故障恢复等功能。因此本题答案为 C。19、D 解析 首先对二维数组进行赋值操作, a00 、a0l1 a32 、a33 的值为 1、46、 1。通过 for 语句和 if 语句,对二维数组各列元素进行由小到大的排序操作,程序最后通过 for 语句 输出二维数组对角线上的元素。因此 D选项正确。20、B 解析 在需求分析阶段可以使用的工具有数据流图 (DFD图) 、数据字典 (DD) 、判定树与判定表, 所 以选择 B选项。21、B 解析 定义一个结构体类型的变量,可采
25、用三种方法: 先定义结构体类型,再定义变量名。在定义类型的同时定义变量。直接定义结构体类型变量,即不出现结构体名。选项B) 符合第三种定义方法。 22、A23 、A24、C 解析 本题考查指向数组的指针变量的声明。 这里的 p表示一个指向数组的指针: *p 表示指针 p 指向 地址的内容。25、A 解析 软件测试与软件调试是两个不同的概念:软件测试的目的是发现错误,而软件调试的目的是 发现错误或导致程序失效的原因,并修改程序以修正错误,调试是测试之后的活动。26、D 解析 结构化程序设计的基本要点: 采用自顶向下、逐步求精的程序设计方法; 任何程序都可由 顺序、选择和循环 3种基本控制结构构造。27、D 解析 fgetc 函数是指从指定的文件读入一个字符,该文件必须是以读
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论