A、P的值不等于12345并且n的值小于3
B、P的值等于12345并且n的值大于等于3 C、P的值不等于12345或者n的值小于3 D、P的值等于12345或者n的值大于等于3 173、 一个完整的C源程序是( B )。 (2分) A、要由一个主函数(或)一个以上的非主函数构成
B、由一个且仅由一个主函数和零个以上(含零)的非主函数构成 C、要由一个主函数和一个以上的非主函数构成 D、由一个且只有一个主函数或多个非主函数构成
174、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是( D )。(2分) A、extern B、register C、autoD、static
175、已知:char s[10],*p=s;则在下列语句中,错误的语句是 ( B )。(2分) A、p=s+5; B、s=p+s; C、s[2]=p[4]; D、*p=s[0]; 1`76、以“w+”方式打开一个文件,下列描述中正确的是(B )(2分) A、被打开的文件一定要存在。
B、被打开的文件既可以写又可以读。 C、被打开的文件内容不被删除。 D、被打开的文件可以是文本文件,也可以是二进制文件或其它类型的文件。 177、在C语言中,int型数据在内存中是以(B)形式存储的。(2分) A、原码 B、补码 C、ASCII码 D、反码
179、若要用fopen函数打开一个新的二进制文件,该文件既能读也能写,则文件打开方式为(B )(2分)
A、ab+B、wb+ C、rb+D、ab
180、若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是(C)(2分)A、a=b=c=100; B、d++; C、c+b; D、d=(c=22)-(b++); 181下列循环语句会进入死循环的是( c )。 (2分) A、i=0; do { i++; }while(i = =100); B、for(i=0; i<100; i+=3.14); C、for(i=0; ; i+=2); D、k=1; do { k--;} while(k);
183、下面的函数是无参函数的是A )。(2分)
A、main()B、int max(int x, int y) C、return(z)D、scanf(\
184、有函数fun ( float x ) { float y; y= 3*x-4; return y; },其函数值的类型是( D )。(2分) A、intB、不确定 C、void D、float
185、下述标识符中,(B)是合法的用户标识符。(2分)
A、 A#C B、 getch C、 void D、 ab* 188、以下运算符中优先级最低的算符为(B)(2分)
A、&& B、 ?: C、!= D、||
190、执行语句int x=5,a=0,b=0;if(x=a+b) printf(\后,结论是( D )。(2分)
A、有语法错,不能通过编译B、能通过编译,但不能连C、输出****D、输出 #### 191、以下描述正确的是(C )。(2分)
A、goto语句只能用于退出多层循环B、switch语句中不能出现continue语句 C、只能用continue语句来终止本次循环D、在循环中break语句不能独立出现
192、C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是( D )。(2分) A、用户指定传递方式B、无传递C、单向值传递D、地址传递 193、以下所列的各函数首部中,正确的是( C )。(2分)
13
A、void play(var a:integer,var b:integer) B、void play(int a,b) C、void play(int a,int b) D、sub play(a as integer,b as integer)
194、已知:char s1[4]=\char *ptr; 则执行ptr=s1; printf(\语句后输出为 ( A )。 (2分)
A、字符'2' B、字符'1' C、字符'2'的地址 D、不确定
195、若变量已正确定义,执行以下语句: x=5.16894; printf(“%f\\n”, (int)(x*1000+0.5)/(float)1000); 的输出结果是(D)(2分)
A、输出格式说明与输出项不匹配,输出无定值 B、5.17000 C、5.168000 D、5.169000
196、在C语言中,以下正确的描述是( B )。(2分)
A、 函数的定义可以嵌套,但函数的调用不可以嵌套B、 函数的定义不可以嵌套,但函数的调用可以嵌套
C、 函数的定义和函数的调用均不可以嵌套D、 函数的定义和函数的调用均可以嵌套 197、下述对C语言字符数组的描述中错误的是( C )。(2分) A、字符数组可以存放字符;
B、字符数组中的字符串可以整体输入、输出;
C、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值; D、不可以用关系运算符对字符数组中的字符串进行比较。 199、C语言程序由函数组成,它的( B )。(2分)
A、主函数必须在其它函数之前,函数内可以嵌套定义函数 函数内不可以嵌套定义函数
C、主函数必须在其它函数之前,函数内不可以嵌套定义函数 D、主函数必须在其它函数之后,函数内可以嵌套定义函数
200、在定义函数中指定的形参,在未出现函数调用时(B )。(2分)
A、占用固定大小的内存B、不占用内存C、不确定D、占用大小不确定的内存
201、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符(C)(2分) A、 必须为字母 B、 必须为下划线
C、 必须为字母或下划线 D、 可以是字母,数字和下划线中任一字符 202、若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是(D)(2分) A、scanf(\、scanf(\ C、scanf(\ D、scanf(\ 203、若有定义: int a[5]; 则对数组中首元素的地址可以表示为(C)。(2分) A、&a B、a+1 C、a D、&a[1]
204、在C语言中,以下数据类型关键字不合法的是(C)(2分) A、double B、short C、integer D、char
205、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf(\为了把100和765.12 分别赋给i和f,则正确的输入为(B)(2分)
A、 100765.12 B、 i=100,f=765.12 C、 100 765.12 D、 x=100y=765.12
206、若已定义char s[2][40]={\;则在下面表达式中能表示字符‘E’的地址的是( C )。 (2分)
A、&s[2][1] B、s[1] C、&s[1] D、&(s[1]+1) 207、以下正确的说法是( C )。(2分) A、定义函数时,形参的类型说明可以放在函数体内
B、return后边的值不能为表达式 C、如果函数值的类型与返回值类型不一致,以函数值类型为
B、主函数可以在其它函数之后,
14
准 D、如果形参与实参的类型不一致,以实参类型为准
208、已知:int a[]={1,2,3,4},y,*p=&a[0]; 则执行语句\后,下面( A )元素的值发生了变化。
A、a[0] B、a[1] C、a[2] D、都没发生变化
209、已有定义“struct xy{int a; double b;}m;”,变量m的成员a的正确表示是(A )(2分) A、m.a B、m->a C、*m.a D、xy.a
210、下列打开文件的方式中,对二进制文件操作的是(D )(2分) A、rB、a C、w+ D、rb+
211、以下不是关键字的是(C)(2分)
A、continue B、char C、If D、default 212、下面有关for循环的正确描述是( D )。(2分) A、for循环只能用于循环次数已经确定的情况。 B、for循环是先执行循环体语句,后判断表达式。 C、在for循环中,不能用break语句跳出循环体。
D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。
214、已知:char s[100]; int i=10;则在下列引用数组元素的语句中,错误的表示是 ( D )。(2分)
A、s[i+10] B、*(s+i) C、*(i+s) D、*((s++)+i
一、单项选择题(25道小题,共50分)
1、C语言规定,在一个源程序中,main函数的位置(C) (2分)
A、必须在最开始 B必须在系统调用的库函数的后面 C、 可以任意 D、 必须在最后 2、以下叙述中正确的是 (C)(2分)
A、用C语言实现的算法必须要有输入和输出操作 B、用C语言实现的算法可以没有输出但必须要有输入 C、用C程序实现的算法可以没有输入但必须要有输出 D、用C程序实现的算法可以既没有输入也没有输出 3、以下叙述不正确的是(D)(2分) A、在C程序中,逗号运算符的优先级最低 B、在C程序中,APH和aph是两个不同的变量
C、若a和b类型相同,在执行了赋值表达式a=b后b的值将放入a中,而b的值不 D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 4、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符(C)(2分) A、 必须为字母B、 必须为下划线 C、 必须为字母或下划线 D、 可以是字母,数字和下划线中任一字符
5、在C语言中,int型数据在内存中是以(B)形式存储的。(2分) A、原码 B、补码 C、ASCII码 D、反码
6、已有定义:int x=3,y=4,z=5;则表达式!(x+y)+z-1 && y+z/2的值是(D)(2分) A、 6 B、 0 C、 2 D、 1
7、若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是(D)(2分) A、scanf(\、scanf(\、scanf(\、scanf(\
8、执行下列语句: double d; float f; long L; int i; i=f=L=d=20/3; printf(\ 输出结果是(小数点后只写一位) (A)(2分)
A、6 6 6.0 6.0 B、 6 6 6.7 6.7 C、6 6 6.0 6.7 D、 6 6 6.7 6.0
15
9、若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是(A)(2分) A、 0 B、 0.5 C、 1 D、 2
10、下述表达式中,( A )可以正确表示x≤0或x≥1的关系。(2分) A、(x>=1) || (x<=0) B、x>=1 | x<=0 C、x>=1 && x<=0 D、(x>=1) && (x<=0)
11、以下语句char c='a';if('a' A、LOW B、UP C、LOWUP D、语句错误,编译不能通过 12、程序int k= 4,a=3,b=2,c=1;printf(\的运行结果是( D )。 (2分) A、4 B、3 C、2 D、1 13、对于程序段int x=-1; do { x=x*x; }while(!x);说法正确的是(C )。(2分) A、是死循环 B、循环执行两次 C、循环执行一次 D、有语法错误 14、设有int k=10;while (k=0) k=k-1;则下面描述中正确的是( C )。 (2分) A、while循环执行10次 B、循环是无限循环 C、循环体语句一次也不执行D、循环体语句执行一次 15、下列循环语句会进入死循环的是( C )。 (2分) A、i=0; do { i++; }while(i = =100); B、for(i=0; i<100; i+=3.14); C、for(i=0; ; i+=2); D、k=1; do { k--;} while(k); 16、以下描述正确的是( C )。(2分) A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。 C、在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。 D、do-while循环中,根据情况可以省略while 17、以下对二维整形数组a的正确说明是( C )。(2分) A、int a[3][]; B、float a(3,4); C、double a[1][4]; D、float a(3)(4) 18、对两个字符数组a和b进行初始化char a[ ]=\ char b[ ]={'A','B','C','D','E','F'}; 则以下叙述正确的是( D )。 (2分) A、a与b数组完全相同 B、a与b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长 19、以下不正确的定义语句是(B )。(2分) A、double x[5]={2.0,4.0,6.0,8.0,10.0}; B、int y[5]={0,1,3,5,7,9}; C、char c1[]={‘1’,’2’,’3’,’4’,’5’}; D、char c2[]={‘\\x10’,’\\xa’,’\\x8’}; 20、程序段 char c[ ]=\ printf(\的运行结果是( B )。 (2分) A、14 B、3 C、9 D、字符串中有非法字符,输出值不确定 21、实际参数不能是(D )。(2分) A、常量 B、变量 C、表达式 D、不确定值 22、函数调用结束后,形式参数(C )。(2分) A、继续占用相同大小的内存 B、占用的内存减小 C、释放内存 D、不确定 23、已知:int a,*p=&a;则下列函数调用中错误的是( D )。(2分) A、scanf(\ B、scanf(\ C、printf(\ D、printf(\ 24、设有说明语句“struct stu{ int a; float b;}stutype;”,则叙述不正确的是D )(2分) A、struct是结构体类型的关键字。 B、struct stu是用户定义的结构体类型。 C、stutype是用户定义的结构体变量名。 D、a和b都是结构体变量。 16