大连外国语大学往年C语言程序设计测试卷

本试卷为大连外国语大学往年C语言程序设计测试卷,题目包括:单项选择题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

本卷包括如下题型:

一、单项选择题

C语言程序设计测试卷

一、单项选择题 (共50题,每题2分,共计100分)

(  C  )
1、有以下程序
#include <stdio.h>
main()
{
int a = 1, b = 0;
if (--a)
b++;
else if (a == 0)
b += 2;
else
b += 3;
printf("%d\n", b);
}
程序运行后的输出结果是________。
A、0
B、1
C、2
D、3
(  B  )
2、当变量c的值不为2、4、6时,值也为"真"的表达式是________。
A、(c==2)‖(c==4)‖(c==6)
B、(c>=2&&c<=6)‖(c!=3)‖(c!=5)
C、(c>=2&&c<=6)&&!(c%2)
D、(c>=2&&c<=6)&&(c%2!=1)
(  C  )
3、以下叙述中正确的是________。
A、C程序中的注释只能出现在程序的开始位置和语句的后面
B、C程序书写格式严格,要求一行内只能写一个语句
C、C程序书写格式自由,一个语句可以写在多行上
D、用C语言编写的程序只能放在一个程序文件中
(  A  )
4、表达式"~0x11"的值是________。
A、0xFFEE
B、0x71
C、0x0071
D、0xFFEl
(  A  )
5、若变量已正确定义,在语句"if(w)printf("%d\n",k);"中,以下不可替代w的是________。
A、a<>b+c
B、ch=getchar()
C、a==b+C
D、a++
(  A  )
6、在c语言中对于实型数组,其每个数组元素的类型是________。
A、实型
B、整型
C、可以为任何类型
D、不确定
(  D  )
7、c语言的程序一行写不下时,可以 ( ) 。
A、用逗号换行
B、用分号换行
C、在任意一空格处换行
D、用回车符换行
(  C  )
8、以下函数的功能是:求x的y次方,请填空。
main( )
{
int i,x,y;
double z;
scanf("%d %d",&x,&y);
for(i=1,z=x;i<y;i++) z=z*________ ;
printf("x^y=%e\n",z);
}
A、i++
B、x++
C、x
D、i
(  A  )
9、有定义语句:int x, y; 若要通过scanf("%d,%d",&x,&y); 语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是________。
A、11 12<回车>
B、11, 12<回车>
C、11,12<回车>
D、11,<回车>
12<回车>
(  C  )
10、若在定义语句:int a,b,c*p=&c; 之后,接着执行以下选项中的语句,则能正确执行的语句是________。
A、scanf(“%d”,a,b,c);
B、scanf(“%d%d%d”,a,b,c);
C、scanf(“%d”,p);
D、scanf(“%d”,&p)
(  D  )
11、char *s="\t\\name\\address\n"; 指针 s 所指字符串的长度为: 。
A、说明不合法
B、19
C、18
D、15
(  B  )
12、以下描述错误的是_________。
A、break语句可用于switch语句和循环语句
B、break语句和continue语句的作用是一样的,都是提前结束整个循环
C、在循环语句中使用break语句是为了跳出循环,提前结束循环
D、在循环语句中使用continue语句是为了结束本次循环,而不终止整个循环
(  C  )
13、以下程序输出的结果是 __________.
#include <stdio.h>
void main( )
{
int a[ ]={5,4,3,2,1},i,j;
long s=0;
for(i=0;i<5;i++) s=s*10+a[i];
printf("s=%ld\n",s);
}
A、s=12345
B、s=5 4 3 2 1
C、s=54321
D、以上都不对
(  C  )
14、在定义 int a[5][4]; 之后 , 对 a 的引用正确的是__________。
A、a[2][4]
B、a[1,3]
C、a[4][3]
D、a[5][0]
(  D  )
15、下列关于do…while语句的叙述中正确的是________。
A、do…while语句所构成的循环不能用其他语句构成的循环来代替
B、do…while语句所构成的循环只能用break语句跳出
C、do…while语句所构成的循环只有在while后面的表达式非零时才结束
D、do…while语句所构成的循环只有在while后面的表达式为零时才结束
(  D  )
16、下列四个叙述中,正确的是______。
A、C程序中的所有字母必须小写
B、C程序中的关键字必须小写,其他标识符不区分大小写
C、C程序中的所有字母都不区分大小写
D、C程序中的所有关键字必须小写
(  C  )
17、表达式sizeof(double)是________。
A、函数调用
B、double型表达式
C、int型表达式
D、非法表达式
(  C  )
18、若已定义x为int型变量,说明指针变量p的正确语句是________。
A、int p=&x;
B、int * p=x;
C、int * p=&x;
D、* p=* x;
(  A  )
19、在循环结构中,______可以使得同一组语句一次也不执行。
A、当型循环
B、直到型循环
C、都不能实现
D、do-while语句
(  B  )
20、如果将布尔常量值true赋值给一个整型变量,则整型变量的值为________。
A、0
B、-1
C、True
D、False
(  C  )
21、下面单位换算中,正确的是________。
A、1KB=1024×1024B
B、1KB=1024MB
C、1MB=1024×1024B
D、1GB=1024B
(  C  )
22、假定a为一个整型数组名,则元素a[4]的字节地址为
A、a+4
B、a+8
C、a+16
D、a+32
(  C  )
23、下列哪个语句是声明一个含有10个string对象的数组 ( )
A、char str[];
B、char str[][];
C、String str[]=new String[10];
D、String str[10];
(  C  )
24、以下定义数组中错误的是________。
A、int a [10];
B、int a [2][20];
C、int a[20][ ];
D、int a[];
(  B  )
25、设
void f1 (int *m,long & n);
int a; long b;
则以下调用合法的是______ 。
A、f1 (a,b);
B、f1(&a,b);
C、f1(a,&b);
D、f1(&a,&b);
(  B  )
26、以下选项中表示一个合法的常量是(说明:符号∏表示空格)
A、9∏9∏9
B、0Xab
C、123E0.2
D、2.7e
(  B  )
27、下列二维数组初始化语句中,正确且与语句int a[][3]= { 1,2,3,4,5 }等价的是________。
A、int a[2][]={{1,2,3},{4,5}};
B、int a[][3]={1,2,3,4,5,0};
C、int a[][3]={{1,0},{2,0},{3,0}};
D、int a[2][]={{1,2,3},{4,5,6}};
(  B  )
28、在c语言中,'a'和"a"存储所占用的字节数分别是________。
A、1,1
B、1,2
C、2,1
D、2,2
(  A  )
29、有以下程序:
int a=3;
main()
{
int s=0;
{
int a=5;
s+=a++;
}
s+=a++;
printf("%d\n",s);
}
程序运行后的输出结果是________。
A、8
B、10
C、7
D、11
(  B  )
30、有以下程序:
#include<stdio.h>
int f(int t[],int n);
main() {
int a[4]=1,2,3,4,s;
s=f(a,2);
printf("%d\n",s);
}
int f(int t[],int n) {
if((n>0)&&(n<5))
return t[n+1]+f(t,n-1);
else return 0;
}
程序运行后的输出结果是________。
A、4
B、7
C、10
D、6
(  C  )
31、下列选项中,表示字符串末尾的结束标志是________。
A、'\n'
B、'\r'
C、'\0'
D、NULL
(  B  )
32、宏定义用于将一个标识符定义为一个
A、常量
B、字符串
C、整数
D、长整数
(  B  )
33、有如下程序段int *p,a=6,b=2; p=&a; a=*p+b; 执行该程序段后,a的值为______。
A、6
B、8
C、7
D、编译出错
(  D  )
34、以下选项中不属于c语言类型的是______。
A、signed short int
B、unsigned char
C、singed long
D、long short
(  A  )
35、以下程序的功能是:按顺序读入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);
(  A  )
36、以下能正确定义二维数组的是______。
A、int a[][3]={1,2,3,4,5,6};
B、int a[][3]={2*3};
C、int a[][3]={};
D、int a[2][3]={{1},{2},{3,4}};
(  A  )
37、以下选项中不能作为c语言合法常量的是______。
A、'cd'
B、0.1e+6
C、"\a"
D、'\011'
(  C  )
38、有关c语言的主函数描述正确的是________。
A、C程序可以有多个main函数
B、C程序可以没有main函数
C、C程序有且只有一个main函数
D、C程序不一定从main函数开始执行
(  D  )
39、文件中定义的全局变量的作用域为________。
A、本程序全部范围
B、本文件全部范围
C、函数内全部范围
D、从定义该变量的位置开始到本文件结束
(  C  )
40、下列if语句中,不正确的是________。
A、if(x>y);
B、if(x==y) x+=y;
C、if(x!=y) scanf("%d",&x) else x=1;
D、if(x
(  A  )
41、以下叙述中错误的是________。
A、在一个程序中,每个模块均可以独立编译运行
B、程序“模块化”有利于任务的分解简化
C、允许对函数单独进行编译,是 C 语言实现“模块化”的基础
D、采用模块化结构,可以提高编程效率
(  C  )
42、下面哪个不是关键字?
A、int
B、struct
C、define
D、continue
(  B  )
43、以下叙述中正确的是________。
A、循环发生嵌套时,最多只能两层
B、三种循环 for, while,do-while 可以互相嵌套
C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误
D、for 语句的圆括号中的表达式不能都省略掉
(  B  )
44、为了提高程序的运行速度,在函数中对于整型或指针可以使用()型的变量。
A、auto
B、register
C、static
D、extern
(  C  )
45、enum a
{
sum=9,mon=-1,tue
}
;
定义了________。
A、枚举变量
B、3个标识符
C、枚举数据类型
D、整数9和-1
(  A  )
46、若使用一维数组名作函数实参,则以下正确的说法是________。
A、必须在主调函数中说明此数组的大小
B、实参数组类型与形参数组类型可以不匹配
C、在被调用函数中,不需要考虑形参数组的大小
D、实参数组名与形参数组名必须一致
(  A  )
47、当定义一个结构体变量时,系统分配给它的内存是________。
A、各成员所需内存量的总和
B、结构中第一个成员所需内存量
C、结构中最后一个成员所需内存量
D、成员中占内存量最大者所需的容量
(  B  )
48、执行以下语句后,a,b,c 的值分别为________。
int a,b,c;
a=b=c=1;
++a||++b&&++c;
A、1,1,1
B、2,1,1
C、2,2,1
D、2,2,2
(  C  )
49、a,b 为整型变量,二者均不为 0,以下关系表达式中恒成立的是()。
A、a*b/a*b==1
B、a/b*b/a==1
C、a/b*b+a%b==a
D、a/b*b==a
(  B  )
50、设 j 和 k 都是 int 类型,则 for 循环语句
for(j=0,k=-1;k=1;j++,k++) printf("****\n");()。
A、循环结束的条件不合法
B、是无限循环
C、循环体一次也不执行
D、循环体只执行一次