第一章 程序设计概述

第一章测验

1、以下不正确的叙述是( )。
    A、在C程序中所用的变量必须先定义赋初值后使用
    B、程序中,APH和aph是两个不同的变量
    C、若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变
    D、可以定义一个名字叫做void的变量

2、下列字符序列中,不可用作C语言标识符的是( )。
    A、b70
    B、#ab
    C、symbol
    D、a_1

3、下列数据中,为字符串常量的是( )。
    A、A
    B、"house"
    C、How do you do.
    D、$abc

4、以下数据中,不正确的数值或字符常量是( )。
    A、8.9e1.2
    B、10
    C、0xff00
    D、82.5

5、以下数据中,不正确的常量是( )。
    A、0
    B、5L
    C、o13
    D、9861

6、C语言源程序的基本单位是( )。
    A、过程
    B、函数
    C、子程序
    D、标识符

7、以下数据中,不正确常量是( )。
    A、c
    B、66
    C、0xaa
    D、5.5f

8、以下数值中,不正确的八进制数或十六进制数是( )。
    A、ox16
    B、016
    C、-016
    D、0xaaaa

9、以下标识符中,不能作为合法的C用户定义标识符的是( )。
    A、answer
    B、to
    C、signed
    D、_if

10、下列程序的输出结果是( )。 void main() { int a=7,b=5; printf( "%d\n ",b=b/a); }
    A、0
    B、5
    C、1
    D、不确定值

11、2019年9月的TIOBE编程语言排行榜上,前4名不包括( )
    A、C
    B、C++
    C、Python
    D、FoxPro

12、关于计算机存储容量,不正确的是( )
    A、1KB=1024B
    B、1MB=1024KB
    C、1GB=1024MB
    D、1TB=1024MB

13、C程序的编译环境不包括( )
    A、VC2010
    B、Code::Blocks
    C、Dev C++
    D、JDK

14、#include 是( )
    A、函数
    B、编译预处理指令
    C、有语法错误
    D、什么都不是



15、在C语言中,字符型数据在内存中以字符的( )形式存放
    A、国标码
    B、GB2312
    C、ASCII码
    D、Unicode编码



第二章 输入输出函数

第二章测验

1、下面代码执行后,输出的结果是( ) #include int main() { printf("%d\n" , (int)3.14159265 ); return 0; }
    A、3
    B、4
    C、3.0
    D、4.0



2、下面代码执行后,输出的结果是( ) #include int main() { printf("%d\n" , (int)4.56 ); return 0; }
    A、4
    B、5
    C、4.0
    D、5.0



3、下面代码执行后,输出的结果是( ) #include int main() { printf("%.0f\n" , 3.14159265 ); return 0; }
    A、3
    B、4
    C、3.0
    D、4.0



4、下面代码执行后,输出的结果是( ) #include int main() { printf("%.0f\n" , 4.56 ); return 0; }
    A、4
    B、5
    C、4.0
    D、5.0



5、下面哪一种不属于基本程序结构( )
    A、顺序结构
    B、选择结构
    C、循环结构
    D、层次结构



6、对用户使用的变量、数组、函数等操作对象取的名字,下面哪个描述不正确( )
    A、以字母或下划线开头,由字母、数字和下划线三种字符组成
    B、不能定义与32个”关键字”相同的标识符
    C、严格区分大小写
    D、不用区分大小写



7、已经有如下的代码: char c='A'; 要打印输出一个大写字母A,下面哪一个代码无法做到( )
    A、putchar(c);
    B、putchar(65);
    C、putchar('A');
    D、putchar(A);



8、变量a和b的值分别是7和9,要输出如下的内容: a=7 b=9 下面正确的代码是( )
    A、printf("a=%b,b=%d\n" ,a,b);
    B、printf("a=%b\tb=%d\n" ,a,b);
    C、printf("a=%d,b=%d\n" ,a,b);
    D、printf("a=%d\nb=%d\n" ,a,b);



9、让用户从键盘输入一个数字,存入双精度(double)类型的变量d,正确的代码是( )
    A、scanf("%f" ,&d);
    B、scanf("%lf" ,&d);
    C、scanf("%f" ,d);
    D、scanf("%lf" ,d);



10、以下不符合C语言语法的赋值语句是( )。
    A、j++;
    B、j=5;
    C、k=2*4, k*4;
    D、y=float(j);



11、执行下列语句后变量x和y的值是()。 y=10; x=y++;
    A、x=10, y=10
    B、x=11, y=11
    C、x=10, y=11
    D、x=11, y=10



12、下列语句的输出结果是()。 printf( "%d\n", (int)(2.5+3.0)/3 );
    A、有语法错误不能通过编译
    B、2
    C、1
    D、0



13、以下的代码中,正确的赋值语句是()。
    A、a=1,b=2;
    B、5+=1;
    C、1=a;
    D、y=int(x);



14、对以下语句的功能描述正确的是: int r=2; float s = 1/2 * 3.14 *r *r;
    A、s是半径为2的圆的面积
    B、s是半径为2的 半圆的面积
    C、运算结果为0,不能计算是半圆的面积
    D、其他三个说法均不正确



15、关于占位符,不正确的是( )
    A、char类型对应的占位符是%c
    B、double类型对应的占位符是%d
    C、float类型对应的占位符是%f
    D、需要根据数据类型,正确的选取占位符



第三章 运算符及选择结构

第三章测验

1、在C语言中,能代表逻辑值“真”的是( )。
    A、True
    B、大于0的数
    C、非0整数
    D、非0的数



2、下列运算符中,不属于关系运算符的是( )。
    A、<
    B、>
    C、>=
    D、!



3、以下运算符中,优先级最高的运算符是( )。
    A、=
    B、!=
    C、*(乘号)
    D、()



4、以下程序的输出结果是: void main() { int a=1; switch(a) { case 1:printf("hello"); case 3:printf(" word"); case 5:printf("!");break; default: printf("error\n"); } }
    A、hello
    B、hello word
    C、hello word!
    D、hello word!error



5、以下程序的输出是: void main() { int a=1; switch(a) { default: printf("error\n"); case 1:printf("hello");break; case 3:printf(" word");break; case 5:printf("!");break; } }
    A、hello
    B、hello word
    C、hello word!
    D、error



6、以下程序的运行结果是: void main() { int a=5; if(a=0) printf("a=%d\n",a); else { ++a; printf("a=%d\n",a); } }
    A、a=1
    B、a=0
    C、a=5
    D、a=6



7、#include int main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); return 0; } 此代码的输出结果是( )
    A、0
    B、3
    C、4
    D、5



8、程序中的“=”是“等于”符号,其功能是判断两个表达式是否相等。



9、switch语句不能嵌套到if语句中。



10、if(表达式) 语句1; else 语句2 ; 此结构中,如表达式为a>10,则else的条件隐含为a<10。



11、switch…case结构中条件表达式和常量表达式值可以为float类型。



12、可以用switch结构实现的程序都可以使用if语句来实现。



13、switch后面圆括号内的表达式的值和case后面的常量表达式的值都必须是整型或字符型,不允许是浮点型。



14、C语言规定,else总是与它上面、最近的、尚未配对的if配对。



15、所有的if语句能够实现的逻辑,都可以修改为用switch实现。



第四章 循环

第4章测验

1、1、有以下程序 #include #include void main( ) { int a=15,b=21,m=0; switch(a%3) { case 0: m++;break; case 1: m++; switch(b%2) { default:m++; case 0:m++;break; } } printf("%d\n",m); } 程序运行后的输出结果是______。
    A、1
    B、2
    C、3
    D、4



2、t为int类型,进入下面的循环之前,t的值为0, while(t=1) { ...... } 则以下叙述中正确的是______。
    A、循环控制表达式的值为0
    B、循环控制表达式的值为1
    C、循环控制表达式不合法
    D、以上说法都不对



3、有如下程序 main() { int n= 9; while(n>6) { n--; printf("%d",n); } } 该程序的输出结果是______。
    A、987
    B、876
    C、8765
    D、9876



4、有以下程序段 int k=0; while(k=1) k++; while循环执行的次数是______。
    A、无限次
    B、有语法错,不能执行
    C、一次也不执行
    D、执行1次



5、以下程序的输出结果是______。 main() { int x=10, y=10, i; for( i=0; x>8; y=++i) printf("%d %d ",x--, y ); }
    A、10 1 9 2
    B、9 8 7 6
    C、10 9 9 0
    D、10 10 9 1



6、请读程序 #include main() { int ai, bi ; for(ai = 1 , bi= 1 ; ai <= 100 ; ai++) { if(bi>= 20) break ; if (bi%3 == 1) { bi += 3 ;continue ; } bi -= 5 ; } printf("%d\n", ai) ; } 上面程序的输出结果是______。
    A、7
    B、8
    C、9
    D、10



7、下面程序的运行结果是:() #include main() {int a=1,b=10; do {b-=a;a++;}while(b--<0); printf("a=%d,b=%d\n",a,b); }
    A、a=3,b=11
    B、a=2,b=8
    C、a=1, b=-1
    D、a=4,b=9



8、若x是int型变量,且有下面的程序片段 for(x=3;x<6;x++) printf( (x%2)?("**%d"):("##%d\n"),x); 上面程序片段的输出结果是______。 1 **3 2 ##3 3 ##3 4 **3##4 ##4 **4 **4##5 **5 **5 ##5
    A、1
    B、2
    C、3
    D、4



9、有如下程序 main( ) { int i,sum; for(i=1;i<=3;sum++) sum +=i; printf("%d\n",sum); } 该程序的执行结果是______。
    A、输出随机值
    B、3
    C、死循环,无法输出
    D、6



10、有以下程序 main() { int i=0,s=0; do{ if(i%2) { i++; continue; } i++; s+=i; } while(i<7); printf("%d\n",s); } 执行后输出的结果是______。
    A、16
    B、12
    C、28
    D、21



11、以下程序的功能是、按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下、 main() { int n,k; float score,sum,ave; sum=0.0; for(n=1;n<=10;n++) { for(k=1;k<=4;k++) { scanf("%f",&score); sum+=score; } ave=sum/4.0; printf("NO%d:%f\n",n,ave); } } 上述程序运行后结果不正确,调试中发现有一条语句出现在程序的位置不正确。这条语句是______。
    A、sum=0.0;
    B、sum+=score;
    C、ave=sum/4.0;
    D、printf("NO%d:%f\n",n,ave);



12、以下程序的输出结果是______。 main() { int num=0; while(num<=2) { num++; printf("%d\n",num); } } (1) (2) (3) (4) 1 1 1 1 2 2 2 3 3 4
    A、(1)
    B、(2)
    C、(3)
    D、(4)



13、以下程序中,while循环的循环次数是______。 main() { int i=0; while(i<10) { if(i<1) continue; if(i==5)break; i++; } ...... }
    A、1
    B、10
    C、6
    D、死循环,不能确定次数



14、执行下面程序片段的结果是______。 int x=23; do { printf("%2d",x--); } while(!x);
    A、打印出321
    B、打印出23
    C、不打印任何内容
    D、陷入死循环



15、以下程序的输出结果是______。 main() { int a,b; for(a=1,b=1; a<=100; a++) { if(b>=10) break; if(b%3==1) { b+=3; continue; } } printf("%d\n",a); }
    A、101
    B、6
    C、5
    D、4



16、以下程序执行后sum的值是______。 main() { int i, sum; for(i=1;i<6;i++) sum+=i; printf("%d\n",sum); }
    A、15
    B、14
    C、不确定
    D、0



17、以下的for循环: for( x=0,y=0; (y!=123)&&(x<4); x++ ) ;
    A、是无限循环
    B、循环次数不定
    C、执行4次
    D、执行3次



18、有如下程序 main() { int i,sum=0; for(i=1; i; i--) sum +=i; printf("%d\n",sum); } 该程序的执行结果是______。
    A、输出随机值
    B、1
    C、死循环,无法输出
    D、0



19、有以下程序 main() { int i; for(i=0;i<3;i++) switch(i) { case 1: printf("%d",i); case 2: printf("%d",i); default: printf("%d",i); } } 执行后输出的结果是______。
    A、011122
    B、012
    C、012020
    D、120



20、下面的程序 main() { int x=3; do{ printf("%d\n",x-=2); }while(!(--x) ); } 的执行结果是?
    A、输出的是1
    B、输出的是1和-2
    C、输出的是3和0
    D、是死循环



第五章 函数

第五章测验

1、有以下程序 float fun(int x,int y) { return(x+y); } void main() { int a=2,b=5,c=8; printf("%3.0f\n",fun((int)fun(a+c,b),a-c)); } 程序运行后的输出结果是( )。
    A、编译出错
    B、9
    C、21
    D、9.0



2、C语言程序中,当函数调用时( )。
    A、实参和形参各占一个独立的存储单元
    B、实参和形参共用一个存储单元
    C、可以由用户指定是否共用存储单元
    D、计算机系统自动确定是否共用存储单元



3、有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是( )。
    A、3
    B、4
    C、5
    D、6



4、下列哪种数据不存放在动态存储区中( )。
    A、函数形参变量
    B、局部自动变量
    C、函数调用时的现场保护和返回地址
    D、局部静态变量



5、以下对C语言函数的有关描述中,正确的是( )。
    A、调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
    B、C函数既可以嵌套定义又可以递归调用
    C、函数必须有返回值,否则不能使用函数
    D、C程序中有调用关系的所有函数必须放在同一个源程序文件中



6、以下描述正确的是( )。
    A、函数调用可以出现在执行语句或表达式中
    B、函数调用不能作为一个函数的实参
    C、函数调用可以作为一个函数的形参
    D、以上都不正确



7、C语言是由( )构成。
    A、主程序和子程序
    B、主函数和若干子函数
    C、一个主函数和一个其他函数
    D、主函数和子程序



8、如果在一个函数的复合语句中定义了一个变量,则该变量( )。
    A、只在该复合语句中有效,在该复合语句外无效
    B、此定义方法错误,其变量为非法变量
    C、在该函数中任何位置都有效
    D、在本程序的源文件范围内均有效



9、若有以下程序 #include void f(int n); main() { void f(int n); f(5); } void f(int n) { printf("%d\n",n); } 则以下叙述中不正确的是( )。
    A、若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
    B、若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
    C、对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明
    D、函数f无返回值,所以可用void将其类型定义为无值型



10、请读程序: #include func( int a, int b) { int c; c=a+b; return c; } main() { int x=6, y=7,z=8, r; r=func((x--,y--,x+y),z--); printf("%d\n",r); } 上面程序的输出结果是( )
    A、11
    B、19
    C、21
    D、31



11、下列说法不正确的是( )。
    A、主函数main中定义的变量在整个文件或程序中有效
    B、不同函数中,可以使用相同名字的变量
    C、形式参数是局部变量
    D、在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效



12、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( )。
    A、void
    B、int
    C、float
    D、double



13、在C语言中,函数的隐含存储类别是( )。
    A、auto
    B、static
    C、extern
    D、无存储类别



14、以下函数值的类型是( )。 fun (float x) { float y; y= 3*x-4; return y; }
    A、int
    B、不确定
    C、void
    D、float



15、关于return语句,下列正确的说法是( )。
    A、在主函数和其他函数中均要出现
    B、必须在每个函数中出现
    C、可以在同一个函数中出现多次
    D、只能在除主函数之外的函数中出现一次



16、以下说法中正确的是( )。
    A、C语言程序总是从第一个的函数开始执行
    B、在C语言程序中,要调用的函数必须在main()函数中定义
    C、C语言程序总是从main()函数开始执行
    D、C语言程序中的main()函数必须放在程序的开始部分



17、有如下程序 int func(int a,int b) { return(a+b); } main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%d\n",r); } 该程序的输出的结果是( )。
    A、12
    B、13
    C、14
    D、15



18、在一个源程序文件中定义的全局变量的有效范围是( )。
    A、本源程序文件的全部范围
    B、一个C程序的所有源程序文件
    C、函数内全部范围
    D、从定义变量的位置开始到源程序文件结束



19、以下程序的输出结果是( )。 fun(int x, int y, int z) { z=x*x+y*y; } main() { int a=31; fun(5,2,a); printf("%d",a); }
    A、0
    B、29
    C、31
    D、不确定



20、有以下程序 #include int abc(int u,int v); main () { int a=24,b=16,c; c=abc(a,b); printf("%d\n",c); } int abc(int u,int v) { int w; while(v) { w=u%v; u=v; v=w ; } return u; }
    A、6
    B、7
    C、8
    D、9



第六章 数组

第六章测验

1、以下关于数组的描述正确的是( )。
    A、数组的大小是固定的,但可以有不同的类型的数组元素。
    B、数组的大小是可变的,但所有数组元素的类型必须相同。
    C、数组的大小是固定的,所有数组元素的类型必须相同。
    D、数组的大小是可变的,可以有不同的类型的数组元素



2、以下程序运行后,输出结果是( )。 #include main() { int y=18,i=0,j,a[8]; do { a[i]=y%2; i++; y=y/2; }while(y>=1); for(j=i-1;j>=0;j--) printf("%d",a[j]); printf("\n"); }
    A、10000
    B、10010
    C、00110
    D、10100



3、若有以下数组定义,其中不正确的是( ) 。
    A、int a[2][3];
    B、int b[][3]={0,1,2,3};
    C、int c[100][100]=;
    D、int d[3][]={{1,2},{1,2,3},{1,2,3,4}};



4、若有以下的定义:int t[5][4];能正确引用t数组的表达式是( )。
    A、t[2][4]
    B、t[5][0]
    C、t[0][0]
    D、t[0,0]



5、以下程序的输出结果是( ) main() { int i, a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); }
    A、258
    B、741
    C、852
    D、369



6、在定义int n[5][6];后第10个元素是( )。
    A、n[2][5]
    B、n[2][4]
    C、n[1][3]
    D、n[1][4]



7、请读程序: #include f(int b[], int n) { int i, r; r=1; for(i=0; i<=n; i++) r=r*b[i]; return r; } main() { int x, a[]={ 2,3,4,5,6,7,8,9}; x=f(a, 3); printf("%d\n",x); } 上面程序的输出结果是( )。
    A、720
    B、120
    C、24
    D、6



8、若定义如下变量和数组: int i; intx[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( )。 for(i=0;i<3;i++) printf("%d",x[i][2-i]);
    A、1 5 9
    B、1 4 7
    C、3 5 7
    D、3 6 9



9、下面程序运行后,输出结果是( )。 main() { char ch[7]={ "65ab21"}; int i,s=0; for(i=0; ch[i]>='0'&&ch[i]<='9';i+=2) s=10*s+ch[i]- '0'; printf("%d\n",s); }
    A、12ba56
    B、6521
    C、6
    D、62



10、若有定义和语句: char s[10]="abcd"; printf("%s\n",s); 则结果是(以下└┘代表空格) ( )。
    A、输出abcd
    B、输出a
    C、输出abcd└┘└┘└┘└┘
    D、编译不通过



11、以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。 void reverse(int a[ ],int n) { int i,t; for(i=0;i     A、22
    B、10
    C、34
    D、30



12、以下程序运行后,输出结果是( )。 main() { int i,k,a[10],p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf("%d\n",k); }
    A、20
    B、21
    C、22
    D、23



13、若有数组定义: char array [ ]="China"; 则数组 array所占的空间为( )。
    A、4个字节
    B、5个字节
    C、6个字节
    D、7个字节



14、以下程序运行后输出结果是( )。 main() { int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2; for(i=0;i     A、2
    B、1
    C、0
    D、3



15、下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组a中查找x。找到则输出x在10个整数中的序号(从1开始);找不到则输出0。程序缺少的是 ( )。 #include main() { int i,a[10],x,flag=0; for(i=0;i<10;i++) scanf("%d",&a[i]); scanf("%d",&x); for(i=0;i<10;i++) if ( __________ ) { flag=i+1; break; } printf("%d\n",flag); }
    A、x!=a[i]
    B、!(x-a[i])
    C、x-a[i]
    D、!x-a[i]



16、在定义int m[ ][3]={1,2,3,4,5,6};后,m[1][0]的值是( )。
    A、4
    B、1
    C、2
    D、5



17、在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
    A、整型常量
    B、整型表达式
    C、整型常量或整型表达式
    D、任何类型的表达式



18、假定int类型变量占用4个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( )。
    A、3
    B、4
    C、12
    D、40



19、以下程序运行后,输出结果是( )。 main() { int n[5]={0,0,0},i,k=2; for(i=0;i     A、不确定的值
    B、2
    C、1
    D、0



20、下面程序的输出是( )。 fun(int h) { static int a[3]={1,2,3}; int k; for(k=0;k<3;k++) a[k]+=a[k]-h; for(k=0;k<3;k++) printf("%d",a[k]); return(a[h]); } main() { int t=1; fun(fun(t)); }
    A、123159
    B、135135
    C、1,3,5, 0,4,8,
    D、135-137



21、若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是( )
    A、a[g-c]
    B、a[4]
    C、a['d'-'c']
    D、a['d'-c]



22、以下对一维整型数组a的正确说明是( )。
    A、int a(10);
    B、int n=10,a[n];
    C、int n; scanf("%d",&n); int a[n];
    D、#define SIZE 10 int a[SIZE];



23、以下程序的输出结果是( )。 f( int b[ ], int m, int n) { int i,s=0; for(i=m;i     A、10
    B、18
    C、8
    D、15



24、若有以下定义语句: float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};则表达式“x[1][1]*x[2][2]”的值是( )。
    A、0.0
    B、4.0
    C、5.0
    D、6.0



25、阅读以下函数: fun(char s[],char t[]) { int i=-1; while(++i,s[i]==t[i]&&s[i]!=’\0’); return(s[i]==’\0’&&t[i]==’\0’); } 以上函数的功能是( )。
    A、比较串s和t的长度
    B、比较串s和t的大小
    C、比较串s和t是否相等
    D、将串t赋给串s



26、若给出以下定义: char x[]="abcdefg"; char y[]={'a','b','c','d','e','f','g'}; 则正确的叙述为( )。
    A、数组x和数组y等价
    B、数组x和数组y的长度相同
    C、数组x的长度大于数组y的长度
    D、数组x的长度小于数组y的长度



27、合法的数组定义是( )。
    A、char a="string";
    B、int a[5]={0,1,2,3,4,5};
    C、int s="string";
    D、char a[]={0,1,2,3,4,5};



28、以下程序运行后,输出结果是( )。 main() { int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0; for(i=0;i<4;i++) s+=aa[i][1]; printf(“%d\n”,s); }
    A、11
    B、19
    C、13
    D、20



29、下列程序执行后的输出结果是( )。 void func1(int i); void func2(int i); char st[]="hello,friend!"; void func1(int i) { printf("%c",st[i]); if(i<3) { i+=2; func2(i); } } void func2(int i) { printf("%c",st[i]); if(i<3) { i+=2; func1(i); } } main() { int i=0; func1(i); printf("\n"); }
    A、hello
    B、hel
    C、hlo
    D、hlm



30、以下程序运行后,输出结果是( )。 main() { int a[10], a1[ ]={1,3,6,9,10}, a2[ ]={2,4,7,8,15},i=0,j=0,k; for(k=0;k<4;k++) if(a1[i]     A、1234
    B、1324
    C、2413
    D、4321



31、不能把字符串:Hello!赋给数组b的语句是( )。
    A、char str[10]= {'H', 'e', 'l', 'l', 'o', '! '};
    B、char str[10];str="Hello!";
    C、char str[10];strcpy(str,"Hello!");
    D、char str[10]="Hello!";



32、下列语句中,不正确的是( )。
    A、static char a[2]={1,2};
    B、static char a[2]={ '1', '2'};
    C、static char a[2]={ '1', '2', '3'};
    D、static char a[2]={ '1'};



33、下面的程序中______错误(每行程序前面的数字是行号)。 1 #include 2 main() 3 { 4 float a[3]={0.0}; 5 int i; 6 for(i=0;i<3;i++) scanf("%d",a[i]); 7 for(i=1;i<3;i++)a[0]=a[0]+a[i]; 8 printf("%f\n",a[0]); 9 }
    A、没
    B、第4行
    C、第6行
    D、第8行



34、下述对C语言字符数组的描述中正确的是 ( )。
    A、任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间
    B、一维数组的元素在引用时其下标大小没有限制
    C、任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间
    D、一维数组的第一个元素是其下标为1的元素



35、下述对C语言字符数组的描述中错误的是( )。
    A、字符数组可以存放字符串
    B、字符数组中的字符串可以整体输入、输出
    C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
    D、不可以用关系运算符对字符数组中的字符串进行比较



36、以下对一维数组m进行正确初始化的是( )。
    A、int m[10]=(0,0,0,0) ;
    B、int m[10]={ };
    C、int m[ ]=;
    D、int m[10]; m[10]={10*2};



37、执行下面的程序段后,变量k中的值为( )。 int k=3, s[2]; s[0]=k; k=s[1]*10;
    A、不定值
    B、33
    C、30
    D、10



38、以下程序运行后,输出结果是( )。 main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]); }
    A、0650
    B、1470
    C、5430
    D、输出值不定



39、若说明:int a[2][3]; 则对a数组元素的正确引用是( ) 。
    A、a(1,2)
    B、a[1,3]
    C、a[1>2][!1]
    D、a[2][0]



40、若有定义:int b[3][4]=;则下述正确的是( ) 。
    A、此定义语句不正确
    B、没有元素可得初值0
    C、数组b中各元素均为0
    D、数组b中各元素可得初值但值不一定为0



第七章 指针

第7章测验

1、设P1 和P2 是指向同一个int 型一维数组的指针变量,k 为int 型变量,则不能正确执行的语句是 。
    A、k=*P1+*P2;
    B、P2=k;
    C、P1=P2;
    D、k=*P1 * (*P2);



2、若有以下的定义: int a[ ]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} , *p=a ; 则值为3 的表式是 。
    A、p+=2,*(p++)
    B、p+=2 ,*++p
    C、p+=3,*p++
    D、p+=2 ,++*p



3、说明语句:int *f(); 中,标识符代表的是:
    A、一个用于指向整型数据的指针变量
    B、一个用于指向一维数组的指针
    C、一个用于指向函数的指针变量
    D、一个返回值为指针型的函数名



4、数组a的两个元素中各自存放了字符’a’、’A’的地址, char *s="\t\\Name\\Address\n";指针s所指字符串的长度为: 。
    A、说明不合法
    B、19
    C、18
    D、15



5、定义:int a[9] ,*p=a;不能表示a[1] 的表达式是( )
    A、p+1
    B、a+1
    C、a++
    D、++p



6、int x ,*pb; ,则正确的赋值表达式是
    A、pb=&x
    B、pb=x;
    C、*pb=&x;
    D、*pb=*x



7、下列函数的功能是 。 int fun1(char * x) { char *y=x; while(*y++) ; return(y-x-1); }
    A、求字符串的长度
    B、比较两个字符串的大小
    C、将字符串X 复制到字符串Y
    D、将字符串X 连接到字符串Y 后面



8、设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下说法中正确的是 。
    A、aa 数组元素的值分别是"abcd"和ABCD"
    B、aa 是指针变量,它指向含有两个数组元素的字符型一维数组
    C、aa 数组的两个元素都是指针,分别指向两个字符串的首地址
    D、aa 数组的两个元素中各自存放了字符



9、分析下面函数,以下说法正确的是 。 swap(int *p1,int *p2) { int *p; *p=*p1; *p1=*p2; *p2=*p; }
    A、交换*p1和*p2的值
    B、正确,但无法改变*p1和*p2的值
    C、交换*p1和*p2的地址
    D、可能造成系统故障,因为使用了空指针



10、请读程序: #include #include void main() { char*s1="ABCDEF",*s2="aB"; s1++; s2++; printf("%d\n", strcmp( s1,s2)); } 上面程序的输出结果是 。
    A、正数
    B、负数
    C、零
    D、不确定的值



11、下面函数的功能是 。 sss(char *s ,char *t ) { while((*s)&&(*t)&&(*t++== *s++)) ; return(*s-*t) ; }
    A、求字符串的长度
    B、比较两个字符串的大小
    C、将字符串s 复制到字符串t 中
    D、将字符串s 接续到字符串t 中



12、有如下程序段 int *p ,a=10 ,b=1 ; p=&a ; a=*p+b ; 执行该程序段后,a 的值为 。
    A、12
    B、11
    C、10
    D、编译出错



13、若有以下定义和语句: double r=99 , *p=&r ; *p=r ; 则以下正确的叙述是 。
    A、以下两处的*p 含义相同,都说明给指针变量p 赋值
    B、在"double r=99,*p=&r;"中,把r 的地址赋值给了p 所指的存储单元
    C、语句"*p=r;"把变量r 的值赋给指针变量p
    D、语句"*p=r;"取变量r 的值放回r 中



14、下面程序输出数组中的最大值,由s 指针指向该元素. void main() { inta[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s; for(p=a, s=a;p-a<10; p++) if(【 】)s=p; printf("The max:%d",*s): } 则在if 语句中的判断表达式应该是 。
    A、p>s
    B、*p>*s
    C、a[p]>a[s]
    D、p-a>p-s



15、类型相同的两个指针变量之间,不能进行的运算是 。
    A、<
    B、=
    C、+
    D、-



16、设有如下的程序段: char str[ ]="Hello" ; char *ptr ; ptr=str ; 执行上面的程序段后 ,*(ptr+5)的值为 。
    A、'o'
    B、'\0'
    C、不确定的值
    D、'o'的地址



17、若有以下定义和语句,且0≤i<10则对数组元素的错误引用是( )。 inta[10]={1,2,3,4,5,6,7,8,9,10},*p,i; p=a;
    A、*(a+i)
    B、a[p-a]
    C、p+i
    D、*(&a[i])



18、下面各语句行中,不能正确进行字符串赋值操作的语句是
    A、char ST[5]={"ABCDE"};
    B、char S[6]={"ABCDE"};
    C、char *S; S="ABCDE";
    D、char s[50]; scanf("%s",s);



19、若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10} ,*p=a ; 则数值为6的表达式是 。
    A、*p+6
    B、*(p+6)
    C、*p+=5
    D、p+5



20、若有以下定义和语句: int a[10]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10} ,*p=a ; 则不能表示a数组元素的表达式是
    A、*p
    B、a[10]
    C、*a
    D、a[p-a]