1、a+7=c+b和a=a+7,其中第一个是错的,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项B),它实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。3. 若有以下定义;char a;int b; float c;double d;则表达式“a*b+d-c”值的类型为A.floatB.intC.charD.doubleD4. 设有定义语句 int x6=2,4,6,8.5,7),*p=x,i; 要求依次输出x数组6个元素中的值,不能完成此操作的语句是_。A.for(i=0;i6;i+) printf(%2d,*(p+);B.for
2、(i=0;i+) prinff(,*(p+i);C.for(i=0;,*p+);D.for(i=0;,(*p)+);解答 选项A、B、C显然都能够正确输出数组x中的元素,但是在D选项中,该程序一共输出了六次数组x中的第一个元素自加1的值,因此是错误的。5. 以下不合法的数值常量是_。A.011B.le1C.8.0E0.5D.0xabcdC评析:数值常量区分为不同的类型,如12、0、-3为整型常量,4.6、-123为实型常量,a,A为字符常量。实数常量有两种表示形式:十进制小数形式和指数形式。用指数形式表示必须注意字母e(或E)之前必须有数字,且e(或 E)后面的指数必须为整数。如:e3、7e3
3、.5、8.0E0.5都是不合法的。6. 有以下程序 main() int x,y,z; x=y=1; z=x,y,y; printf(%d,%d,%dn,x,y,z); 程序运行后的输出结果是_。A.2,3,3B.2,3,2C.2,3,1D.2,2,1x:表示在使用x之后,使x的值加1;y:表示在使用y之后,使y的值加1;y:表示在使用y之前,使 y的值加1。此题中执行z=x,是将x的值先赋给z,所以z=1,接下来x自行加1,其结果为2:执行y后,y=2,执行后,y=3;故答案选C。7. 以理对枚举类型名的定义中正确的是 _。A.enum a=one, two, three);B.enum a
4、 one=9, two=1three;C.enum a=one, twothree;D.enum a . 解答 声明枚举类型用enum开头。例如:enum weekday(sun,mon,tue,wed,thu,fri,sat); 说明:1、在C编译中,对枚举元素按常量处理,同时可以改变他们的值。2、枚举值可以用来做判断比较。3、一个整数不能直接赋给一个枚举变量。8. 有以下程序段 char ch; int k ch=; k=12;%c,%d,ch,ch,k);k=%dn,k); 已知字符a的ASCII码值为97,则执行上述程序段后输出结果是 A.因变量类型与格式描述符的类型不匹配输出无定值B
5、.输出项与格式描述符个数不符,输出为零值或不定值C.a,97,12k=12D.a,97,k=12解答 输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。9. 有以下程序 int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2)continue; x+;x=%dn,x); 程序执行后的输出结果是 A.x=4B.x=8C.x=6D.x=12解答 此程序考查了for循环和x+。对于大循环,有两个x+,其中循环3次,对于小
6、循环,循环三次,但是运行了两次x+,所以最后结果是6+2=8。10. 有以下程序main() int i=1,j=2,k=3;if(i+=1(+j=3|k+=3)printf(%d %d %dn,i,j,k);程序运行后的输出结果是_。A.1 2 3B.2 3 4C.2 2 3D.2 3 311. 以下程序的输出结果是_。 int i,x33=9,8,7,6,5,4,3,2,1,*p=&x11; for(i=0;i4;i+=2) %d ,pi);A.5 2B.5 1C.5 3D.9 7解答 首先使指针p指向x11,即5,然后通过循环输出p0和p2。12. 若有定义float a=25,b,*p
7、=&b;,则下列对赋值语句*p=a;和p=&a;的正确解释为 。A.两个语句都是将变量a的值赋予变量pB.*p=a是使p指向变量a,而p=&a是将变量a的值赋予变量指针pC.*p=a是将变量a的值赋予变量b,而p=&a是使p指向变量aD.两个语句都是使p指向变量a解答 “p”是指针变量,指向一个地址;“*p”为p指针所指向地址的内容。13. 下列程序执行后的输出结果是_。 char arr24; strcpy(arr,she);strcpy(arr1,he arr03=&%sn,arr);A.she&heB.heC.sheD.sheheA14. 有以下程序: #include string.h
8、 struct STU (char name10; int num; ; void f(char *name, int num) struct STU s2=SunDan,20044Penghua,20045; num=s0num; strcpy(name,s0name);YangSall,20041,LiSiGao,20042,*p;p=&s1; f(p-name,p-num);%s%dn,p-name,p-num); 程序运行后的输出结果是 _。A.SunDan 20042B.SunDan 20044C.LiSiGuo 20042D.YangSan 20041解答 本题主函数中定义了结构体
9、类型的指针变量p,并使其指向了结构体类型的数组s1,并通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了主函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就是刘主函数中p-name的改变,而函数f中对形参num的改变并不会影响主函数中p-num的值,因为此时传递给num的是一个值,而不是地址。15. 一个C程序可以包含任意多个不同名的函数,但有且仅有一个_。A.过程B.函数C.主函数D.子程序解答 主函数main在C语言程序中有且只能有一个,它是程序执行
10、的入口。16. 下列选项中不属于C语言的数据类型是( )。A.复数型B.逻辑型C.双精度型D.集合型解答 在C语言中,数据类型可分为基本数据类型、构造数据类型、指针类型、空类型4大类,其中基本类型;字符型、整型、实型(单精度型和双精度型)、枚举类型。构造类型:数组、结构体、公用体。选项B中的逻辑型和C中双精度类型都属于基本数据类型,选项D集合类型属于构造类型;而选项A复数型不是C语言的数据类型。17. 面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是 。A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解
11、决问题D.不强调模拟现实世界中的算法而强调概念解答 面向对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但它鼓励开发者在软件开发的绝大部分中都应该用领域的概念去思考。18. 有下列二叉树,对此二叉树前序遍历的结果为 。A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH解答 对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。19. 以下能正确定义二维数组的是_。A.int a3;B.int a3=2*3;C.int a3=;D.int a23=1),2,3,4);解答 本题中,A、B、C选项犯了同样的错误,没有对数组a的第一个下标进行初始化,不能正确地申请空间,因此是错误的,而在D选项中,数组的存放形式是:1,0,0),2,0,0,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1