第一章测试
1. 在printf()函数调用的格式字符串中,若使用格式符为“%d”,则对应输出的
数据类型为int。( ) A:错 B:对 答案:B
2. 在printf()函数调用的格式字符串中,若使用格式符为“%f”,则对应输出的
数据类型为int。( ) A:对 B:错 答案:B
3. 在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应
输出的数据占用的字符位置个数为4 。( ) A:错 B:对 答案:A
4. 程序运行中需要从键盘上输入多于一个数据时,若不特别规定分隔符,则输
入的各数据之间所使用的分隔符为逗号或回车。( ) A:对 B:错 答案:A
5. 在scanf()函数调用的格式字符串中,若使用格式字符串为“%d,%d”,则规
定输入的两个数据之间的分隔符为(@ )( ) A:对 B:错 答案:A
第二章测试
1. 若x的值为5,则执行“if(x>10) x++; else x–;”语句后,x的值为( )。
A:4 B:6 C:7 D:5 答案:A
2. 有如下程序void main( ){ int a=2,b=-1,c=2;if(aprintf(“%d”,c);}该程序的输出结果是( )。 A:3 B:0 C:2
3.
4.
5.
6.
7.
8. 9.
10.
D:1 答案:C
if(表达式)语句中,表达式可以是任何合法的数值。( ) A:错 B:对 答案:B
改变if-else语句的缩进格式,不会改变程序的执行流程。( ) A:对 B:错 答案:A
以下关于if语句的错误描述是( )。
A:与else配对的if语句是其之前最近的未配对的if语句 B:条件表达式的括号不能省
C:条件表达式可以是任意的表达式
D:条件表达式只能是关系表达式或逻辑表达式 答案:D
在if语句中,每个else关键字与它前面同层次并且最接近的if关键字相配套。( ) A:错 B:对 答案:B
下列叙述中正确的是( )。
A:在switch语句中,不一定使用break语句 B:break语句只能用于switch语句。 C:在switch语句中必须使用default
D:break语句必须与switch语句中的case配对使用 答案:A
下列语句应将小写字母转换为大写字母,其中正确的是( )。 答案:D
若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是( )。
A:fabs(x-y)<10
B:x-y>-10 && x-y<10 C:(x-y)*(x-y)<100
D:(x-y)<-10||!(y-x)>10 答案:D
下列说法错误的是( )。
A:case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。
B:每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
C:case后的“常量表达式”的类型只能是整型。
D:若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不在合理区间内的非法数据。 答案:C
第三章测试
1. int i=1,sum=0;while(i<=10) { sum=sum+i; i++;}printf(“sum=%d”,sum);得到
的结果为( )。 A:45 B:11 C:55 D:0 答案:C
2. 以下关于for语句的格式描述错误是( )。
A:for(i=0,j=100 ; i<=j ) k=i+j;
B:for (sum=0 ; i<=100; i++) sum=sum+i; C:for(i=0,j=100 ; i<=j; i++,j– ) k=i+j;
D:for(sum=0,i=1 ; i<=100; i++) sum=sum+i; 答案:A
3. for(表达式1;表达式2;表达式3) 一个或两个或三个表达式均可以省略( )
A:错 B:对 答案:B
4. 用while和do—while循环时,循环变量初始化的操作应在while和do—
while语句之前完成。( ) A:错 B:对 答案:B
5. for语句可以在表达式1中实现循环变量的初始化。( )
A:错 B:对 答案:B
6. for(i=1;i<=100;i++) sum=sum+i;等价于i=1;while(i<=100){ sum=sum+i; i++; }
( ) A:错 B:对 答案:B
7. 下列说法错误的是( )。
A:break语句结束整个循环过程,需要判断执行循环的条件是否成立。 B:只希望提前结束本次循环,而接着执行下次循环,这时可以用continue语句。
C:break语句只能用于循环语句和switch语句之中,而不能单独使用。 D:break语句可以用来从循环体内跳出循环体,即提前结束循环。 答案:A
第四章测试
1. 在一个函数定义中,函数体的格式是一条复合语句。( )
A:对 B:错 答案:A
2. 一个函数必须返回一个值,不允许定义不返回任何值的函数。( )
A:对 B:错 答案:B
3. 在一个函数定义中,参数表中的参数定义之间是采用分号分开的。( )
A:错 B:对 答案:A
4. 函数调用参数表中的每个实参只能是常量或变量。( )
A:错 B:对 答案:A
5. 在C语言程序中,主函数也可以成为递归函数。( )
A:错 B:对 答案:A
6. 函数定义格式中的参数表被称为形参表。( )
A:错 B:对 答案:B
7. 对于标识为static属性的变量,若没有对它进行初始化,则默认的初值为0。
( ) A:错 B:对 答案:B
8. 在C语言的函数调用中,如果普通变量作为函数的参数,则调用函数时
( )。
A:实参和形参共用一个存储单元
B:由计算机系统确定是否共用一个存储单元 C:由用户确定是否共用一个存储单元
D:实参和形参分别占用一个的存储单元 答案:D
9. 在C语言的函数调用中,如果普通变量作为函数的实参,则它与对应形参
之间的传递方式是( )。 A:由用户指定传递方式
B:由实参传递给形参,再由形参传递给实参 C:地址传递 D:单向值传递 答案:D
第五章测试
1. 1字符数组的输入可通过逐个字符的方式,也可将整个字符串一次输入。
( ) A:对 B:错 答案:A
2. strcmp()是字符串连接的函数。( )
A:对 B:错 答案:B
3. strlen函数的作用是测试字符串长度( )
A:错 B:对 答案:B
4. 在定义数组并对其中各元素赋值后,就可以引用数组中的元素。( )
A:错 B:对 答案:A
5. 二维数组赋值需要借助循环语句( )
A:对 B:错 答案:A
6. 一维数组按行存贮,二维数组按列存贮( )
A:对 B:错 答案:B
7. int a[10]={0,1,2,3,4,5,6,7,8,9};a[7]元素值7。( )
A:对 B:错 答案:A
8. 若有定义:int a[][3]={1,2,3,4,5,6,7,8,9}; ,则a数组的行数为( )。
A:2 B:1 C:3
D:不能确定 答案:C
9. C语言中,数组名代表( )。
A:数组首地址 B:数组元素的个数 C:数组第一个元素的值 D:数组全部元素的值 答案:A
10. int a[ ]={5,8,7,6,2,7,3};数组a的长度是( )。
A:7 B:5 C:6 D:8 答案:A
第六章测试
1. 假定一个数据对象为x,则x的地址表示为*x。( )
A:错 B:对 答案:A
2. 一个指针指向一个数据对象时,指针值是这个对象的首字节地址。( )
A:对 B:错 答案:A
3. 假定p所指对象的值为25,p+1所指对象的值为42,则表达式*++p的值
为42。( ) A:错 B:对 答案:B
4. 指针变量的基类型用来指定此指针变量可以指向的变量的类型。( )
A:错 B:对 答案:B
5. 如果已经定义int x;,则对指针变量pointer进行说明和初始化正确的是
( )。
A:int pointer = B:int pointer = x;
C:int pointer = x; D:int *pointer = 答案:D
6. 如果已经定义int x, pointer;,则下面赋值语句正确的是( )。
A:pointer = B:pointer = x; C:pointer = D:pointer = x; 答案:A
7. 即使两个指针变量的类型相同,它们也不能( )。
A:比较 B:相加 C:相减
D:指向同一地址 答案:B
第七章测试
1. 结构体中的成员变量可以类型不同,共用体变量类型必须相同。( )
A:对 B:错 答案:B
2. 使几个不同的变量占用同一段内存空间的结构称共用体。( )
A:错 B:对 答案:B
3. 结构体变量占用空间为所有成员空间最大的那个。( )
A:对 B:错 答案:B
4. 共用体变量占用空间为所有成员空间最大的那个。( )
A:对 B:错 答案:A
5. 结构体指针变量可以指向共用体类型变量。( )
A:错 B:对 答案:A
6. struct Student{long int num;char name[20];char sex;float score}a={10101,“Li
Lin”,‘M’, 678.5};以上结构体赋值中,“10101”赋值给( )。 A:a.name B:a.num
C:a.sex D:a.score 答案:C
7. struct Person{char name[20];int count;}leader[3]={“Li”,0,“Zhang”,0,“Sun”,0};
以上结构体定义中,结构体数组名是( )。 A:leader B:leader[3] C:struct D:Person 答案:A
8. struct Student{int num;char name[20];char sex;int age;float score;}s1;以上结
构体定义中,Student为( )。 A:结构体名 B:变量的值 C:变量名
D:结构体的值 答案:A
第八章测试
1. 在定义指针变量的语句“int *p,pp;”中,p和pp具有相同的指针类型。( )
A:对 B:错 答案:B**
2. 向文本文件中输出数据时,需要调用系统函数fputc()或fputs()。( )
A:对 B:错 答案:A
3. 在数据文件打开方式字符串中,字符加号(+)只用于打开二进制文件的方式
中,不能用于打开文本文件的方式中。( ) A:对 B:错 答案:B
4. 在数据文件打开方式字符串中,字符r、w和a具有确定的含义,分别代表
读、写和追加方式。( ) A:对 B:错 答案:A
5. 在C语言中,下面关于文件的存取方式正确的叙述是( )。
A:不可以顺序存取,但可以随机存取 B:只能从文件的开头存取
C:可以顺序存取,也可以随机存取
6.
7.
8.
9.
10.
D:可以顺序存取,但不可以随机存取 答案:C
下列关于C语言数据文件的叙述中正确的是( )。
A:文件由ASCII码字符序列组成,C语言只能读写文本文件
B:文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 C:文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D:文件由二进制数据序列组成,C语言只能读写二进制文件 答案:B
在C语言中,读写操作时会进行自动转换的文件是( )。 A:文本文件 B:二进制文件
C:二进制文件和文本文件都需要转换 D:二进制文件和文本文件都不需要转换 答案:A
在C语言中,下面关于文件操作正确的叙述是( )。 A:对文件操作时打开和关闭文件的顺序没有要求
B:对文件操作时,必须先检查文件是否存在,然后再打开文件 C:对文件操作时需要先打开文件 D:对文件操作时需要先关闭文件 答案:C
为了进行写操作而打开二进制文件wr.dat的正确写法是( )。 A:fp = fopen(“wr.dat”, “wb”); B:fp = fopen(“wr.dat”, “r”); C:fp = fopen(“wr.dat”, “w”); D:fp = fopen(“wr.dat”, “rb”); 答案:A
下面的语句中,将fp定义为文件型指针的是( )。 A:file fp; B:file fp; C:FILE fp; D:FILE fp; 答案:D