第一单元 C语言概述
一、选择题
1、C语言中主函数的个数为( A)个。 A)1
B)2
D)任意个
C)无穷个
2、以下关于C语言描述错误的是( D )。 A)一个C程序总是从main函数开始执行 B)每个语句和数据声明的最后必须有一个分号 C)C语言的注释符是以“/*”开始并以“*/”结束的 D)一个C程序可以包含多个main函数 3、C 语言源程序文件后缀为( C )。 A).EXE
B).OBJ
C) .C
D).ASM
4、C语言是由(C )组成的。 A)子程序 B)主程序与子程序 5、C语言属于(C )语言 A)机器语言 B)汇编语言
第二单元 C语言基础
一、选择题
1、C语言中普通整型变量int在内存中占( B )字节。 A)1
B)2
C)3
D)4
C)高级语言
D)面向对象语言
C)函数 D)过程
2、下列不是C语言基本数据类型的是 ( D )。 A)字符型 B) 整型 C) 浮点型 D) 结构体
3、有关自增、自减运算,以下只有( C )是正确的。 A) ---f B) ++78 C) a—b++ D) d++
4、已知A=7.5,B=2,C=3.6,表达式(A>B && C>A) || (AB)的值是
1
( )。
A)0
B)10
C)1
D)5
5、若有x=1,y=2,z=3,则表达式(x B)2 C)3 D)0 6、 判断char型变量ch是否为大写字母的正确表达式是( )。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 7、判断整型变量digit是否为数字的正确表达式是( )。 A) ‘0’<=ch<=‘9’ B) (ch>=‘0’)&(ch<=‘9’) C) (ch>=‘0’)&&(ch<=‘9’) D) (‘0’<= ch)AND(‘9’>= ch) 8、 一个C程序的执行是从( )。 A) 本程序的main函数开始,到main函数结柬 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 9、在以下标识符中,合法的是( ) A)if B) 0xy C)_xy D)case 10、C语言中各种类型的数据其实决定了占用内存的字节数。float占( )。 A)一字节 B)二字节 C)四字节 D)八字节 11、下列各选项中,( )是有效的标识符。 A)ab B)3day C)day-3 D)#abc 12、以下叙述正确的是( )。 。 A) 在C程序中,每行只能写一条语句 B) 若a是实型变量,C程序中不允许a=10这种赋值。 C) 在C程序中,%是只能用于整数运算的运算符 D) 在C程序中,无论是整数还是实数,没有什么区别 13、有输入语句:scanf(―a=%d,b=%d,c=%d‖,&a,&b,&c);为使变量 a的值为1,b的值为3,c的值为2,则正确的数据输入方式是( )。 A)132↙ B)1,3,2↙ 2 C)a=1 b=3 c=2↙ D)a=1,b=3,c=2↙ 14、设整型变量a为5,使b不为2的表达式是( )。 A) b = a/2 B) b = 6-(--a) C) b=a%2 D) b=a>3?2:1 15、以下程序的输出结果是( )。 int x=10,y=10; printf(―%d %d\\n‖,x--,--y); A) 10 10 B) 9 9 C) 9 10 D) 10 9 16、选出下列标识符中不是合法的标识符的是( )。 A) hot_do B) cat1 C) _pri D) 2ab 17、设有如下定义: int x=10,y=3,z; 则语句printf(\的输出结果是( )。 A) 1 B) 0 C) 4 D) 3 18、各种基本数据类型的存贮空间正确的长度排列为( )。 A)int < char A)char:a, b, c; B)char a; b; c; C)char a, b, c; D)char a, b, c。 20、转义字符“反斜杠线”的表示方法正确的是( ) 。 A) \\ B) \\\\ C ) ?\\‘ D) ―\\‖ 21、若x=5,y=3 则y*=x+5; y的值为( )。 A) 10 B) 20 C) 15 D) 30 22、能正确表示a和b同时为正或同时为负的逻辑表达式是( )。 A)(a>=0||b>=0)&&(a<0 ||b<0) B)(a>=0 && b>=0)&&(a<0 && b<0) C)(a+b>0) &&(a+b<=0) D) a*b>0 23、C语言中,合法的字符型常数是( )。 A)?A‘ B)―A‖ C) 65 D) A 24、下列程序段的输出结果是( )。 char c1,c2; c1=65; c2=65+32+1; 3 printf(―%c,%c‖,c1,c2); A)a,B B)a,b C)A,b D)A,B 25、下列语句不具有赋值功能的是( ) A)a*=b B)x=1 C)a+b D)a++ 26、在C语言中,存储一个整型、字符型、双精度实型变量所需的字节( )。 A)2、1、8 B)4、1、4 C)4、1、4 D)2、2、8 27、下列程序段输出结果是( )。 int j=2 , i=1; j /= i*j; printf(―%d‖,j); A)0 B)1 C)2 D)3 28、不是C语言提供的合法关键字是( )。 A)switch B)char C)case D)this 29、在C语言中,要求参加运算的数必须时整数的运算符是( )。 A)/ B)* C)% D) = 30、若已定义x和y为double类型,且x=1;则表达式y=x+3/2的值是( )。 A)1 B)2 C)2.0 D)2.5 31、设a为整型变量,不能正确表达数学关系:10 A)1010&&a<15 D)!(a<=10)&&!(a>=15) 32、表达式“10!=9‖的值是( )。 A)true B)非零值 C)0 D)1 33、设a,b为字符型变量,执行scanf(“a=%c,b=%c”,&a,&b)后使a为’A’,b为’B’,从键盘上的正确输入是( )。 A) ’A’ ‘B’ B) ’A’,’B’ C)A=A,B=B D)a=A,b=B 34、设有单精度变量f,其值为13.8。执行语句“n=( (int)f )%3;”后,n的值是( )。 4 A)4 B)1 C)4.333333 D)4.6 35、普通整形int能够处理的数据范围是( ) A)-32767~32767 B)-32768~32768 C)-32767~32768 D)-32768~32767 36、若定义x为double型变量,则能正确输入x值的语句是。 A)scanf(―%f‖,x); B)scanf(―%f‖,&x); C)scanf(―%lf‖,&x); D)scanf(―%5.1f‖,&x) 37、执行 x=(6*7%8+9)/5; 后,x的值为( ) A)1 B)2 C)3 D)4 38、若有代数式3ae/bc,则不正确的c语言表达式是( ) A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/b/c*3 39、设有变量说明:float x = 4.0 , y = 4.0,下面使x为10.0的表达式是( A)x -= y*2.5 B)x /= y+9 C)x *= y-6 D)x += y+2 40、以下能正确定义整型变量z、b、c并为其赋初值5的语句是( ) A)int a=b=c=5; B)int a,c, c=5; C)a=5,b=5,c=5; D)a=b=c=5; 41、C语言中双精度浮点型变量double在内存中占( )字节。 A)1 B)2 C)4 D)8 42、以下哪个数学函数的作用是求某数的平方根( )。 A)sqrt() B)fabs() C)pow() D)exp() 43、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是( int x; scanf(\ if(++x>5) printf(\else printf(\ A) 7和5 B) 6和3 C) 7和4 D)6和4 44、执行语句\后,x,a,b的值依次为( )。 A)3, 3, 2 B)3,2,2 C)3,2,3 D)2,3,2 45、读出以下语句的输出结果是( )。 int x=10,y=10; 5 ) 。) printf(\%d\\n\ A) 10 10 B)9 9 C)9 10 D) 10 9 46、C语言中,合法的字符串型常数是( )。 A)?A‘ B)\ C) ?abcd‘ D) abcd 47、为表示关系x≥y≥z,应使用C语言表达式( )。 A)(x>=y)&&(y>=z) B)(x>=y) AND (y>=z) C)(x>=y>=z) D) (x>=z)&(y>=z) 48、C语言的输入与输出操作是由( )完成的。 A)输入语句 B)输出语句 C)输入与输出函数 D)输入与输出语句 49、设有int x=11 ;则表达式(x+1/3)的值是( )。 A)11.3 B)11.333333 C)11 D)12 50、若已定义x和y为double类型,则表达式x = 1,y = x+3/2的值是( ) A)1 B)2 C)2.0 D)2.5 二、判断题 ( )1、 “A”是一个字符常量。 X ( )2.、在程序运行过程中其值可以改变的量称为变量。 V ( )3、在C语言中,变量可以先使用再定义。 X ( )4、在C语言中,所有算术运算符的优先级都相同。 X ( )5、程序中若要使用数学函数就必须包含头文件‖math.h‖。 V ( )6、程序中若要使用printf()函数就必须引用头文件‖stdio.h‖。 V ( )7、在标准C中,“=”是判断两个数是否相等。 X ( )8、在标准C中,使用所有输入输出函数必须包含“stdio.h”文件。 X ( )9、在C语言中输出数据时可以指定数据的精度,即小数点后保留几位。 V ( )10、C语言中的基本数据类型有字符型、整型和浮点型。 V 6 ( )11、所有的C语言程序都必须有一个名为main的主函数。 V ( )12、/ 运算符要求运算数必须是整数。 ( )13、Int, #a15 , char都是合法的标识符。 X X ( )14、'b'和\是不同的两种常量。 V ( )15、C语言本身没有输入输出语句,要实现输入输出必须调用相应的输入输出函数。 V 第三单元 算法 一、判断题 ( )1、 算法简而言之就是基于某种计算机语言,利用数据结构来解决具体问题的思路和方法。 V ( )2、 描述算法的图形化方法之一就是程序流程图。V ( )3、 描述算法可以用自然语言、传统流程图、N-S流程图来描述。V ( )4、 算法要有一定的逻辑性和健壮性。V ( )5、 算法的特点之一是无穷性。X 一、选择题 1、下列标识符中合法的标识符是( ) A) int2 B) if C) 2two D) a#b 2、选出下列标识符中不是合法的标识符的是( ) A) hot_do B) cat@113 C) INT D) _2ab 3.、以下选项中属于C语言的数据类型是( ) A) 字符串型 B) 双精度型 C) 逻辑型 D) 布尔型 4、设有如下定义: int x=10,y=3, z; 则语句printf(\的输出结果是( ) A) 3 B) 0 C) 4 D) 1 5、设整型变量n的值为2,执行语句\;\后,n的值是( ) A) 0 B) 4 C) - 4 D) 2 二、判断题 ( )1、结构化程序设计的三种结构是顺序结构、选择结构和循环结构。 7 第四单元 顺序结构 V ( )2、可以用printf(\语句输出一个十六进制整数。X ( )3、可以用scanf(\语句从键盘接收一个八进制整数给变量da。X ( )4、语句scanf(\是正确的。X ( )5、 如果a是一维字符数组名,则语句scanf(\是正确的。X 第五单元 选择结构 一、选择题 1、有以下程序段 int a; if (3&&2) a=1; else a = 2; 执行后a=( )。 A)1 B)2 C)3 D)0 2、表达式:10!=9的值是( )。 A) true B) 非零值 C) 0 D) 1 3、设int x=1,y=1;表达式(!x++ || y--)的值是_( )。 A)0 B) 1 C) 2 D)-1 4、设整型变量s, c1,c2的值均为2,则执行语句(s=(c1= =c2))后,s的值为:( )。 A)0 B)1 C)2 D)3 5、设整型变量a,b的值分别为1,0,那么a && b的结果是( )。 A)0 B)1 C)2 D)都不对 6、设整型变量a,b的值分别为1,0,那么a || b的结果是( )。 A)0 B)1 C)2 D)都不对 7、设整型变量a,b的值分别为1,0,那么a != b的结果是( )。 8 A)0 B)1 C)2 D)都不对 8、设整型变量a,b的值分别为1,0,那么a || (b++)的结果是( )。 A)0 B)1 C)2 D)都不对 9、设整型变量a,b的值分别为1,0,那么a && (++b)的结果是( )。 A)0 B)1 C)2 D)都不对 10、设整型变量a,b的值分别为1,2,那么表达式 a>b?a+b:a-b的结果是( )。 A)1 B)2 C)3 D)-1 11、下边程序段 int a=2,b=3,c=4; if(c=a+b) printf(―OK!‖) else printf(―NO!‖); 输出结果是( )。 A)OK! B)NO C)程序错误 D)以上都不对 12、设整型变量a,b的值分别为1,0,那么a= =b 的结果是( )。 A)0 B)1 C)2 D)都不对 13、设整型变量a,b的值分别为1,0,那么!(a = = b)的结果是( )。 A)0 B)1 C)2 D)都不对 14、设整型变量a,b的值分别为1,2,那么!a && b的结果是( )。 A)0 B)1 C)2 D)都不对 15、设x为非零,则下列描述错误的是( )。 A)!(x = = 0) B)x != 0 C)3*x != 0 D)x>0 16、下列表达式的值中哪个表示为逻辑假( )。 A)1 B)3 C)0 D)-1 17、设整型变量a,b的值分别为6,2,那么a%b != 0的结果是( )。 A)0 B)1 C)2 D)3 18、下列属于分支结构的是( )。 A)while B)switch C)for D)以上都不是 19、设整型变量a,b的值分别为1,0,那么a || (++b)的结果是( )。 9 A)0 B)1 C)2 D)都不对 20、设整型变量a,b的值分别为1,0,那么a&&(b++)的结果是( )。 A)0 B)1 C)2 D)都不对 二、判断题 ( )1、在分支结构switch中,case后面跟的一定是常量。 V ( )2、逻辑运算符优先级高于关系运算符的优先级。 X ( )3、关系运算符中,= = 的优先级要高于 >= 的优先级。 ( )4、关系运算符中,> 的优先级要高于 >= 的优先级。 ( )5、在条件表达式中,-3代表为真。 ( )6、在条件表达式中,非0代表为真。 ( )7、条件运算符 ?: 是2目运算符。 ( )8、在switch语句中,有没有break的情况都是相同的。 ( )9、判断a,b两个数是否相等,用 a = b。 ( )10、判断a,b两个数是否相等,用 a = = b。 第六单元 for循环结构 一、选择题 1、对下边for循环,循环体体执行次数是( )。 for ( i = 1; i <= 10; i = i + 2 ) ; A) 6 B) 5 C) 4 D) 7 2、对下边for循环,循环体执行次数是( )。 for ( i = 5; i > 1; i -- ) ; A) 6 B) 5 C) 4 D) 7 3、下边循环执行完后,a为( )。 for ( a= 1;a< 5; a++ ) a = 2 * a; A) 5 B) 4 C) 7 D) 8 10 X X V V X X X V 4、下边循环执行完后,s为( )。 for ( a= 1; a< 5; a++ ) for ( b= s = 0; b< a; b++, s = s +a) ; A) 6 B) 4 C) 7 D) 无答案 5、下边程序执行完后,a ,b的值是( )。 for ( a= 1; a<= 10; a++ ) for ( b= 10;b>= 1; b-- ) if ( a>= b)) exit(0); A) 1,1 B) 5,5 C) 6,6 D) 均不对 6、下边程序执行后s的值是( )。 for ( s = i = 1; i < 100; i++ ) s = s + 1 / i; A) 0 B) 2 C) 1 D) 难以确定 7、下边程序段输出结果是( )。 int i , a= 0; for ( i = 0; i < 10; i++ ) a++, i++; printf(\ A)5 B)6 C)9 D)10 8、以下for循环的次数为( )。 for(x = 0,y = 0; (y=123) && (x<4) ; x++) ; A)不循环 B)无限次 C)3 D)4 9、从循环体内某一层跳出,继续执行循环外的语句是:( )。 A) break语句 B)return语句 C)continue语句 D)空语句 10、for(k=0;k<5;++k) { if(k= = 3) continue; printf(\ } 11 的输出结果为( )。 A)012 B)0124 C) 01234 D) 没有输出结果 11、循环语句 for (x=0,y=0; (y!=123)|| (x<4);x++) ;的循环执行次数为( )。 A)无限次 B)不循环 C)4次 D)3次 12、设i,j,k均为int型变量,k初值为0,执行完下面的for循环后,k的值为( )。 for (i=0,j=10; i<=j; i++,j--) k=i+j; A)10 B)9 C)8 13、以下程序段的循环次数是( )。 for (i=2 ; i=0 ; ) printf(―%d‖ , i--) ; A)无限次 B)0次 C)1次 14、下边程序段循环执行的次数是( )。 int a= 0, j = 10; for ( ; j > 3; j-- ) { a++; if ( a> 3) break ; } A) 3 B、4 C、5 D)6 15、for循环中,表达式1的作用是( )。 A)循环变量赋初值 B)循环条件 C)改变循环变量的值 D)什么作用都没有16、for循环中,表达式2的作用是( )。 A)循环变量赋初值 B)循环条件 C)改变循环变量的值 D)什么作用都没有17、for循环中,表达式3的作用是( )。 A)循环变量赋初值 B)循环条件 C)改变循环变量的值 D)什么作用都没有 12 D)7 D)2次 18、for循环中,能省略的表达式有( )。 A)表达式1 B)表达式2 C)表达式3 D)3个都可以 19、下面程序中a++ 总共被执行多少次( )。 for(i=0;i<3;i++) for(j=0;j<3;j++) a++; A)3次 B)2次 C)6次 D)9次 20、下面循环体被执行的次数是( )。 for(i=0;i<3;i++) ; A)0次 B)1次 C)2次 D)3次 21、定义变量int i=-1; 则以下不是无限循环的是: ( )。 A. for (i=0; i=1; i++) ; B. for ( i=0; ; i--) ; C. for ( ; i>-10; i--) ; D. for ( ; i<0 ; ) ; 22、定义变量int i=2; 则以下是无限循环的是: ( )。 A. for (i=0;i==1;i++) ; B. for (i=0; i<0 ; ) --i; C. for ( ; i>10; i++) ; D. for ( ; i ; ++i ) ; 23、以下for循环语句,循环体的执行次数是: ( )。 for( i=1; i<=5; i+=2 ) ; A. 4 B. 5 C. 6 D. 7 24、以下for循环语句,循环体的执行次数是: ( )。 for( i=5; i>1; i-- ) ; A. 4 B. 5 C. 3 D. 2 25、下面的循环体执行完后,a的值是: ( )。 for( a=2; a<8; a++) a*=2 ; A. 10 B.9 C. 12 D. 11 二、判断题 ( )1、continue语句只能用于循环语句中。 V ( )2、在for循环中允许使用嵌套循环,但只能是嵌套while循环。X 13 ( )3、break语句只能用于循环语句中。 X ( )4、for循环可能一次都不执行。 V ( )5、break语句是结束本层循环。 V ( )6、break语句是结束本次循环。 X ( )7、continue语句是结束本层循环。 X ( )8、continue语句是结束本次循环。 V ( ) 9、在循环过程中,使用break语句和continue语句的作用是一样的。 X ( )10、for( ; ; )这写书写for循环是合法的,即for三个表达式都是可以省略的。 V 三、程序阅读 1、以下程序运行完后的输出数据是:__aaaaaaaaa__ main() { int a=10 ; for( ; a ; ) { a--; if(a==0) break; printf(\ } } 2、以下程序运行完后a的值是: __1__ main() { int i, a=0 ; for(i=0; i<10; i++) i++; a++; printf(\ } 14 3、 以下程序运行完后a的值是: __5__ main() { int i, a=0 ; for(i=0; i<10; i++) a++, i++; printf(\ } 4、以下程序运行完后的结果是:_#*#*_ main() { int k; for (k=1;k<5;k++) { if(k%2!=0) printf(\ else printf(\ } } 5、以下程序运行完后s的值是: _1.0__ main() { int n ; float s=1.0; for(n=10;n>1;n--) s=s+1/n; printf(\ } 15 第七单元 while与do-while循环 一、选择题 1、break语句的正确的用法是( )。 A)无论在任何情况下,都中断程序的执行,退出程序。 B)在多重循环中,只能退出最靠近的那一层循环语句。 C)跳出多重循环。 D)只能修改控制变量。 2、int i=0; while( i++ < 5); 循环结束后i的值是( A)6 B)7 C)5 D)8 3、语句while ( E ); 括号中的表达式E等价于( A)E==0 B)E!=1 C)E!=0 D)E==1 4、 int i=1; while( --i ) ; 循环次数是( )。 A)无限次 B)0 C)2 D)1 5、下述程序段的运行结果是 。 int a=1,b=2, c=3, t; while ( a {t=a; a=b; b=t; c--;} printf(―%d,%d,%d‖,a,b,c); A)1,2,0 B)2,1,0 C)程序错误 6、 程序运行的结果是( )。 main() { int x; x=3; do { printf(\ }while(x); } 16 )。 )。 D)2,1,1 A)0 B)无限循环 C)3 D)2 7、do-while语句的循环体( )。 A)可能一次都不执行 B)至少要执行一次 C)由循环条件决定循环次数 D)B C均正确 8、对下面的while语句,循环体执行次数是( )次。 a=30; while ( a--) ; A)30 B)31 C)39 D)都不对 9、在C语言中,下列说法中正确的是( )。 A)不能使用\… while\的循环。 B)\的循环必须使用break语句退出循环。 C)\的循环中,当条件为0时将结束循环。 D) \的循环中,当条件为非0时将结束循环。 10、下面的循环执行完后,循环次数是( )次。 while( k=10 ) k--; A)9 B)10 C)11 D)无穷次 二、判断题 ( )1、while 适合控制循环次数不确定的循环。(V) ( )2、无论循环条件是否满足,do ... while循环的循环体至少执行一次。(V) ( )3、while( 'a' ) ;是一个死循环。(V) ( )4、在实际编程中,do-while循环完全可以用for循环替换。(V) ( )5、continue;语句和break;语句有同样的作用。(X) 第八单元 数组 一、选择题 1、下列描述中不正确的是( )。 A) 字符型数组中可能存放字符串。 17 B) 可以对字符型数组进行整体输入、输出。 C) 字符串函数声明在包ctype.h中。 D) 字符串的结束符是‘\\0‘。 2、定义如下变量和数组: int i ; int x[6] ={1,2,3,4,5,6}; 则语句for(i=0;i<3;i++) printf(\\的输出结果是( )。 A) 1 2 3 B)1 3 5 C)2 4 6 D)6 5 4 3、以下对二维数组a进行正确初始化的是( )。 A) int a[2][3]={{1,2},{3,4},{5,6}}; B) int a[ ][3]={1,2,3,4,5,6}; C)int a[2][ ]={1,2,3,4,5,6}; D) int a[2][ ]={{1,2},{3,4}}; 4、下列程序的输出结果是( )。 char a[]=\strcpy( str , strcat( a, b ) ); printf( \ A)xyabcAB B)abcABz C)ABabcz D)abcdABCD 5、不能把字符串:Hello!赋给数组b的语句是( )。 A)char b[10]={'H','e','l','l','o','!'}; B)char b[5] =\C)char b[10]; strcpy(b,\)char b[10]=\6、下列对数组定义不正确的语句是( )。 A)int m[5]; B)char b[]={‘h’,’e’}; C)int a[10]={1,6,8,4}; D)char p[]; 7、以下对二维数组 a的正确定义是( ) A)int a[3][] ; B)float a(3,4) ; C)double a[2][4]; D)float a(3)(4) ; 8、给出以下定义: char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'}; 以下正确的叙述是( )。 A)数组x和数组y等价 B)数组x和数组y长度相等 18 C)数组x的长度大于数组y的长度,因为还存储了一个结束符 D)数组x的长度小于数组y的长度,因为还存储了一个结束符 9、在int b[ ][3]={{1},{3,2},{4,5,6},{0}};中b[2][2]的值是( )。 A)0 B)5 C)6 D)2 10、下列初始化正确的是( )。 A)char s1[ ]="abcd" ; B)char s2[3]="zxy"; C)char * p=1000 ; D) char s4[2][3]={{"xyz"},{"mnp"}} ; 11、设有定义:char s[12]="string";则printf ("%d\\n",strlen(s));的输出是( )。 A)6 B)7 C)11 D)12 12、函数调用strcat(strcpy(str1,str2),str3)的功能是( )。 A)将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后 B)将字符串str1复制到字符串str2中后再连接到字符串str3之后 C)将字符串str1复制到字符串str2中后再复制到字符串str3之后 D) 将字符串str2连接到字符串str1中后再将字符串str1复制到字符串str3中 13、使用随机函数需要包含的头文件有( )。 A) #include 14、若有说明int a[3][4]={0};下列叙述正确的是( )。 A)只有元素a[0][0]可得到初值0 B)此说明语句不正确 C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0 15、执行下面的程序段后,变量k的值为( )。 int k=3,s[2]; s[0]=k; k=s[0]*10; A)不定值 B)33 C)30 D)10 19 16、以下定义数组的语句中正确的是( )。 A) int a(10) B) char str[] ; C) int n=5; int a[4][n]; D) #define N 10 char str[N]; 17、定义如下变量和数组: int k; int a[3][3]={9,8,7,6,5,4,3,2,1}; 则下列语句的输出结果是( )。 for(k=0;k<3;k++) printf(―%d‖,a[k][k]); A) 7 5 3 B) 9 5 1 C) 9 6 3 D)7 4 1 18、下列描述正确的是( )。 A)两个字符串所包含的字符个数相同时,才能比较字符串 B)字符个数多的字符串比字符个数少的字符串大 C)字符串“STOP”与“STOP ”相等 D)字符串“That‖与字符串“ThaT”不相等 19、若二维数组a有n 行n列,则副对角线元素是( )。(假设a[0][0]位于数组的第一个位置上,且i∈[0,n)) A)a[i][i] B)a[i][n-i] C)a[n-i][i] D)a[i][n-1-i] 20、对以下说明语句的正确理解是( )。 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5]。 B)将5个初值依次赋给a[0]至a[4]。 C)将5个初值依次赋给a[6]至a[10]。 D)因为数组长度与初值的个数不相同,所以此语句不正确 20 21、判断字符串a和b是否相等,应使用( )。 A)if(a= =b) B) if(a=b) C)if(strcpy(a,b)) D) if(strcmp(a,b)= =0) 22、判断字符串s1的长度是否大于字符串s2的长度,应使用( )。 A)if(s1>s2) B)if(strcmp(s1,s2)) C)if(strlen(s1)>strlen(s2)) D)if(strcat(s1)>strcat(s2)) 23、下列程序段的运行结果( )。 char c[15]={'a','b','\\0','c','\\0'}; printf(―%s‖,c); A)'a','b' B) ab C) abc D) a ,b 24、假设有两个字符数组a,b,则以下正确的输入语句是( )。 A)puts(a,b); B) scanf(―%s%s‖,a,b); C)scanf(―%s%s‖,&a,&b); D)gets(―a‖);gets(―b‖); 25、若有说明int a[][3]={1,2,3,4,5,6,7,8,9};则a数组行数的大小为( )。 A) 2 B) 3 C)4 D)无确定值 26. 若有定义double x[3][5]; 则x数组中行标的下限为( ),列标的上限为( )。 A)1 3 B) 3 5 C)0 5 D)0 4 27、 若有说明a[3][4];则数组a中的各元素( )。 A) 可在程序的运行阶段得到初始值0 B) 可在程序的编译阶段得到初始值0 C) 不能得到确定的初始值 D) 可在程序的编译或运行阶段得到初始值 28、若有下列程序段 char x[80]; scanf(―%s‖,x); printf(“%s”,x); 从键盘上输入字符串“zhang san”,则输出结果为( )。 A)zhang B) zhangsan C) zhang san D)san 29、在C语言中,引用数组元素时,其数组下标的数据类型允许为( ) 21 A) 整型常量 B) 整型表达式 C) 整型常量或整型表达式 D) 任何类型的表达式 30、设有如下形式的字符数组定义: char str[]=‖welcome‖; 则执行下列语句后的输出结果( )。 printf(―%d\\n‖,strlen(strcpy(str,“Hello”))); A) 7 B) 5 C) 8 D)9 31、若有int a[3][5]={2,2},{2,6},{2,6,2}},则数组a共有( )个元素。 A)8 B)5 C)3 D)15 32、设有如下定义:int a[100];则数组下标区间为:( )。 A) 0~99 B) 1~99 C) 0~100 D)1~100 33、若有定义:int a[3][4],则对数组a中某元素的正确引用是( )。 A)a[2][4] B)a[1][3] C)a(5) D)a[10-10] 34、以下对一维整型数组a的正确说明是( )。 A)int a(10) ; B)int n=10,a[n]; C) int n; D)#define SIZE 10 scanf(―%d‖,&n); int a[SIZE]; nt a[n]; 35、若要使用字符函数,需要引入的头文件是( )。 A)string.h B)ctype.h C)stdlib.h D)stdio.h 二、判断题 ( )1、在定义一维数组时,可以将该数组的长度省略 V ( )2、数组的下标从0开始。 V ( )3、数组的下标从1开始。 X ( )4、数组名代表数组的首地址。 V ( )5、在C语言中,数组元素在内存中的存放顺序是按顺序存放的。V 22 ( )6、字符数组可以存放字符串。 V ( )7、字符串函数strupr(str),可将串中大写字母变成小写字母。 X ( )8、字符串函数strrev(str) ,可将str串字符颠倒过来。 V ( )9、字符串的结束符不是‘\\0‘ 。 X ( )10、可如此定义a数组:float a[3]={12.5,‘z‘,‖school‖}; X ( )11、数组边定义边赋值时,大括号内数据项的数目可以大于或等于数组的长度。 X ( )12、数组边定义边赋值时,大括号内数据项的数目可以小于或等于数组的长度。 V ( )13、字符串函数strcat(str1,str2)的作用是将字符串str2连接在字符串str1后。 V ( )14、定义字符型一维数组char a[80];可用gets(a[0])给a[0]赋值。X ( )15、数组定义 int a[10]; 也可以写成 int a(10);。 X 三、程序阅读题 1、下面程序的输出结果是___6 5_______。 main ( ) { char ch[7]={\ int i; for (i=0;ch[i]>='0'&&ch[i]<='9';i++) printf(\ \ } 2、下面程序执行后,s1=___15.0_____,s2=___2.7______。 float b[]={0.5,1.6,2.7,3.8,4.9,5,6.1,6.2,7.3,8.4},s1,s2; int i; for(i=0,s1=s2=0 ; i<9 ; i++ ) { if ( i%2 ) s1 += ( int ) b[i]; if( i%3 ) s2 += b[i] – (int) b[i]; 23 } 3、将程序补充完整,实现功能:输出斐氏数列的前20项,菲波纳契额数列具有这样的性质:F(0)=1 F(1)=2 F(N)=F(N-1)+F(N-2) #include \void main() { int i; long f[20]={1,2}; for(i=2 ; i<20 ; i++) f[i] = f[i-2] + f[i-1]; for(i=0 ; i<20 ; i++) printf(\ } 4、将程序补充完整,实现功能:输入2个字符串,判断两个串是否相同,相同输出yes,不同输出no。 #include \#include \void main() { char x[80],y[80]; } 5、 设有以下代码: #include \void main() { 24 gets(x); gets(y); if(strcmp(x,y)==0) puts(\else puts(\ int a[3][3],s=0; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\for(i=0;i<3;i++) for(j=0;j 假设键盘上输入的9个数据为:1 2 3 4 上面程序的输出结果是_______19____。 第九单元 指针 一、选择题 1、以下定义正确的是( )。 A)int x; float *p=x; B)int x; int *p=x; C)int x; int *p=&x; D)int x; float *p=&x; 2、以下定义正确的是( )。 A)float x; float *p=x; B)float x; int *p=x; C)float x; int *p=&x; D)float x; float *p=&x; 3、以下定义正确的是( )。 A)float x[10]; float *p=x; B)float x[10]; int *p=x; C)float x[10]; int *p=&x; D)float x[10]; float *p=&x; 25 5 6 7 8 9 , 4、以下定义正确的是( )。 A)int x[10]; float *p=x; B)int x[10]; int *p=x; C)int x[10]; int *p=&x; D)int x[10]; float *p=&x; 5、设有以下变量定义 int x; float y; double z; z = sizeof( x ) + sizeof ( y ) + sizeof ( z ) ; 则z的值为( )。 A)8 B)4 C)6 D)10 二、判断题 ( )1、数组名代表数组的首地址。 正确 ( )2、指针的类型必须跟其所指向的变量的数据或数据结构类型一致。正确 ( )3、指针可以不操作数组。 错误 ( )4、空指针的值为NULL。 正确 ( )5、指针不能实现对数据的间接访问。 错误 第十一单元 函数 一、选择题 1、以下不正确的说法是( )。 A)在不同函数中可以使用相同名字的变量 B)形式参数是局部变量 C)在函数内定义的变量只在本函数范围内有定义 D)在某函数内定义的变量可在其余函数中通用 2、以下正确的函数定义是( )。 A)double fun(int x , int y) B)double fun(int x ; int y) C)double fun(int x , int y) ; D)double fun(int x,y) 26 3、以下正确的函数定义是( )。 A)double fun(int x, int y) B)double fun(int x,y) { z=x+y ; return z ; } { int z ; return z ;} C)fun (x,y) D)double fun (int x, int y) { int x, y ; double z ; { double z ; z=x+y ; return z ; } return z ; } 4、若调用一个函数,且此函数中没有return语句,则正确的说法是( )。 A)该函数没有返回值 B)该函数返回若干个系统默认值 C)能返回一个用户所希望的函数值 D)返回一个不确定的值 5、已知一个函数的定义如下: double fun(int x, double y) { …… } 则该函数正确的函数原型声明为( )。 A)double fun (int x,double y) B)fun (int x,double y) C)double fun (int x ,double y ); D)fun(x,y) ; 6、包含标准库函数scanf()声明的头文件是( )。 A)stdio.h B)stdlib.h C)math.h D)time.h 7、C语言规定,函数返回值的类型是由 决定的。 A)return语句中的表达式类型 B)调用该函数时的主调函数类型 C)调用该函数时由系统临时 D)在定义函数时所指定的函数返回类型 8、若在某程序中定义了多个函数,则以下说法中正确的是( )。 A)C语言程序总是从第一个的数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分 9、一个C语言程序是由( )构成。 27 A)语句 B)行号 C)数据 D)函数 10、设有某函数fun,定义如下: int fun(int x, int y) { …….. } 以下fun函数的调用,正确的是( )。 A)fun(3 , 4.2) B)fun(3 , 4) C)int a; D)int a; a = fun(3 , 4) a = fun(3 , 4.2) 二、判断题 ( )1、在不同函数中可以使用相同名字的变量。 正确 ( )2、全局变量的作用域是整个程序。 正确 ( )3、局部变量的作用域是整个程序。 错误 ( )4、函数在做调用时,实际参数必须与形式参数一致,包括数量和数 据类型。 正确 ( )5、函数的返回值必须与函数定义时的返回类型一致。 正确 1、以下程序运行后的结果是:___6,6_______ int fun() { } main() { 三、程序阅读 int x = 1; int y = 1; x += 2; y += 2; return x+y; int a,b; a = fun(); b = fun(); 28 } printf(―%d,%d‖,a,b); 2、以下程序运行结果是:___B______ void fun(); char c = ‘a‘; void main() { } void fun() { } 3、下面程序执行过程中若输入23、45,运行结果是:___68_______ void fun(); int a,b; main() { } void fun() { } 4、以下函数的功能为通过自定义函数求两个数之间的最大值,请填空完成该程序。 int fun(int a, int b) 29 char c; myfun( c ); printf(―%c\\n‖,c+1); c -= 32; scanf(―%d,%d‖,&a,&b); fun(); printf(―%d‖,a+b); { } main() { } 5、以下自定义函数的功能是找出所有三位数中不能被12整除的数,并统计其个数,请填空完成该程序。 void fun() { } void main() { } fun(); int i; for( i=100; i<=999; i++) if( i!=0 ) printf(―%d‖,i); int a,b,max; scanf(―%d,%d‖,&a,&b); max=fun(a,b); printf(―max=%d‖,max); if (a 30