资源描述
计算机程序设计基础(C语言)
单项选择练习题
一、基本概念
1. C语言程序是由 C 组成的。
A)某些可执行语言 B)main函数 C)函数 D)包括文献中的第一个函数
2.( A )是组成C语言程序的基本单位。
A、函数 B、过程 C、子程序 D、子例程
3.C语言程序从 C 开始执行。
A) 程序中第一条可执行语句 B) 程序中第一个函数
C) 程序中的main函数 D) 包括文献中的第一个函数
4.C语言程序从main()函数开始执行,因此这个函数要写在_D___。
A) 程序文献的开始 B) 程序文献的最后
C) 它所调用的函数的前面 D) 程序文献的任何位置
5、如下说法中正确的是( C )。
A、C语言程序总是从第一个定义的函数开始执行
B、在C语言程序中,要调用的函数必须在main( )函数中定义
C、C语言程序总是从main( )函数开始执行
D、C语言程序中的main( )函数必须放在程序的开始部分
6. 下列措施中错误的是(D )。
A.主函数能够分为两个部分:主函数阐明部分和主函数体。
B.主函数能够调用任何非主函数的其他函数。
C.任何非主函数能够调用其他任何非主函数。
D.程序能够从任何非主函数开始执行。
7. 下列说法错误的是:( B )
A. C程序运行步骤是编辑、编译、连接、执行。
B. C语言的变量名必须用小写,常量用大写。
C. C语言的三种基本结构是次序、选择、循环。
D. C程序一定由函数组成的。
8.下列有关C语言的说法错误的是( B ) 。
A) C程序的工作过程是编辑、编译、连接、运行
B) C语言不辨别大小写。
C) C程序的三种基本结构是次序、选择、循环
D) C程序从main函数开始执行
9. 系统默认的C语言源程序扩展名为.C,需通过 C 之后,生成.exe文献,才能运行。
A) 编辑、编译 B )编辑、连接 C) 编译、连接 D) 编辑、改错
*10.下列说法中正确的是(B )。
A.因为C源程序是高级语言程序,因此一定要在TC软件中输入。
B.因为C源程序是由字符流组成的,因此能够作为文本文献在任何文本编辑的软件中输入。
C.因为C程序是高级语言程序,因此输入后即可执行。
D.因为C程序是高级语言程序,因此它是由命令组成的。
二、数据类型、运算符与体现式
1. 不是C语言提供的合法核心字是(B )。
A.switch B.cher C.case D.default
*2.C语言提供的合法核心字是(D )。
A.next B.string C.do case D.struct
*3.下列不属于C语言中核心字的是 B
A)long B)print C)default D)typedef
4.下列正确的标识符是(C )。
A.-a1 B.a[i] C.a2_i D.int t
5. 下列C语言用户标识符中合法的是( B )。
A、*y B、sum C、int D、%5f
6. 下面四个选项中,合法的标识符是:( D )
A. auto B. define C. 6a D. c
7.下列C语言用户标识符中合法的是( B )。
A)3ax B)x C)case D)-e2 E)union
8. 如下选项中合法的用户标识符是 B
A) long B) _2Test C) 3Dmax D) A.dat
9.下列四组选项中,正确的C语言标识符是( C )。
A) %x B) a+b C) a123 D) 123
10. 请选出可用作C语言用户标识符的一组标识符( B )
A) void B) a3_b3 C) For D) 2a
define _123 -abc DO
WORD sum Case sizeof
11、下列四组字符串中都能够用作C语言程序中的标识符的是( A )。
A、print _3d db8 aBc B、I\am one_half start$it 3pai
C、str_1 Cpp pow while D、Pxq My->book line# His.age
12.下列C语言标识符中合法的变量名是 B 。
A)2e3 B)you C)*y D)float
13.C语言中的简单数据类型包括(D )。
A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型
C、整型、字符型、逻辑型 D、整型、实型、字符型
14、下列能够正确表示字符型常量的是( A )。
A、’\t’ B、”a” C、”\n” D、297
15.下列体现式中, D 是正确的C语言字符常量。
A)”x” B)e3 C)”COMPUTER” D)’#’
16.在下列体现式中,属于字符型常量的是 B 。
A) A B) 'a' C) "A" D) b
17. 如下选项中合法的字符常量是( B )
A) “B” B) ‘\n’ C) ‘68’ D) E
18.下面字符常量表示错误的是( D )
A)’a’ B)’?’ C)’\n’ D)”\n”
19. 已定义c为字符型变量,则下列语句中正确的是 ( C )
A)c='97' B)c="97" C)c=‘a’ D)c="a"
20. 已知ch是字符型变量,不正确的赋值语句是( A )
A) ch='a+b' ; B) ch=' \0 ' ;
C) ch=' 7' ; D) ch=’;’;
21.C语言中字符型(char)数据在内存中的存储的是( D )
A) 原码 B) 补码 C) 反码 D) ASCII码
22.在C语言中,字符型数据所占的内存空间是( C )
A)2个字节 B) 4字节 C) 1字节 D)由用户自定义
*23.若int类型数据占2个字节,则unsigned int类型数据的取值范围是 ( B )
A)0~255 B)0~65535 C)-32768~32767 D)-256~255
26 .C语言中运算对象必须是整型的运算符是( A )
A) %= B) / C) = D) 〈=
27.在C语言程序中,体现式8/5的成果是( B )
A)1.6 B)1 C)3 D)0
28.设x为int型变量,则执行如下语句后,x的值为 B
x=10; x+=x;
A) 10 B) 20 C) 40 D) 30
31.在C语言程序中,体现式5%2的成果是 C 。
A)2.5 B)2 C)1 D)3
32.假如int a=3,b=4;则条件体现式"a<b? a:b"的值是__A__。
A) 3 B) 4 C) 0 D) 1
33.若int x=2,y=3,z=4 则体现式x<z?y:z的成果是( B ).
A)4 B)3 C)2 D)0 E)1
34.C语言中,关系体现式和逻辑体现式的值是( B ) 。
37. 下面( D )体现式的值为4.
A) 11/3 B) 11.0/3
C) (float)11/3 D) (int)(11.0/3+0.5)
*39. 已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是( C )
A .0 B. 1 C. 5 D. 6
40. 已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为 ( B )
A) 68 B) ‘D’ C) 错误 D) ‘d’
41.下列有关C语言的论述错误的是( A )
A) 大写字母和小写字母的意义相同
B) 不一样类型的变量能够在一个体现式中
C) 在赋值体现式中等号(=)左边的变量和右边的值能够是不一样类型
D) 同一个运算符号在不一样的场所能够有不一样的含义
42. 有:int w=11,x=12,y=3,m; 执行下面语句后m的成果是( C )
m=(w<x)?w:x;
m=(m<y)?m:y;
A. 1 B. 2 C. 3 D. 以上成果都不对
43. 有:int w=7, x=12, y=3, m; 执行下面语句后m的值是( A )
m=(w>x)?w:x;
m=(m>y)?m:y;
A. 12 B. 0 C. 3 D. 1
45.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是( B )
A.b=1.0/a B.b=(float)(1/a)
C.b=1/(float)a D.b=1/(a*1.0)
48. 如下运算符中优先级最高的运算符是( B )
A)&& B)++ C)+= D)!=
49.若“int n; float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)
A.1 B.4 C.4.333333 D.4.6
52. 设x为int型变量,则执行如下语句后,x的值为( C )
x=10; x*=x;
A) 10 B) 20 C) 100 D) 0
53. 若有语句int a=1,b; double y=2.3; b=(int)y; 则b的值为 (B )。
A) 3 B) 2 C) 1 D) 2.3
54.已知int x;char y;则下面错误的scanf函数调用语句为(B )
A)scanf(“%d,%d”,&x,&y); B) scanf(“%d,%c”,x,y)
C) scanf(“%d%d”,&x,&y) D) scanf(“%d,%c”,&x,&y)
57.在C语言的库函数中,能够输出char型变量x值的语句是 C 。
A)getchar(x); B)fputc(x) C)putchar(x) D)puts(x)
60. 如下说法正确的是( C )
A) 'x'+5是一个错误的体现式
B) C语言不允许类型的混合运算
C) 强制类型转换时,类型阐明符必须加括号
D) (int)x+y 和(int)(x+y)是完全等价的体现式
61.设 int x=0, y=1; 体现式(x||y)的值是 ( B )
A) 0 B) 1 C) 2 D) -1
三、选择结构
1. 在C语言中,以为( D )为逻辑"真"
A) true B)不小于0的数 C)非0整数 D)非0的数
2. 表示关系x<=y<=z的c语言体现式为 A
A) (x<=y)&&(y<=z) B) (x<=y)AND(y<=z)
C) (x<=y<=z) D) (x<=y)&(y<=z)
3.能正确表示逻辑关系:“a≥=10或a≤0”的C语言体现式是( D )
A) a>=10 or a<=0 B) a>=0|a<=10
C) a>=10 &&a<=0 D) a>=10‖a<=0
4、判断char型变量c1是否为大写字母的体现式为( D )。
A、’A’<=c1<=’Z’ B、(c1>=’A’) & (c1<=’Z’)
C、(’A’<=c1)AND (‘Z’>=c1) D、 c1>=’A’ && c1<=’Z’
5. 为表示逻辑体现式79<X<90,应使用的C语言体现式是 A 。
A)( X>79 )&&( X<90 ) B) ( X>79 )!=( X<90 )
C) 79<X<90 D) (X>79 )||( X<90 )
6.设有语句“int a=2,b=3,c=-2,d=2;”,则逻辑体现式“a>0&&b&&c<0&&d>0”的 值是( A )
A.1 B.0 C.-1 D.犯错
7. 设a为整型变量,则不能正确体现数学关系10<a<15的C语言体现式是( A )。
A.10<a<15 B.a==11||a==12||a==13||a==14
C. a>10&&a<15 D.!(a<=10)&&!(a>=15)
8. 设x,t均为int型变量,则执行语句“x=10;t=x&&x>10;”后,t的值为(D )
A.不定值 B.10 C.1 D.0
9. 若int i=10; 执行下列程序后,变量i的正确成果是( A )。
switch ( i )
{ case 9: i+=1;
case 10: i+=1;
case 11: i+=1;
default : i+=1; }
A、13 B、12 C、11 D、10
10. 在下面的条件语句中(其中s1和s2表示是C语言的语句),只有一个在功效上与其他三个语句不等价,它是( D )。
A、if (a) s1 ; else s2; B、if (a= =0) s2; else s1;
C、 if (a!=0) s1; else s2; D、if (a= =0) s1; else s2;
11.假定所有变量均已正确定义,则下列程序段运行后y的值是(A )
int a=0,y=10;
if(a=0) y--;
else if(a>0) y++;
else y+=y;
A.20 B.11 C.9 D.0
12.假定所有变量均已正确定义,则下列程序段运行后x的值是(B )。
a=b=c=0; x=35;
if(!a) x--;
else if(b);
if(c) x=3;
else x=4;
A.34 B.4 C.35 D.3
13. C语言对嵌套if语句的要求是:else语句总是与( D )配对。
A) 其之前最近的if B) 第一个if
C) 缩进位置相同的if D) 其之前最近的且尚未配正确if
14. 在C语言语句中,用来决定分支流程的体现式是( A )。
A.可用任意体现式 B.只能用逻辑体现式或关系体现式
C.只能用逻辑体现式 D.只能用关系体现式
15.C语言中用( B )表示逻辑“真”。
A. true B. 整数值1
C. 非零整数值 D. false
16、若k是int型变量,且有下面的程序段:
int k;
k= -3;
if (k<=0) printf(“####”);
else printf(“&&&&”);
上面程序段的输出成果是( A )
A、#### B、&&&&
C、####&&&& D、有语法错误,无输出成果
17. main()
{ int x=0,a=0,b=0;
switch(x){
case 0: b++;
case 1: a++;
case 2: a++;b++;}
printf(“a=%d,b=%d\n”,a,b);}
该程序的输出成果是 D
A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2
18. 如下程序的输出成果是:( C )
main()
{ int x=-10,y= 1,z=1;
if(x<y)
if(y<0) z=0;
else z=z+1;
printf(“%d\n”,z);
}
A. 0 B. 1 C. 2 D. 3
19. 如下程序段的输出成果是( B )
int a=10,b=50,c=30;
if(a>b)
a=b;
b=c;
c=a;
printf("a=%2d b=%2d c=%2d\n",a,b,c);
A) a=10 b=50 c=10 B) a=10 b=30 c=10
C) a=50 b=30 c=10 D) a=50 b=30 c=50
四、循环结构
*1.在C语言中,下列说法中正确的是( D )。
A) do-while语句组成的循环不能用其他语句组成的循环来替代。
B) do-while语句组成的循环只能用break语句退出。
C) do-while语句组成的循环在while后的体现式非零时结束循环。
D) do-while语句组成的循环,在while后的体现式为零时结束循环。
2. break语句不能出目前( D )语句中
A. switch B.for C. while D. if…else
*3.对于break语句和continue语句的说法错误的是( B )
A) break语句不能用于循环语句和switch语句之外的任何其他语句中。
B) break和continue也能够用于if语句中
C) continue语句只结束本次循环,而不是终止整个循环的执行。
D) break语句是结束整个循环过程,不再判断执行循环的条件是否成立。
4.语句while(!y);中的体现式!y等价于 A
A)y==0 B)y!=1 C)y=!0 D) y==1
5.若有“int a=1,x=1;”,则循环语句“while(a<10) x++; a++;”的循环执行(A )
A.无限次 B.不确定次 C.10次 D.9次
6. 有如下程序段
int k=0
while(k)k++;
则while循环体执行的次数是 C
A) 无限次 B) 有语法错,不能执行
C) 一次也不执行 D) 执行1次
7. 下列循环语句中有语法错误的是( D )
A while(x=y) 5; B while(0) ;
C do 2;while(x= =b); D do x++ while(x= =10);
9. 如下程序段 ( A )
x=-1;
do { x=x*x; }
while(x>0);
A. 是死循环 B. 循环执行一次 C. 循环执行二次 D. 有语法错误
10. 下面程序段执行后的成果为: ( B )
int sum=0, n=10;
do { sum=sum+n;
n++; }
while(n<10)
printf(“%d,%d”,sum,n)
A. 0, 10 B. 10, 11 C. 0, 11 D. 以上成果都不对
11.对如下程序段的论述正确的是___A____.
int x=1;
do
{ x= -1*x; }
while(!x)
A) 是死循环 B) 循环执行一次 C)循环执行二次 D)有语法错误
12.循环“for(i=0,x=1;i=10&&x>0;i++);”的循环执行( A )。
A.无限次 B.不确定次 C.10次 D.9次
13.执行语句{for(j=0;j<=3;j++) a=1;}后变量j的值是 C .
A)0 B) 3 C)4 D) 1
14. 有如下程序
main()
{ int i,sum=2;
for(i=1;i<=3;i+=2) sum+=i;
printf(“%d\n”,sum); }
该程序的执行成果是 A
A) 6 B) 3 C) 死循环 D) 4
五 数组
1. 如下对一维数组a的正确阐明是: D
A) char a(10); B) int a[];
C)int k=5,a[k]; D)char a[3]={‘a’,’b’,’c’};
2.如下能对一维数组a进行初始化的语句是: ( C )
A. int a[5]=(0,1,2,3,4,) B. int a(5)={}
C. int a[3]={0,1,2} D. int a{5}={10*1}
3.在C语言中对一维整型数组的正确定义为 D 。
A)int a(10); B)int n=10,a[n];
C)int n;a[n]; D)#define N 10
int a[N];
4、已知:int a[10]; 则对a数组元素的正确引用是( D )。
A、a[10] B、a[3.5] C、a(5) D、a[0]
5. 执行下面的程序段后,变量k中的值为 C
A) 不定值 B) 33 C) 30 D) 10
int k=3, s[2];
s[0]=k; k=s[0]*10;
*6. 下列说法中错误的是 C
A 组成数组的所有元素的数据类型必须是相同的
B 用指针法引用数组元素允许数组元素的下标越界
C 一维数组元素的下标依次是1、2、3……
D 定义数组时的长度能够是整型常量体现式
7. 若有如下数组阐明,则数值最大的和最小的元素下标分别是( B )。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
A.1,12 B.0,11 C.1,11 D.0,12
8.若有如下数组阐明,则i=10;a[a[i]]元素数值是( B )。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A.10 B.9 C.6 D.5
9. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是 D
A) 3 B) 6 C) 10 D) 20
11.若有阐明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( B )
A. 2 B. 3 C. 4 D.无确定值
12.如下定义语句中,错误的是 ( D )
A) int a[]={1,2}; B) char *a;
C) char s[10]=“test”; D) int n=5,a[n];
13.下面程序段的输出成果是: ( C )
int i;
int x[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
14.对二维数组的正确定义是( C )
A.int a[ ] [ ]={1,2,3,4,5,6}; B.int a[2] [ ]={1,2,3,4,5,6};
C.int a[ ] [3]={1,2,3,4,5,6}; D.int a[2,3]={1,2,3,4,5,6};
15.已知int a[3][4];则对数组元素引用正确的是__C___
A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)
六、函数
1.C语言中函数返回值的类型是由 A 决定的.
A)函数定义时指定的类型 B) return语句中的体现式类型
C) 调用该函数时的实参的数据类型 D) 形参的数据类型
2. 在C语言中,函数的数据类型是指( A )
A 函数返回值的数据类型 B. 函数形参的数据类型
C 调用该函数时的实参的数据类型 D.任意指定的数据类型
A. 由系统选择 B. 单向值传递 C. 由用户指定传递方式 D. 地址传递
5. 在函数调用时,如下说法正确的是( B )
A.函数调用后必须带回返回值
B.实际参数和形式参数能够同名
C.函数间的数据传递不能够使用全局变量
D.主调函数和被调函数总是在同一个文献里
9.如下论述中正确的是 A
A) 组成C程序的基本单位是函数
B) 能够在一个函数中定义另一个函数
C) main()函数必须放在其他函数之前
D) 所有被调用的函数一定要在调用之前进行定义
10.用数组名作为函数调用时的实参时,传递给形参的是 A 。
A)数组首地址 B)数组第一个元素的值
C)数组所有元素的值 D)数组元素的个数
*16. 下列说法中正确的是:( A )
A. 局部变量在一定范围内有效,且可与该范围外的变量同名。
B. 假如一个源文献中,全局变量与局部变量同名,则在局部变量范围内,局部变量不起作用。
C. 局部变量缺省情况下都是静态变量。
D. 函数体内的局部静态变量,在函数体外也有效。
17. 在C语言中,表示静态存储类别的核心字是: ( C )
A) auto B) register C) static D) extern
18.未指定存储类别的变量,其隐含的存储类别为( A )。
A)auto B)static C)extern D)register
八.指针
1. 语句int *p;阐明了 C 。
A)p是指向一维数组的指针
B)p是指向函数的指针,该函数返回一int型数据
C)p是指向int型数据的指针
D)p是函数名,该函数返回一指向int型数据的指针
2. 变量的指针,其含义是指该变量的:( B )
A. 值 B. 地址 C. 名 D.一个标志
3.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值体现式是( A )
A) pb=&x B) pb=x C) *pb=&x D) *pb=*x
4、已知:int a, *p=&a; 则下列函数调用中错误的是( D )。
A、scanf(“%d”,&a); B、scanf(“%d”,p);
C、printf(“%d”,a); D、printf(“%d”,p);
5.对于同类型的指针变量,不也许进行的运算是( C )。
A.- B.= C.+ D.==
6. 对于基类型相同的两个指针变量之间,不能进行的运算是 C
A) < B) = C) + D) -
7.下列不正确的定义是( A )。
A. int *p=&i,i; B.int *p,i;
C.int i,*p=&i; D.int i,*p;
8. 若有阐明:int n=2,*p=&n,*q=p,则如下非法的赋值语句是: ( D )
A)p=q B)*p=*q C)n=*q D)p=n
9. int *p,a=10,b=1; p=&a; a=*p+b;
执行该程序段后,a的值为 C
A) 编译犯错 B) 10 C) 11 D) 12
10.有语句:int a[10],;则 B 是对指针变量p的正确定义和初始化。
A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;
11.若有阐明语句“int a[5],*p=a;”,则对数组元素的正确引用是( C )。
A.a[p] B.p[a] C.*(p+2) D.p+2
12. 若指针变量p指向整型数组a[10]的首地址, 即p=a ; 则下列数组元素a[i](0<i<10)的表示措施中正确的是:( C )
A. p+i B.&( a+i) C. *(a+i) D. *(p+i*2)
13. 有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;
则数值为9的体现式是 B
A) *P+9 B) *(P+8) C) *P+=9 D) P+8
16. 若有如下阐明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为4的体现式是( C )
A) *p+4 B) *(p+4) C) *(p+3) D) p+3
19.下列函数的功效是 A 。
void fun(int *p1,int *p2)
{ int p;
p=*p1;*p1=*p2;*p2=p;
}
A) 互换*p1和*p2的值 B) 语法正确,但无法互换*p1和*p2的值
C) 互换*p1和*p2的地址 D)有语法错误
九、字符串
1. 在C语言中,以 D 作为字符串结束标志
A)’\n’ B)’ ’ C) ’0’ D)’\0’
2.下列数据中属于“字符串常量”的是( A )。
A.“a” B.{ABC} C.‘abc\0’ D.‘a’
3.字符串 “ABCD”在内存占用的字节数是( D )。
A.4 B.6 C.1 D.5
4. 下面不正确的字符串常量是:( A )
A. ‘PROGRAM’ B “12’12” C “0” D “ ”
5.设有数组定义: char array [ ]="abcd"; 则数组array所占的空间为 B
A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节
7.已知char x[]="hello", y[]={'h','e','a','b','e'};, 则有关两个数组长度的正确描述是 B .
A)相同 B)x不小于y C)x小于y D)以上答案都不对
8.给出如下定义:
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的论述为 C
A) 数组x和数组y等价 B) 数组x和数组y的长度相同
C) 数组x的长度不小于数组y的长度 D) 数组x的长度小于数组y的长度
9、若有如下语句,则正确的描述是( D )。
static char x[ ]=”12345” ;
static char y[ ]={‘1’,‘2’,‘3’,‘4’, 5’,’\0’} ;
A、x数组长度不小于y数组长度 B、x数组和y数组不相同
C、x数组长度小于y数组长度 D、x数组等价于y数组
10、已知:char s[20]= ”programming”, *ps=s; 则
展开阅读全文