版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算二级C语言易错知识点1. 指针是用来存放地址的变量,用(类型名*指针变量名)的形式定义。赋值时应将某个变量地址即 &X赋给指针变量2.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp) 的 返回值为A) 0B) '0'C) 非0值D) NULL【解析】本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到 达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项C正 确。3.有以下程序#i nclude <stdio.h>mai n()int a=5,b=1,t;t=(a<<2)|b;prin
2、tf("%dn",t);程序运行后的输出结果是A) 1B) 11C) 6D) 21【解析】本题考查位运算,以及按位或操作,将a左移一位相当于是将a乘以了4,所以a<<2等于20, 二进制表示为00010100,与b按位或得到00010101,即 21,所以选项D正确。4.有以下程序#in clude <stdio.h>#defi ne N 5#define M N+1#defin e f(x) (x*M)mai n() int i1,i2;i仁 f(2);i2=f(1+1);prin tf("%d %dn",i1,i2);程序的运
3、行结果是A) 12 7B) 12 12C) 11 11D) 11 7所以本题中执行【解析】本题考查宏定义的用法,宏定义只是做个简单的替换,f(2)=(2*N+1)=11,执行 f(1+1)=(1+1*N+1)=7。选项 D正确。5.有以下程序#i nclude <stdio.h>#include <string.h>struct Aint a;char b10;double c;;void f(struct A t);mai n()struct A a=1001,"Zha ngDa",1098.0;f(a);prin tf("%d,%s,%
4、6.1fn", a.a,a.b,a.c);void f(struct A t)t.a=1002;strcpy(t.b,"Cha ngRo ng");t.c=1202.0;程序运行后的输出结果是A) 1002, ZhangDa,1202.0B) 1002,Cha ngRo ng,1202.0C) 1001, Cha ngRo ng,1098.0D) 1001,Zha ngDa,1098.0【解析】本题考查结构体的相关操作以及传值、 传址的区别,该题中调用f函数 后,会生成参数a的一个副本,而不会改变a的值,所以a值维持原值,选项D 正确。6.假定已建立以下链表结构,
5、且指针 p和q已指向如图所示的结点:则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是A) p->n ext=q->n ext;free(q);B) p=q->n ext;free(q);C) p=q;free(q);D) (*p). next=(*q). next;free(p);【解析】本题考查删除链表中的节点操作,其方法是将要删除节点的上个节点的 下个节点指向要删除节点的下个节点,然后释放该要删除节点,所以选项A正确以下结构体类型说明和变量定义中正确的是A) struct REC; int n; char c;REC t1,t2;B) typedef stru
6、ct int n;char c; REC;REC t1,t2;C) typedef struct REC; int n=0; char c='A' t1,t2;D) struct int n;char c; REC;REC t1,t2;【解析】本题考查结构体的相关知识,选项A中struct REC后面不能有分号,C选项中typedef struct REC的后面也不能有分号,选项 D中REC已经是结构体变量,不能当做结构体类型来使用。8.下列函数的功能是void fun( char *a,char *b)while(*b=*a)!='0') a+;b+;A) 将
7、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选项正确。9.有以下程序#in clude <stdio.h>void fun( char *a,
8、char *b) while(*a='*') a+;while(*b=*a) b+;a+;mai n() char *s="*a*b*" , t80;fun( s,t); puts(t);程序的运行结果是A) abB) a*bC)*a*bD) a*b*【解析】在函数fun (char *a,char *b) 中,while(*a = = '*')a+ 的功能是:如 果*a的容为'*',则a指针向后移动,直到遇到非'*'字符为止,退出循环进入 下一个while循环,在while(*b = *a)b + ;a +
9、;中,把字符数组a中的字 符逐个赋给字符数组b。所以在主函数中,执行fun(s,t)语句后,字符数组t 中的容为"a*b*"。因此D选项正确。10.以下关于字符串的叙述中正确的是A) 空串比空格打头的字符串小B) 两个字符串中的字符个数相同时才能进行字符串大小的比较C) 可以用关系运算符对字符串的大小进行比较D) C语言中有字符串类型的常量和变量【解析】字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关 系,B选项不正确;字符串比较大小除了使用库函数 strcn3()以外,就只能靠自 己写代码来实现了,而不能通过关系运算符来比较大小。 因为字符串在表达式中 相当
10、于con st char*,即常字符指针,代表的是字符串的首地址,关系运算符会 将两个字符串的首地址值比较大小,这是毫无意义的。C选项不正确。C语言中只有字符串常量而没有字符串变量,D选项描述不正确;空串的长度为 0,而以空格打头的字符串的长度至少为1,因此A选项是正确。11.以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0 时,进行由大到小排序。#i nclude <stdio.h>void f(i nt b,i nt n ,i nt flag)int i,j,t;for(i=0;i< n-1;i+)for(j=i+1;j <n ;j+)i
11、f(flag ? bi>bj:bi<bj) t=bi;bi=bj;bj=t; mai n()int a10=5,4,3,2,1,6,7,8,9,10,i;f(&a2,5,0);f(a,5,1);for(i=0;i<10;i+)prin tf("%d,",ai);程序运行后的输出结果是A) 1,2,3,4,5,6,7,8,9,10,B) 3,4,5,6,7,2,1,8,9,10,C) 5,4,3,2,1,6,7,8,9,10,D) 10,9,8,7,6,5,4,3,2,1,【解析】本题重点考查函数的参数传递,函数的参数传递分为传值和传地址两种 情况。
12、本题就是结合数组考查参数传递的情形。函数f完成的功能是对数据进行 排序,语句f(&a2,5,0)的作用是对从a2开始的5个元素进行从大到小排序。注意:这里传递的是地址&a2,所以排序操作可看作是直接对数组a操作,执行后的结果为5,4,7,6,3,2,1,8,9,10。语句f(a,5,1)对数组a的前5个元素从小到大排序,排序后数组为:3,4,5,6,7,2,1,8,9,10 。因此B选项正确。12.若有定义语句:int a23,*p3;则以下语句中正确的是A) p=a;B) PO=a;C) p0=&a12;D) p1=&a;【解析】A选项错误,因为p是指向一个指
13、针数组,作为数组名,不能指向别的 地方。B选项错误,因为p0是一个int指针,也就是int* ;而a是一个指向 指针的指针int* °C选项正确,因为p0是一个int* ,a12是int,&a12 是int*,类型吻合。D选项错误,因为a作为数组名,不能取地址,即使能取, p1是int* ,&a是int* ,类型不对。因此 C选项正确。13.以下叙述中错误的是A) C程序必须由一个或一个以上的函数组成B) 函数调用可以作为一个独立的语句存在C) 若函数有返回值,必须通过return语句返回D) 函数形参的值也可以传回给对应的实参【解析】形参是函数定义时由用户定义的形式
14、上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在C语言中,实参向形参传送数据的方式是“值传递”。因此D选项正确。14.有以下程序#i nclude <stdio.h>mai n() int a=1,b=2;for( ;a<8;a+) b+=a;a+=2;prin tf("%d,%dn",a,b);程序运行后的输出结果是A) 9,18B) 8,11C) 7,11D) 10,14【解析】第一次循环a的值为1,满足条件,执行b+=a与a+=2,则b的值变为 3, a的值变为3。执行a+,a的值为4,满足条件进入第二次循环,执行完循 环体后b的值为
15、7,a的值为6。执行a+,a的值为7,满足条件进入第三次循 环,执行完循环体后b的值为14, a的值为9。执行a+, a的值变为10。所以 选择D选项?15.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是A) (E>0|E<0)B) (E=0)C) (! E=0)D) (E!=0)【解析】while语句中条件表达式E的值不为0即为真,认为满足条件,所以与 B选项中表达式的含义正好相反,选择B选项。16.若有定义:int a,b;通过语句scan f("%d;%d",&a,&b);能把整数3赋给变量a, 5赋给变量b的输入数据
16、是A) 3 5B) 3,5C) 3;5D) 35【解析】输入数据的格式必须与scanf()的格式控制串完全匹配,所以输入时必 须在3和5之间输入""。以下关于C语言的叙述中正确的是A)C语言的数值常量中夹带空格不影响常量值的正确表示B)C语言中的变量可以在使用之前的任何位置进行定义C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D)C语言中的注释不可以夹在变量名或关键字的中间【解析】C语言的数值常量中不能夹带空格,所以 A错误。C语言中的变量都必 须先定义再使用,对变量的定义通常放在函数体的前部,但也可以放在函数外部 或复合语句的开头,不能随便放置,所以B错误
17、。在C语言中运算符两侧的运算 数据类型可以不一致,且结果与精度较高的保持一致,所以 C错误?18.一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是()A) 1 : 1联系B) 1 : m联系C) m : 1联系D)m : n联系【解析】因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授所以他 们之间是多对多的关系,可以表示为 m n。19.负责数据库中查询操作的数据库语言是()。A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言【解析】数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵 语言:负责数据的操纵,包括查询及增、删、改等操作
18、;数据控制语言:负责数 据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。F面描述中错误的是()A)系统总体结构图支持软件系统的详细设计B)软件设计是将软件需求转换为软件表示的过程C)数据结构与数据库设计是软件设计的任务之一D)PAD图是软件详细设计的表示工具【解析】详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确 定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细 节,所以A)错误。21.某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根 结点在第1层)()。A)3B)4C)6D)7【解析】根据二叉树的基本性质 3:在任意一棵二叉树中
19、,度为0的叶子结点总 比度为2的结点多一个,所以本题中度为2的结点为1- 1 = 0个,所以可以知道 本题目中的二叉树的每一个结点都有一个分支, 所以共7个结点共7层,即度为 7。22.下列叙述中正确的是()。A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)以上说法均不正确解析】栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操 作均由栈顶指针的变化来操作,所以选择 C)。23.下列关于栈叙述正确的是()。A)栈顶元素最先能被删除B)栈顶元素最后才能
20、被删除C)栈底元素永远不能被删除D)栈底元素最先被删除解析】栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。 栈底元 素最先入栈却最后被删除。所以选择 A)。24.有以下程序:#i nclude <stdio.h>mai n() un sig ned char a= 2,b = 4,c = 5,d;d = a|b;d & = c;pri ntf("%dn",d); 程序运行后的输出结果是()。A) 3B) 4C) 5D)6【解析】&按位与,如果两个相应的二进制位都为 1,则该位的结果值为1,否 则为0。|按位或,两个相应的二进制位中只要
21、有一个为 1,该位的结果值为1。2的二进制为00000010,4的二进制为00000100,所以做或运算结果为 00000110, 该数与5即00000101做与操作结果为00000100,即4。25.以下叙述中错误的是()。A)使用三种基本结构构成的程序只能解决简单问题B)结构化程序由顺序、分支、循环三种基本结构组成C)C语言是一种结构化程序设计语言D)结构化程序设计提倡模块化的设计方法正确答案:A 答疑:【解析】使用顺序,选择(分支),循环三种基本结构构成的程序可以解决 所有问题,而不只是解决简单问题,所以 A)错误。26. 数据库应用系统中的核心问题是数据库的设计。27.耦合性和聚性是对
22、模块独立性度量的两个标准。下列叙述中正确的是()。A)提高耦合性降低聚性有利于提高模块的独立性B)降低耦合性提高聚性有利于提高模块的独立性C)耦合性是指一个模块部各个元素间彼此结合的紧密程度D)聚性是指模块间互相连接的紧密程度正确答案:B答疑:【解析】模块独立性是指每个模块只完成系统要求的独立的子功能,并且 与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高聚, 低耦合,即减弱模块之间的耦合性和提高模块的聚性, 有利于提高模块的独立性, 所以A)错误,B)正确。耦合性是模块间互相连接的紧密程度的度量而聚性是指 一个模块部各个元素间彼此结合的紧密程度,所以C)与D)错误。27.
23、软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误, 所以选项A)错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。28. 编译软件、操作系统、汇编程序都属于系统软件,只有C)教务管理系统才是应用软件。30.冒泡排序与简单插入排序与简单选择排序法在最坏情况下均需要比较n(n -1)/2次,而堆排序在最坏情况下需要比较的次数是3
24、1.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。A) 10B) 8C)6D)4正确答案:C答疑:【解析】根据二叉树的基本性质 3:在任意一棵二叉树中,度为0的叶子 节点总是比度为2的节点多一个,所以本题中是 5+ 1=6个。29. 栈支持子程序调用。 栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态, 然后转去执行子程序,最终 把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为 A)。33.以下叙述中正确的是()。A)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B)
25、打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才 能读到第1个数据D)C语言中的文件是流式文件,因此只能顺序存取数据正确答案:A答疑:【解析】B)选项中打开一个已存在的文件并进行了写操作后,原有文件中 的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C)选项中在一个程 序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可 以进行随机读写。34.有以下程序:#i nclude <stdio.h>#i
26、 nclude <stdlib.h>mai n() int *a,*b,*c;a= b= c = (int *)malloc(sizeof(i nt);*a = 1;*b = 2;*c = 3;a= b;printf("%d, %d %dn",*a,*b,*c);程序运行后的输出结果是()。A) 1 , 1, 3B) 2 , 2, 3C) 1 , 2, 3D) 3 , 3, 3正确答案:D答疑:【解析】malloc函数动态分配一个整型的存空间,然后把函数返回的地 址用(int*)强制类型转换为整型指针,再把它赋给a,b,c,即让指针变量a,b, c都指向刚申请的
27、存空间。所以只有最后一个赋值语句*c二3的值保留在了该空间,因为a,b,c三个指针变量均指向该空间,所以打印该空间的数值为3。35.有以下程序:#i nclude <stdio.h>mai n() un sig ned char a = 2,b = 4,c = 5,d;d = a|b;d & = c;pri ntf("%dn",d);程序运行后的输出结果是()。A) 3B) 4C) 5D) 6 正确答案:B答疑:【解析】&按位与,如果两个相应的二进制位都为 1,则该位的结果值为 1,否则为0o |按位或,两个相应的二进制位中只要有一个为 1,该位
28、的结果值 为1o 2的二进制为00000010,4的二进制为00000100,所以做或运算结果为00000110,该数与5即00000101做与操作结果为00000100,即4。36.有以下程序:#i nclude <stdio.h>#defi ne PT 3.5;#defi ne S(x) PT*x*x ;mai n() int a = 1,b = 2;pri ntf("%4.1fn",S(a+ b);程序运行后的输出结果是()。A) 7.5B) 31.5C) 程序有错无输出结果D) 14.0正确答案:C答疑:【解析】宏定义不是C语句,末尾不需要有分号。所以语
29、句printf("%4.1fn" ,S(a + b);展开后为 printf("%4.1fn" ,3.5;*a+ b*a +b;);所以程序会出现语法错误。37.有以下程序:#i nclude <stdio.h>struct S int a,b; data2 = 10,100,20,200;mai n() struct S p = data1;prin tf("%dn",+ (p.a);程序运行后的输出结果是()。A)10B)11C)20D)21正确答案:D答疑:【解析】声明data是结构S数组。初始化dataO.a =
30、10; dataO.b =100; data1.a = 20; data1.b = 200。主函数中 p= data1; 即 p.a = data1.a ; p.b = data1.b ;执行语句 printf("%dn",+ + (p.a);打印输出时p.a 先增1再打印。p.a = data1.a = 20,先增1等于21。38.以下叙述中错误的是()。A)可以通过typedef增加新的类型B)可以用typedef将已存在的类型用一个新的名字来代表C)用typedef定义新的类型名后,原有类型名仍有效D)用typedef可以为各种类型起别名,但不能为变量起别名正确答案:
31、A答疑:【解析】关键字typedef的作用只是将C语言中的已有的数据类型作了置 换,并不是增加新的类型,所以 A)错误。39.在一个C源程序文件中所定义的全局变量,其作用域为()。A)由具体定义位置和extern说明来决定围B)所在程序的全部围C)所在函数的全部围D)所在文件的全部围正确答案:A答疑:【解析】全局变量的作用域是从声明处到文件的结束。所以选择A)40.有以下程序:#i nclude <stdio.h>int fun() static int x = 1;x* = 2;return x;mai n() int i,s = 1;for(i = 1;i< = 3;i
32、+ ) s* = fun ();prin tf("%dn",s);程序运行后的输出结果是()。A) 10B) 30C) 0D) 64正确答案:D答疑:【解析】本题目中静态局部变量x,在静态存储区分配存储单元,在程序整个运行期间都不释放。所以第一次循环s的值为2,第二次循环中,返回的x的值为4,所以s的值为8,第三次循环,返回的x的值为8,所以s的值为64。41.有以下函数:int fun( char *x,char *y) intn = 0;while (*x= = *y) && *x!='0') x + ;y + ;n + ;return
33、n;函数的功能是()。A) 将y所指字符串赋给x所指存储空间B) 查找x和y所指字符串中是否有'0'C) 统计x和y所指字符串中最前面连续相同的字符个数D) 统计x和y所指字符串中相同的字符个数正确答案:C答疑:【解析】本题中由循环条件可知遇到0'或x与y所指的字符的值不等中 的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字 符个数。42.有以下程序:#i nclude <stdio.h>void swap(char *x,char *y) char t;t = *x;*x = *y;*y = t;mai n() char *s1=&q
34、uot;abc", *s2="123"swap(s1 , s2);printf("%s , %sn",s1 , s2);程序执行后的输出结果是()。A) 321 , cbaB) abc , 123C) 123 , abcD) 1bc , a23正确答案:D答疑:【解析】字符串是一个特殊的数组,所以按照数组的规则,s1应该指向的是数组的首地址,即"abc"的第一个字符的地址。s2指向的是"123"的第一个 字符的地址。调用swap函数之后交换的是两个字符串的第一个字符'a'和'1
35、39;的 容,所以打印输出为D)。以下不能将s所指字符串正确复制到t所指存储空间的是()A) do*t + + = *s + ;while(*s );B) for(i = O;ti = si;i + + );C) while(*t = *s)t + ;s + + D) for(i 二0,j 二O;ti + + 二sj + ;);正确答案:A答疑:【解析】do*t + + = *s + + ;while(*s); 不能因为当*s ='0'时, while(*s)跳出循环,这样字符串结束标志'0'没有复制给*t,造成*t不完整。注意,*t + + = *s +是先执
36、行t = *s ,然后才进行t = t + 1, s = s+ 1 o B), C), D)都能将'0'复制过去。44.以下语句中存在语法错误的是()。A) char ss620;ss1= "right?"B) char ss()20= "right?"C) char *ss6;ss1= "right?"D) char *ss()= "right?"正确答案:A答疑:【解析】数组定义后,不可以对数组整体赋值,s是二维数组,因ss1是一维字符数组,即字符串,字符串赋值可以使用 strcpy(ss1 ,
37、"right"); 这样的形式,而选项A)中对二维数组中的第“ 1”维(相当于一个一维数组)赋值, 是不可以的。选项B)和D)是定义时对数组初始化,这是可以的。选项C)中,将字符串在存中的首地址赋给指针数组的一个元素,这是可以的。45.#i nclude <stdio.h>mai n() 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;prin tf("%dn",t);程序运行后的输出结果是()A
38、) 3B) 4C) 1D) 9正确答案:B答疑:【解析】每次循环只循环一次就结束,第一次外循环时t = t + bObOO =1 + b00 = 1 + 0= 1;第二次外循环时 t = t + b1b11= 1 + b11=1+ 1 = 2;第三次外循环时 t = t + b2b22= 2+ b22 = 2+ 2= 4。46.下列定义数组的语句中,正确的是()。A) #defi ne N 10int xN;B) int N = 10;int xN;C) int x0.10;D)int x;正确答案:A答疑:【解析】数组说明的一般形式为:类型说明符数组名常量表达式B)中N是变量,不能用变量定义
39、数组长度。C)选项中数组长度是非法的一串数字。 定义数组时必须为其指明长度,D)选项中数组长度为空,所以非法。47.有以下程序:#i nclude <stdio.h> mai n() int n,*p = NULL;*p = &n;prin tf("l nput n:");sca nf("%d",&p);pri ntf("output n");pri ntf("%dn",p);该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句 正确的是()A) int n,*p =
40、NULL;B) *p = &n;C) sca nf("%d",&p)D) pri ntf("%dn",p);正确答案:A答疑:【解析】选项B)的正确写法应为p = &n;选项C)的正确写法应为scanf("%d",p);选项 D)的正确写法应为 printf("%dn",*p)。48.有以下程序:#i nclude <stdio.h>int add( int a,i nt b) retur n (a+ b);mai n() int k,(*f)(),a= 5,b = 10;f =
41、 add;则以下函数调用语句错误的是()。A) k 二 f(a,b);B) k = add(a,b);C) k 二(*f)(a,b);D) k = *f(a,b);正确答案:D答疑:【解析】D)选项中*f(a , b)表示调用后返回一个指向整型数据的地址指针, 即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。49.若有定义:float x= 1.5; int a= 1,b = 3,c = 2;则正确的 switch 语句是()。A) switch(a + b) case 1 : printf("*n");case 2 + 1: printf("*n&qu
42、ot;); B) switch(i nt)x); case 1 : printf("*n");case 2 : printf("*n"); C) switch(x) case 1.0: printf("*n");case 2.0 : printf("*n"); D) switch(a + b) case 1 : printf("*n");case c : printf("*n"); 正确答案:A答疑:【解析】B)选项中switch(int)x);语句中不应该有最后的分号。 s
43、witch(expr1) 中的expr1不能用浮点类型或long类型,也不能为一个字符串, 所以C)错误o case后面常量表达式的类型必须与switch后面表达式的类型一致, 所以D)错误。50.有以下程序:#i nclude <stdio.h>mai n() int x = 1,y = 0;if(!x)y + +;else if (x = = 0)if(x) y + = 2;else y + = 3;prin tf("%dn",y);程序运行后的输出结果是()A) 3B) 2C) 1D) 0正确答案:D答疑:【解析】在if else语句中else总是与离它最
44、近的if配对。本题目中x 为1所以!x为0,所以执行else if语句中的容,判断(x = = 0)是否成立,因为 x为1所以条件不成立,所以else if 部的ifelse语句不再执行,所以y的 值还是初始值0。51.(x y)?(x +若有定义int x,y;,并已正确给变量赋值,则以下选项中与表达式 + ):(y + + )中的条件表达式(x y)等价的是()。A) (x y<0|x y>0)B) (x y<0)C) (x y>0)D) (x y = = 0)正确答案:A答疑:【解析】条件表达式:x =表达式1?表达式2:表达式3的含义是:先求 解“表达式” 1,
45、若为非0(真),则求解“表达式2”,将“表达式2”的值赋给 x。若“表达式1”的值为0(假),则求解“表达式3”,将“表达式3”的值赋 给x。在本题中与“表达式1”: (x y)等价的是(x y<0|x y>0)。52. z = x + ,y + , + y;因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式表示成(z = x + + ),(y + ),( + y)。然后从左向右先 计算表达式z = x + +,因为x+先使用后自增,所以z的值为1,x的值为2。再计算逗号表达式第二个表达式y+ +,此时y的值为2,最后计算第三个表达式+ y, y的值为3。设变量已正确定义
46、并赋值,以下正确的表达式是 ()A)x = y + z + 5, + + yB)in t(15.8%5)C)x = y*5 = x+ zD)x = 25%5.0正确答案:A答疑:【解析】B)与D)选项中取模运算符的左右两个操作数均应为整数,所以B)、D)错误。C)选项中不能将x+ y的值赋给表达式y*5,所以C)错误。54. C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。55. 以下选项中,能用作数据常量的是()。A)115L B) 0118 C) 1.5e1.5 D) o115正确答案:A答疑:【解析】A)选项中115L表示115是长整型数据,合法。B)选项是八进制 常量的表示方法,但是在八进制中不能含有数字 8,所以B)错误。C)选项中e 后面应该是整数不能是小数1.5,所以C)错误。D)选项中八进制常量应该是数字 "0"开始,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度木饰面原材料进口与分销合同3篇
- 2025年亲子遗赠协议草案
- 2025年代理商代理加盟采购合资合作协议
- 2025年合资合作收益分配协议
- 2025年企业外包劳务协议
- 2025年智慧城市物业管理服务标准合同范本6篇
- 漫谈加强物资管理提高企业经济效益-图文
- 《皮质醇增多征荆》课件
- 2025年度医院病理科诊断服务承包合同4篇
- 2025年度汽车转让及二手车交易税费减免合同
- 个体工商户章程(标准版)
- 废旧物资买卖合同极简版
- 2024年正定县国资产控股运营集团限公司面向社会公开招聘工作人员高频考题难、易错点模拟试题(共500题)附带答案详解
- 智能衣服方案
- 李克勤红日标准粤语注音歌词
- 教科版六年级下册科学第一单元《小小工程师》教材分析及全部教案(定稿;共7课时)
- 中药材产地加工技术规程 第1部分:黄草乌
- 危险化学品经营单位安全生产考试题库
- 案例分析:美国纽约高楼防火设计课件
- 移动商务内容运营(吴洪贵)任务一 用户定位与选题
- 工作证明模板下载免费
评论
0/150
提交评论