〓1.在面向对象方法中,不属于\对象\基本特点的是( )。
A)一致性 B)分类性 C)多态性 D)标识唯一性
【2.设有定义:int x=11,y=12,z=0;,以下表达式值不等于12的是( )。 A)z=(x==y) B)(z=x,y) C)z=(x,y) D)(z,x,y)
考查运算符与表达式,A)中先计算(x==y),为0,将0赋值给z,表达式值为0,A)错;选项B)、C)、D)均涉及到逗号表达式,整个逗号表达式的值为最后一个表达式的值,所以均为12。选A)。
〓3.有以下程序段 #include
char name[50];
scanf(\
当执行上述程序段,从键盘上输入55566 7777abc 后,y的值为( )。
函数scanf()输入字符串时默认空格为间隔符,格式控制符若为\表示控制输入语句的宽度为2,程序中输入为55566 7777abc时,只把55赋予变量x,而把566赋予变量y,7777abc赋予变量name,所以答案选A)。
〓4.以下不能输出小写字母a的选项是( )。
A)printf(\ B)printf(\ C)putchar(97); D)putchar('a');
选项A)中输出语句的输出项和格式控制符不相符,应写作\a′);\,答案选A)。
〓5.以下程序段中的变量已正确定义 for( i=0; i<4; i++,i++ )
for( k=1; k<3; k++ ); printf(\该程序段的输出结果是( )。
A)* B)**** C)** D)********
考查循环嵌套。循环嵌套执行次数为 外层循环次数*内层循环次数。但是本题中循环次数与输出结果没有关系,两层循环之后只是执行了一个空语句 ;,然后输出一个′* ′。故而答案选A)。
〓6.以下叙述中正确的是( )。
A)调用函数时,函数名必须与被调用的函数名完全一致 B)函数调用时,不必区分函数名称的大小写 C)函数名允许用数字开头
D)在函数体中只能出现一次return语句
调用函数的时候只有保证调用语句的函数名和被调函数的函数名、参数列表一致才能保证调用的正确性,A)正确。C语言对大小写敏感,选项B)错。用户自定义的函数名需要遵循用户标识符的命名规则,由字母、数字、下划线组成并且第一个字符不能为数字,选项C)错。一个函数每次只能使用一个return语句,但是该函数体中可以有多个返回点,也就是有多条return语句,每次只从其中一点返回,选项D)错。答案选A)。
〓7.设有某函数的说明为 int* func(int a[10], int n);
则下列叙述中,正确的是( )。
A)说明中的a[10]写成a[]或*a效果完全一样 B)形参a对应的实参只能是数组名
C)func的函数体中不能对a进行移动指针(如a++)的操作 D)只有指向10个整数内存单元的指针,才能作为实参传给a
考查数组名作为函数参数。数组名作为函数参数时,只传递数组的首地址而不检查形参数组的长度,所以形参表中可以不给出形参数组的长度,形参数组和实参数组长度也可以不同,选项D)错; a[10]、a[]、*a做形参都是接受实参数组首地址,效果一样,A)正确。传递给形参的实参可以是数组名,还可以是指向该数组的指针变量,选项B)错。数组名可以看做一个指针常量,对其进行自加自减运算相当于指针变量的自加自减,选项C)错。答案选A)。
〓8.有以下程序 #include
++p;
printf(\}
main() {
char *a[] = {\ fun(a); }
程序的运行结果是( )
A)Afternoon B)fternoon C)Morning D)orning
二级指针p访问字符串数组时,++p表示指针p指向下一个字符串的首地址,所以输出的结果为第二个字符串的内容,即答案选A)。
〓9.以下选项中,能正确进行字符串赋值的是( )。 A)char *s = \
B)char s[5] = { 'A', 'B', 'C', 'D', 'E' }; C)char s[4][5] = { \D)char *s ; gets( s );
用字符数组存放字符串的时候,C语言编译系统会自动在其后面添加上结束标识符′\\0′,所以数组维数一定要比字符串长度大,选项B)、C)错误;函数gets(s)是将输入存放到s指向的空间中,指针s在使用前没有指定空间,选项D)错误;可以将一个字符串常量直接赋值给一个字符指针,选项A)正确。答案选A)。
〓10.#include
#define PR(a) printf(\#define PRINT(a) PR(a);putchar('\\n') main() {
PRINT( F(5)*2 ); }
程序运行后的输出结果是( )。
宏替换是使用宏名代替一个字符串,是一种机械、简单的置换,所以语句\;\可用字符串\\\n′);\替换,而语句\可以用字符串\,即为\,所以输出结果为12,答案选A)。
〓11.有以下程序 #include
typedef struct { int b, p; } A;
void f(A c) /* 注意:c是结构变量名 */ { int j;
c.b += 1; c.p+=2; }
main() { int i;
A a={1,2}; f(a);
printf(\}
程序运行后的输出结果是( )。
A)1,2 B)2,4 C)1,4 D)2,3
考查结构体变量作为函数实参整体传递,也是一种值传参,形参的变化不能影响到实参,所以调用函数f(a)对a中的数据没有影响,输出结果为1,2,答案选A)。
〓12下面对对象概念描述正确的是( )。
A)对象间的通信靠消息传递 B)对象是名字和方法的封装体 C)任何对象必须有继承性 D)对象的多态性是指一个对象有多个操作
消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。所以答案选择A)。
〓13.有以下程序 #include
#define S(x) PT*x*x ; main()
{ int a=1, b=2; printf(\
程序运行后的输出结果是( )。
A)程序有错无输出结果 B)31.5 C)7.5 D)14.0 宏定义不是C语句,结尾不加\,所以该程序会出现编译错误,答案选A)。
〓14.以下关于函数的叙述中正确的是( )。
A)函数形参的类型与返回值的类型无关 B)函数必须要有形参 C)函数必须要有返回值 D)函数调用必须传递实参
函数分为有参函数和无参函数,所以一个函数定义时可以有形参也可以没有形参,调用函数时必须和被调函数的参数列表保持一致,所以选项B)、D)错误;函数调用时可以没有返回值,此时函数的类型用void标识,选项C)错误;选项A)描述正确,答案选A)。
〓15.有以下程序
#include
void fun( int a, int b ) { int t;
t=a; a=b; b=t; }
main()
{ int c[10]={1,2,3,4,5,6,7,8,9,0}, i;
for (i=0; i<10; i+=2) fun(c[i], c[i+1]); for (i=0;i<10; i++) printf(\ printf(\ }
程序的运行结果是( )。
A)1,2,3,4,5,6,7,8,9,0, B)2,1,4,3,6,5,8,7,0,9, C)0,9,8,7,6,5,4,3,2,1, D)0,1,2,3,4,5,6,7,8,9,
函数fun()属于值传参,形参的变化不会影响实参,所以函数调用结束后,数组c没有任何变化,输出结果为选项A)。