1、二级 C语言分类模拟题 558及答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:40,分数:52.00)1.设数据元素的集合 D=1,2,3,4,5,则满足下列关系 R的数据结构中为线性结构的是_。(分数:1.00)A.R=(1,2),(3,4),(5,1)B.R=(1,3),(4,1),(3,2),(5,4)C.R=(1,2),(2,3),(4,5)D.R=(1,3),(2,4),(3,5)2.若有定义语句: char *s1=“OK“, s2=“ok“; 以下选项中,能够输出“OK“的语句是_。(分数:2.00)A.if(strcmp(s1, s2)!=0)puts(
2、s2);B.if(strcmp(s1, s2)!=0)puts(s1);C.if(strcmp(s1, s2)=1)puts(s1);D.if(strcmp(s1, s2)=0)puts(s1);3.有以下程序 #includestdio.h main() int x=1,y=0; if(!x)y+; else if(x=0) if(x)y+=2; else y+=3; printf(“%d/n“,y); 程序运行后的输出结果是_。(分数:1.00)A.3B.2C.1D.04.以下叙述中错误的是_。(分数:1.00)A.函数的返回值类型不能是结构体类型,只能是简单类型B.函数可以返回指向结构体
3、变量的指针C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员D.只要类型相同,结构体变量之间可以整体赋值5.若有定义语句:double a,*p=a;,以下叙述中错误的是_。(分数:1.00)A.定义语句中的*号是一个间址运算符B.定义语句中的*号只是一个说明符C.定义语句中的 p只能存放 double类型变量的地址D.定义语句中,*p=n 把变量 a的地址作为初值赋给指针变量 p6.若有以下程序段: int m=0,n=0;char c=“a“; scanf(“%d %c %d“, x=(ab) printf(“%d/n“,x); 程序的运行结果是_。(分数:1.00)A.2B.1
4、C.3D.011.有以下程序: #includestdio.h struct S int a,b;data2=10,100,20,200; main() struct S p=data1; printf(“%d/n“,+(p.a); 程序运行后的输出结果是_。(分数:1.00)A.10B.11C.20D.2112.以下有关宏替换的叙述不正确的是_。(分数:2.00)A.使用宏定义可以嵌套B.宏定义仅仅是符号替换C.双引号中出现的宏名不替换D.宏名必须用大写字母表示13.有以下程序: #includestdio.h main() int y=10; while(y-); printf(“y=%d
5、/n“,y); 程序执行后的输出结果是_。(分数:1.00)A.y=-1B.y=0C.y=1D.while构成无限循环14.设有定义:int a;float b;,执行 scanf(“%2d%f“,语句时,若从键盘输入 876 543.0回车,则 a和 b的值分别是_。(分数:2.00)A.87和 6.0B.876和 543.0C.87和 543.0D.76和 543.015.有以下程序 #include stdio.h main() int k=5; while(-k) printf(“%d“,k-=3); printf(“/n“); 执行后的输出结果是_。(分数:1.00)A.死循环B.2
6、C.4D.116.有下列二叉树: (分数:2.50)A.ABCDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG17.层次型、网状型和关系型数据库划分原则是_。(分数:1.00)A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式18.设数据集合为 D=1,3,5,7,9,D 上的关系为 R,下列数据结构 B=(D,R)中为非线性结构的是_。(分数:1.00)A.R=(5,1),(7,9),(1,7),(9,3)B.R=(9,7),(1,3),(7,1),(3,5)C.R=(1,9),(9,7),(7,5),(5,3)D.R=(1,3),(3,5),(5,9)围19.
7、设有以下语句,则不是对 a数组元素的正确引用的是_,其中 0i10。 int a10=0,1,2,3,4,5,6,7,8,9, *p=a;(分数:1.00)A.ap-aB.*( for(i=3;i=1;i-) for(j=1;j=2;j+)printf(“%d“,i+j); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.4 32 54 3B.4 53 42 3C.2 33 44 5D.2 33 42 322.面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是( )。(分数:1.00)A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法
8、而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考23.输出语句:printf(“%d/n“,11+011);的输出结果是_。(分数:1.00)A.20B.22C.022D.02124.有以下程序: #include stdio.h void fun(int a,int b,int c) a=b; b=c; c=a; main( ) int a=10, b=20, c=30; fun(a,b,c); printf(“%d,%d,%d/n“,c,b,a); 程序运行后的输出结果是_。(分数:2.50)A.10,20,30
9、B.30,20,10C.20,30,10D.0,0,025.在下列模式中,能够给出数据库物理存储与物理存取方法的是_。(分数:1.00)A.外模式B.内模式C.概念模式D.逻辑模式26.下面不属于需求分析阶段任务的是_。(分数:1.50)A.确定软件系统的功能需求B.确定软件系统的性能需求C.需求规格说明书评审D.制定软件集成测试计划27.有以下程序 #includestdio.h main() int a1,a2;char c1,c2; scanf(“%d%c%d%c“, printf(“%d,%c,%d,%c“,a1,c1,a2,c2); 若想通过键盘输入,使得 a1的值为 12,a2 的
10、值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是:12,a,34,b 则正确的输入格式是_。 A B12a34bCR C12,a,34,bCR D (分数:1.00)A.B.C.D.28.下列关于栈的叙述中,正确的是_。(分数:1.00)A.栈底元素一定是最后入栈的元素B.栈顶元素一定是最先入栈的元素C.栈操作遵循“先进后出”的原则D.以上说法均错误29.以下能正确定义数组并正确赋初值的选项是_。(分数:1.00)A.int N =5,bNN;B.int a12 = 1, 3;C.int c2=1,2, 3,4;D.int d32=1,2, 3,4;30.下列函数的功能是
11、_。 void fun(char*a,char*b) while(*b=*a)!=“/0“) a+;b+; (分数:1.00)A.将 a所指字符串赋给 b所指空间B.使指针 b指向 a所指字符串C.将 a所指字符串和 b所指字符串进行比较D.检查 a和 b所指字符串中是否有“/0“31.若有代数式 (分数:2.00)A.sqrt(fabs(pow(n, x)+exp(x)B.sqrt(fabs(pow(n, x)+pow(x, e)C.sqrt(abs(nx+ex)D.sqrt(fabs(pow(x, n)+exp(x)32.定义无符号整数类为 UInt,下面可以作为类 UInt实例化值的是_
12、。(分数:1.00)A.-369B.369C.0.369D.整数集合1,2,3,4,533.有以下程序 #includestdio.h int f(int m) static int n=0; n+=m; return n; main() int n=0; printf(“%d,“,f(+n); printf(“%d/n“,f(n+); 程序运行后的输出结果是_。(分数:1.00)A.1,1B.1,2C.2,3D.3,334.若有“double a;”,则正确的输入语句是_。(分数:2.00)A.scanf(“%1f“,a);B.scanf(“%f“,C.scanf(“%1f“,D.scanf
13、(“%le“,a);35.下列叙述中正确的是_。(分数:1.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关36.若有说明语句:double *p,a;则能通过 scanf语句正确给输入项读入数据的程序段是 _ 。(分数:2.00)A.*p=scanf(“%1f“,p);B.*p=scanf(“%f“,p);C.p=scanf(“%1f“,*p);D.p=scanf(“%1f“,p);37.有以下程序 #include stdio.h void fun
14、1(char *P) char *q; q=p; while(*q!=“/0“) (*q)+; q+; main() char a=“Program“,*p; p= fun1(p); printf(“%s/n“,a); 程序执行后的输出结果是_。(分数:1.00)A.ProhsbnB.PrphsbnC.ProgsbnD.Program38.若有定义语句:int x=10;,则表达式 x- =x+x的值为_。(分数:2.00)A.0B.-20C.-10D.1039.下列不合法的 main函数命令行参数的表示形式是_。(分数:1.00)A.main(int a,char *c);B.main(ac
15、,av)int arc;char*av;C.main(c,v)int c;char*v;D.main(argc,argv)int argc;char argv;40.有以下程序: #includestdio.h main() int a=1,b=2,c=3,x; x=(ab)c; printf(“%d/n“,x); 程序运行后的输出结果是_。(分数:1.00)A.3B.1C.2D.0二级 C语言分类模拟题 558答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:40,分数:52.00)1.设数据元素的集合 D=1,2,3,4,5,则满足下列关系 R的数据结构中为线性结构的是
16、_。(分数:1.00)A.R=(1,2),(3,4),(5,1)B.R=(1,3),(4,1),(3,2),(5,4) C.R=(1,2),(2,3),(4,5)D.R=(1,3),(2,4),(3,5)解析:解析 一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,称为线性结构。A 项中有两个根结点 3和 5,错误;B 项根结点为 5,之后的结点除最后一个结点外都只有一个前件和后件,正确;C 项有两个根结点 1和 4,错误;D 项有两个根结点 1和 2,错误。2.若有定义语句: char *s1=“OK“, s2=“ok“; 以下选项中,能
17、够输出“OK“的语句是_。(分数:2.00)A.if(strcmp(s1, s2)!=0)puts(s2);B.if(strcmp(s1, s2)!=0)puts(s1); C.if(strcmp(s1, s2)=1)puts(s1);D.if(strcmp(s1, s2)=0)puts(s1);解析:解析 strcmp 函数比较字符串大小,区分大小写,所以当 s1,s2 不相等输出 s1就会输出“OK”,答案选择 B。3.有以下程序 #includestdio.h main() int x=1,y=0; if(!x)y+; else if(x=0) if(x)y+=2; else y+=3;
18、 printf(“%d/n“,y); 程序运行后的输出结果是_。(分数:1.00)A.3B.2C.1D.0 解析:解析 在 if else语句中 else总是与离它最近的 if配对。本题目中 x为 1,因此“!x”为 0,所以执行 else in吾句中的内容,判断(x=0)是否成立,因为 x为 1,所以条件不成立,因此 else if内部的 if.else语句不再执行,所以 y的值还是初始值 0。4.以下叙述中错误的是_。(分数:1.00)A.函数的返回值类型不能是结构体类型,只能是简单类型 B.函数可以返回指向结构体变量的指针C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员D.只
19、要类型相同,结构体变量之间可以整体赋值解析:解析 函数返回值类型可分为简单类型和结构体类型。5.若有定义语句:double a,*p=a;,以下叙述中错误的是_。(分数:1.00)A.定义语句中的*号是一个间址运算符B.定义语句中的*号只是一个说明符C.定义语句中的 p只能存放 double类型变量的地址 D.定义语句中,*p=n 把变量 a的地址作为初值赋给指针变量 p解析:解析 double a, *p=a 语句的意思是将 a的值存放到指针变量 p中,p 是指针可以随意指向任何地址,所以答案 C错误。6.若有以下程序段: int m=0,n=0;char c=“a“; scanf(“%d
20、%c %d“, x=(ab) printf(“%d/n“,x); 程序的运行结果是_。(分数:1.00)A.2B.1C.3 D.0解析:解析 ab 后值为 3,3data2=10,100,20,200; main() struct S p=data1; printf(“%d/n“,+(p.a); 程序运行后的输出结果是_。(分数:1.00)A.10B.11C.20D.21 解析:解析 声明 data是结构数组 s。初始化后得 data0.a=10;data0.b=100;data1.a=20;data1.b:200。主函数中 p=data1;即 p.a=data1.a;p.b=data1.b;
21、执行语句printf(“%d/n“,+(p.a);打印输出时 p.a先增 1再打印。p.a=data1.a=20,先增 1等于 21。所以选择D选项。12.以下有关宏替换的叙述不正确的是_。(分数:2.00)A.使用宏定义可以嵌套B.宏定义仅仅是符号替换C.双引号中出现的宏名不替换D.宏名必须用大写字母表示 解析:13.有以下程序: #includestdio.h main() int y=10; while(y-); printf(“y=%d/n“,y); 程序执行后的输出结果是_。(分数:1.00)A.y=-1 B.y=0C.y=1D.while构成无限循环解析:解析 y-表示 y使用后再
22、自减 1。所以最后一次 y的值为 0,条件不成立但仍要执行自减操作,y的值为-1,跳出循环。打印 y的值-1。14.设有定义:int a;float b;,执行 scanf(“%2d%f“,语句时,若从键盘输入 876 543.0回车,则 a和 b的值分别是_。(分数:2.00)A.87和 6.0 B.876和 543.0C.87和 543.0D.76和 543.0解析:解析 在格式字符前加入一个整数可以指定输入数据所占的宽度,所以赋值时会将 87赋给变量a,把 6.0赋给 float型变量 b。15.有以下程序 #include stdio.h main() int k=5; while(-
23、k) printf(“%d“,k-=3); printf(“/n“); 执行后的输出结果是_。(分数:1.00)A.死循环B.2C.4D.1 解析:解析 判断循环条件-k,k 值为 4,条件为真,执行输出语句,其中 k-=3执行后,k 为 1,即输出为 1,然后判断循环条件-k,值为 0,为假,循环结束。答案选择 D。16.有下列二叉树: (分数:2.50)A.ABCDFEG B.ACBDFGEC.ABDCGEFD.FCADBEG解析:解析 有 3种遍历方法:前序、中序和后序。中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。结果为 ACBDFEG。17.层次型、网状型和关系型数据库划分
24、原则是_。(分数:1.00)A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式 解析:解析 层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。18.设数据集合为 D=1,3,5,7,9,D 上的关系为 R,下列数据结构 B=(D,R)中为非线性结构的是_。(分数:1.00)A.R=(5,1),(7,9),(1,7),(9,3)B.R=(9,7),(1,3),(7,1),(3,5)C.R=(1,9),(9,7),(7,5),(5,3)D.R=(1,3),(3,5),(5,9)围 解析:解析
25、 一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后件,则称为线性结构,在数据结构中习惯称为线性表。A 选项中,5 为根节点,线性表为 51793。B 选项中,9 为根节点,线性表为 97135。C 选项中,1 为根节点,线性表为 19753。D 选项中,节点 1与 7都是根节点,属于非线性结构,故 D选项正确。19.设有以下语句,则不是对 a数组元素的正确引用的是_,其中 0i10。 int a10=0,1,2,3,4,5,6,7,8,9, *p=a;(分数:1.00)A.ap-aB.*( for(i=3;i=1;i-) for(j=1;j=
26、2;j+)printf(“%d“,i+j); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.4 32 54 3B.4 53 42 3 C.2 33 44 5D.2 33 42 3解析:解析 第一次执行外循环,i 的值为 3,第一次执行内循环 j的值为 1,j=2 条件成立,打印i+j的值,即 4;第二次执行内循环 j的值为 2,j=2 条件成立,打印 i+j的值,即 5;再判断条件不成立,打印回车换行符,跳出内循环。第二次执行外循环,i 的值为 2,内循环的执行同第一次一样,所以打印 3和 4,打印回车换行,结束内循环。第三次执行外循环 i的值为 1,同理内循环中
27、打印 2和 3,打印回车换行符,结束内循环。22.面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是( )。(分数:1.00)A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题 D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考解析:解析 面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。它强调模拟现实世界中的概念而不强调算法,它鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。本题答案为 C)。23.输出语句
28、:printf(“%d/n“,11+011);的输出结果是_。(分数:1.00)A.20 B.22C.022D.021解析:解析 printf(“%d/n“,11+011),11 为十进制,011 为八进制形式,打印格式%d 表示十进制格式输出,因此,先将八进制数转化为十进制,011(8)=811+180=9,相当于 printf(“%d/n“,11+9),故答案为 20,A 选项正确。24.有以下程序: #include stdio.h void fun(int a,int b,int c) a=b; b=c; c=a; main( ) int a=10, b=20, c=30; fun(a
29、,b,c); printf(“%d,%d,%d/n“,c,b,a); 程序运行后的输出结果是_。(分数:2.50)A.10,20,30B.30,20,10 C.20,30,10D.0,0,0解析:解析 本题主要考查函数形参的值传递。函数调用中发生的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。因此 B选项正确。25.在下列模式中,能够给出数据库物理存储与物理存取方法的是_。(分数:1.00)A.外模式B.内模式 C.概念模式D.逻辑模式解析:解析 数据库领域公认的标准结构是三级模式结构,它包括外模式
30、、模式和内模式,有效地组织、管理数据,提高了数据库的逻辑独立性和物理独立性。用户级对应外模式,概念级对应模式,物理级对应内模式,使不同级别的用户对数据库形成不同的视图。26.下面不属于需求分析阶段任务的是_。(分数:1.50)A.确定软件系统的功能需求B.确定软件系统的性能需求C.需求规格说明书评审D.制定软件集成测试计划 解析:解析 需求分析阶段的工作包括:需求获取、需求分析、编写需求规格说明书、需求评审,因此本题答案为 D。27.有以下程序 #includestdio.h main() int a1,a2;char c1,c2; scanf(“%d%c%d%c“, printf(“%d,%
31、c,%d,%c“,a1,c1,a2,c2); 若想通过键盘输入,使得 a1的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是:12,a,34,b 则正确的输入格式是_。 A B12a34bCR C12,a,34,bCR D (分数:1.00)A.B. C.D.解析:解析 在输入多个数据时,如果格式控制串中没有非格式字符,则认为所有输入的字符均为有效字符。因此应按选项 B的顺序输入数据。28.下列关于栈的叙述中,正确的是_。(分数:1.00)A.栈底元素一定是最后入栈的元素B.栈顶元素一定是最先入栈的元素C.栈操作遵循“先进后出”的原则 D.以上说法均错
32、误解析:解析 栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为“先进后出”表,或“后进先出”表,所以选择 C选项。29.以下能正确定义数组并正确赋初值的选项是_。(分数:1.00)A.int N =5,bNN;B.int a12 = 1, 3;C.int c2=1,2, 3,4;D.int d32=1,2, 3,4; 解析:解析 选项 A中,数组的下标应为整型变量;选项 B的行下标应为 2;选项 C的列下标不能省略。30.下列函数的功能是_。 void fun(char*a,char
33、*b) while(*b=*a)!=“/0“) a+;b+; (分数:1.00)A.将 a所指字符串赋给 b所指空间 B.使指针 b指向 a所指字符串C.将 a所指字符串和 b所指字符串进行比较D.检查 a和 b所指字符串中是否有“/0“解析:解析 while 循环条件为:(*b=*a)!=“/0“,执行时先把指针 a所指向的字符赋给指针 b所在内存单元,如果该字符不是结束标识“/0“,执行循环体 a+;b+;,指针 a、b 分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针 a所指向的字符赋给指针 b所在内存单元,直到遇到结束标识为止。因此 A选项正确。31.若有代数式 (分数:2
34、.00)A.sqrt(fabs(pow(n, x)+exp(x) B.sqrt(fabs(pow(n, x)+pow(x, e)C.sqrt(abs(nx+ex)D.sqrt(fabs(pow(x, n)+exp(x)解析:解析 B 选项中函数 pow(x, e)错误,应该直接使用 exp(x)函数。C 选项中函数 abs(nx+ex)错误,应该使用 fabs()返回浮点数的绝对值。D 选项中 pow(x, n)参数顺序错误。本题正确答案为 A。32.定义无符号整数类为 UInt,下面可以作为类 UInt实例化值的是_。(分数:1.00)A.-369B.369 C.0.369D.整数集合1,2
35、,3,4,5解析:解析 其中 A选项是有符号的,C 选项是小数,D 选项是结合并不是类的实例化对象,只有 B选项完全符合。33.有以下程序 #includestdio.h int f(int m) static int n=0; n+=m; return n; main() int n=0; printf(“%d,“,f(+n); printf(“%d/n“,f(n+); 程序运行后的输出结果是_。(分数:1.00)A.1,1B.1,2 C.2,3D.3,3解析:解析 fun(+n)返回值为 1,fun(n+)因为 fun函数内 n为 static类型,仍保持原值 1,函数返回值为 2,所以答
36、案选择 B。34.若有“double a;”,则正确的输入语句是_。(分数:2.00)A.scanf(“%1f“,a);B.scanf(“%f“,C.scanf(“%1f“, D.scanf(“%le“,a);解析:35.下列叙述中正确的是_。(分数:1.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量 C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关解析:解析 算法的效率与问题的规模和数据的存储结构都有关,A 选项错误。算法的时间复杂度,是指执行算法所需要的计算工作量,B 选项正确。由于数据元素在
37、计算机存储空间中的位置关系可能与逻辑关系不同,因此数据的逻辑结构和存储结构不是一一对应的,C 选项错误。算法的时间复杂度和空间复杂度没有直接的联系,D 选项错误。36.若有说明语句:double *p,a;则能通过 scanf语句正确给输入项读入数据的程序段是 _ 。(分数:2.00)A.*p=scanf(“%1f“,p);B.*p=scanf(“%f“,p);C.p=scanf(“%1f“,*p);D.p=scanf(“%1f“,p); 解析:解析 double*p,a;语句表示定义了一个指向双精度型的指针变量 p和双精度型变量 a,而语句p= q=p; while(*q!=“/0“) (*
38、q)+; q+; main() char a=“Program“,*p; p= fun1(p); printf(“%s/n“,a); 程序执行后的输出结果是_。(分数:1.00)A.Prohsbn B.PrphsbnC.ProgsbnD.Program解析:解析 函数 fun1功能是将字符串中元素加 1,main 函数将数组第 4个元素的指针传进 fun1函数中,所以答案选择 A。38.若有定义语句:int x=10;,则表达式 x- =x+x的值为_。(分数:2.00)A.0B.-20C.-10 D.10解析:解析 算术运算符+的优先级高于-=,且-=的结合方向为自右向左,所以表达式 x-=
39、x+x可以表示成 x=x-(x+x)=10-(10+10)=-10,选择 C。39.下列不合法的 main函数命令行参数的表示形式是_。(分数:1.00)A.main(int a,char *c);B.main(ac,av)int arc;char*av;C.main(c,v)int c;char*v;D.main(argc,argv)int argc;char argv; 解析:解析 main 函数的参数通常有两个,前者为整型,后者为字符型指针数组。参数的名字可以是任意合法的标识符。而且,形如*av 与*av等价,所以选项 A、B、C 均正确,选项 D是错误的。40.有以下程序: #includestdio.h main() int a=1,b=2,c=3,x; x=(ab)c; printf(“%d/n“,x); 程序运行后的输出结果是_。(分数:1.00)A.3 B.1C.2D.0解析:解析 本题考查位运算符以及相关运算,为按位或,为按位与,那么 ab为 3,再与 c按位与仍然为 3,所以答案为 A选项。