C语言程序设计参考题型
说明: ★本题仅反映考试的题型,作为考前复习参考。
★要通过这些典型题目,掌握复习要点中所列内容。所给题目不可死记硬背,而是通过题目掌握其涉及要点和重要算法。
一、单项选择题
1. C程序的基本构成单位是 【 C 】
A)文件 B)命令 C)函数 D)语句
A)文件 B)命令 C)函数 D)语句
2. 下列叙述中错误的是 【 C 】
A)C程序中main( )函数的位置可以任意
B)C程序可以由多个程序文件组成, 而一个程序文件又可以由一个或多个函数组成
C)每个程序文件都有一个main( )函数
D)C程序总是从main( )开始执行,也是由它结束
A)C程序中main( )函数的位置可以任意
B)C程序可以由多个程序文件组成, 而一个程序文件又可以由一个或多个函数组成
C)每个程序文件都有一个main( )函数
D)C程序总是从main( )开始执行,也是由它结束
3. 将C源程序转换为目标程序的过程称为 【 B 】
A)编辑 B)编译 C)连接 D)运行
A)编辑 B)编译 C)连接 D)运行
4. C语言中最基本的数据类型包括 【 B 】
A)整型、实型、逻辑型 B)整型、实型、字符型
C)整型、逻辑型、字符型 D)整型、实型、字符串型
A)整型、实型、逻辑型 B)整型、实型、字符型
C)整型、逻辑型、字符型 D)整型、实型、字符串型
5. 以下不合法的用户标识符是 【C 】
A)j2_KEY B)Double C)4d D)_8_
A)j2_KEY B)Double C)4d D)_8_
6. C源程序中不能表示的数制是 【A 】
A)二进制 B)八进制 C)十进制 D)十六进制
A)二进制 B)八进制 C)十进制 D)十六进制
7. 以下合法的字符常量的是 【A 】
A)'\x13' B)'\081' C)'65' D)"\n "
A)'\x13' B)'\081' C)'65' D)"\n "
8. 以下选项中,能用作数据常量的是 【 D 】
A)o115 B)0118 C)1.5e1.5 D)115L
A)o115 B)0118 C)1.5e1.5 D)115L
9. C语言中,要求运算对象必须是整型数据的运算符是 【A 】
A)% B)/ C)\ D)&&
A)% B)/ C)\ D)&&
10. 表示数学关系“x≥y≥z”的C语言表达式是 【C 】
A)x>=y>=z B)x>=y || y>=z C)x>=y&&y>=z D)x≥y≥z
A)x>=y>=z B)x>=y || y>=z C)x>=y&&y>=z D)x≥y≥z
11. 若变量均已正确定义并赋值,以下合法的C语言赋值语句是 【A 】
A)x=y==5; B)x=n%2.5; C)x+n=j; D)x=5=4+1;
A)x=y==5; B)x=n%2.5; C)x+n=j; D)x=5=4+1;
12. 设有定义:int k=0; 以下选项的四个表达式中与其他三个表达式的值不相同的是 【 A 】
A)k++ B)k+=1 C)++k D)k+1
A)k++ B)k+=1 C)++k D)k+1
13. 若有代数式:
以下错误的C语言表达式是 【 C 】
A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3
以下错误的C语言表达式是 【 C 】
A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3
14. 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为 【C 】
A)int B)float C)double D)不确定
A)int B)float C)double D)不确定
15. 若p和x已经正确定义,x已赋值,并且p=&x,则下列关系表达式之值为1的是 【 B】
A)p==x B)*p==x C)&p==x D)*x==p
A)p==x B)*p==x C)&p==x D)*x==p
16. 当用户要求输入的字符串中含有空格时,应使用的输入函数是 【 C 】
A)scanf() B)getchar() C)gets() D)getc()
A)scanf() B)getchar() C)gets() D)getc()
17. 下列能输出字符数组str中字符串的语句是 【 B 】
A)printf("%c",str[0]); B)printf("%s",str);
C)printf("%s",str[]); D)putchar(str);
A)printf("%c",str[0]); B)printf("%s",str);
C)printf("%s",str[]); D)putchar(str);
18. 有输入语句:
scanf("%d,%d",&a,&b);
为使变量a、b分别为5和3,从键盘输入数据的正确形式为 【 B 】
A)5 3<回车> B)5,3<回车> C)a=5 b=3<回车> D)a=5,b=3<回车>
scanf("%d,%d",&a,&b);
为使变量a、b分别为5和3,从键盘输入数据的正确形式为 【 B 】
A)5 3<回车> B)5,3<回车> C)a=5 b=3<回车> D)a=5,b=3<回车>
19. 定义如下变量和数组:
int j;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是 【 C 】
for(j=2; j>=0; j--)
printf("%2d",x[j][2-j]);
A)1 5 9 B)1 4 7 C)7 5 3 D)3 6 9
int j;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是 【 C 】
for(j=2; j>=0; j--)
printf("%2d",x[j][2-j]);
A)1 5 9 B)1 4 7 C)7 5 3 D)3 6 9
20. 执行下面程序后,a的值是 【 B 】
#define SQR(x) x*x
void main( )
{ int a=10,k=2,m=1;
a=SQR(k+m);
printf("%d\n",a);
}
A)10 B)5 C)2 D)1
#define SQR(x) x*x
void main( )
{ int a=10,k=2,m=1;
a=SQR(k+m);
printf("%d\n",a);
}
A)10 B)5 C)2 D)1
21. 简单if语句的基本形式:if(表达式)语句 【D 】
其中“表达式”
A)必须是逻辑表达式 B)必须是关系表达式
C)必须是逻辑表达式或关系表达式 D)可以是任意合法的表达式
其中“表达式”
A)必须是逻辑表达式 B)必须是关系表达式
C)必须是逻辑表达式或关系表达式 D)可以是任意合法的表达式
22. 在嵌套使用if语句时,C语言规定else总是 【 C 】
A)和之前与其具有相同缩进位置的if配对 B)和之前与其最近的if配对
C)和之前与其最近的且不带else的if配对 D)和之前的第一个if配对
A)和之前与其具有相同缩进位置的if配对 B)和之前与其最近的if配对
C)和之前与其最近的且不带else的if配对 D)和之前的第一个if配对
23. 下列叙述中正确的是 【D 】
A)break语句只能用于switch语句
B)在switch语句中必须使用default
C)break语句必须与switch语句中的case配对使用
D)在switch语句中,不一定使用break语句
A)break语句只能用于switch语句
B)在switch语句中必须使用default
C)break语句必须与switch语句中的case配对使用
D)在switch语句中,不一定使用break语句
24. 有以下程序段:
x=-1;
x=-1;
do
x=x*x;
while(!x);
执行时,循环体执行的次数为 【B 】
A)0 B)1 C)2 D)不确定
x=x*x;
while(!x);
执行时,循环体执行的次数为 【B 】
A)0 B)1 C)2 D)不确定
25. 以下不正确的if语句形式是 【C 】
A)if(x>y&&x!=y); B)if(x==y) x+=y;
C)if(x!=y) scanf("%d",&x) else scanf("%d",&y); D)if(x<y) {x++;y++;}
A)if(x>y&&x!=y); B)if(x==y) x+=y;
C)if(x!=y) scanf("%d",&x) else scanf("%d",&y); D)if(x<y) {x++;y++;}
26. 以下程序的输出结果是 【 C 】
void main( )
{ int x=2,y=-1,z=2;
if(x<y)
if(y<0) z=0;
else z+=1;
void main( )
{ int x=2,y=-1,z=2;
if(x<y)
if(y<0) z=0;
else z+=1;
printf("%d\n",z);
}
A)0 B)1 C)2 D)3
}
A)0 B)1 C)2 D)3
27. 以下能正确计算1×2×3×…×10的程序段是 【 A 】
A) i=1,s=1; B) s=1;i=1;
do while(i<=10)
{s=s*i;i++;} s=s*(++i);
while(i<11);
C) for(i=1,s=0;i<=10;i++) D) for(i=1,s=1;;i++)
s=s*i; s=s*i;
A) i=1,s=1; B) s=1;i=1;
do while(i<=10)
{s=s*i;i++;} s=s*(++i);
while(i<11);
C) for(i=1,s=0;i<=10;i++) D) for(i=1,s=1;;i++)
s=s*i; s=s*i;
28. 若j为整型变量,则以下循环执行次数是 【 C 】
for(j=0;j==0;) printf("%d",j--);
A)无限次 B)0次 C)1次 D)2次
for(j=0;j==0;) printf("%d",j--);
A)无限次 B)0次 C)1次 D)2次
29. 若有说明:int a[10];则对a数组元素的正确引用是 【 C 】
A)a[3.5] B)a(8) C)a[6-5] D)a[10]
30. 若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0}, *p=x;则错误引用x 数组元素的是 【B 】
A)*p B)x[5] C)*(p+1) D)*x
A)*p B)x[5] C)*(p+1) D)*x
31. C中,一个char类型的数据在内存中占用的字节数是 【A 】
A)1 B)2 C)4 D)8
A)1 B)2 C)4 D)8
32. 设有程序段:
int k=5;
while (k<=0)
k--;
int k=5;
while (k<=0)
k--;
则下列描述中正确的是 【 C 】
A)while循环执行5次 B)循环是无限循环
C)循环语句一次也不执行 D)循环体语句执行一次
A)while循环执行5次 B)循环是无限循环
C)循环语句一次也不执行 D)循环体语句执行一次
33. 下面程序段的运行结果是 【 B 】
char c[5]={ 'a', 'b', '\0', 'c', '\0' };
printf(“%s”, c);
A)'a''b' B)ab C)Abc D)"abc"
char c[5]={ 'a', 'b', '\0', 'c', '\0' };
printf(“%s”, c);
A)'a''b' B)ab C)Abc D)"abc"
34. 以下不正确的字符串赋值语句是 【C 】
A)char *s; s="abcde"; B)char s[ ]="abcde";
C)char s[10]; s="abcde"; D)char *s="abcde";
A)char *s; s="abcde"; B)char s[ ]="abcde";
C)char s[10]; s="abcde"; D)char *s="abcde";
35. 设p1、p2是指向int型一维数组的指针变量,k为int型变量,以下错误的语句是 【 B 】
A)k=*p1+*p2; B)p2=k; C)p1=p2; D)k=p2-p1;
A)k=*p1+*p2; B)p2=k; C)p1=p2; D)k=p2-p1;
36. 下面程序的输出结果是 【 A 】
void main( )
{ char s[ ]= "ABCD";
char *p;
void main( )
{ char s[ ]= "ABCD";
char *p;
for (p=s;p<s+4;p++)
printf(“%s\n”, p);
}
A) ABCD B) A C) D D) ABCD
BCD B C ABC
CD C B AB
D D A A
printf(“%s\n”, p);
}
A) ABCD B) A C) D D) ABCD
BCD B C ABC
CD C B AB
D D A A
37. 以下关于C函数的定义和调用描述正确的是 【B 】
A)函数的定义可以嵌套,但函数的调用不可嵌套
B)函数的调用可以嵌套,但函数的定义不可嵌套
C)函数的定义和调用均可以嵌套
D)函数的定义和调用均不可嵌套
A)函数的定义可以嵌套,但函数的调用不可嵌套
B)函数的调用可以嵌套,但函数的定义不可嵌套
C)函数的定义和调用均可以嵌套
D)函数的定义和调用均不可嵌套
38. 以下关于变量的存储类型和作用域说法错误的是 【 C 】
A)函数内定义的变量默认存储类型为auto,函数调用结束时释放其值
A)函数内定义的变量默认存储类型为auto,函数调用结束时释放其值
B)静态局部变量的生存期虽然被延长,但作用范围依然只限于所在函数内有效
C)寄存器变量主要用于使用频度较高的变量,其资源依然使用计算机内存
D)外部变量可以跨文件使用,但静态外部变量不允许跨文件使用
C)寄存器变量主要用于使用频度较高的变量,其资源依然使用计算机内存
D)外部变量可以跨文件使用,但静态外部变量不允许跨文件使用
39. 以下关于变量的作用域叙述不正确的是 【D 】
A)在函数内部定义的变量是局部变量
B)函数中的形式参数是局部变量
C)局部变量的作用范围仅限于其所在函数或复合语句
D)全局变量的作用范围仅限于其所在的文件
A)在函数内部定义的变量是局部变量
B)函数中的形式参数是局部变量
C)局部变量的作用范围仅限于其所在函数或复合语句
D)全局变量的作用范围仅限于其所在的文件
40. 以下关于C函数参数说法不正确的是 【 B 】
A)实参可以是常量、变量和表达式 B)形参可以是常量、变量和表达式
C)实参和形参可以为任意数据类型 D)实参与对应的形参类型一致
A)实参可以是常量、变量和表达式 B)形参可以是常量、变量和表达式
C)实参和形参可以为任意数据类型 D)实参与对应的形参类型一致
41. 以下关于C函数返回值的叙述正确的是 【 D 】
A)被调函数中只有使用return语句才能返回主调函数
B)使用一个return语句可以返回多个函数值
A)被调函数中只有使用return语句才能返回主调函数
B)使用一个return语句可以返回多个函数值
C)函数返回值类型取决于return语句中的表达式类型
D)函数返回值类型取决于定义该函数时所指定的类型
D)函数返回值类型取决于定义该函数时所指定的类型
42. 以下数组定义中错误的是 【 B 】
A)int x[][3]={0}; B)int x[2][3]={{1,2},{3,4},{5,6}};switch case判断字符串
C)int x[][3]={{1,2,3},{4,5,6}}; D)int x[2][3]={1,2,3,4,5,6};
A)int x[][3]={0}; B)int x[2][3]={{1,2},{3,4},{5,6}};switch case判断字符串
C)int x[][3]={{1,2,3},{4,5,6}}; D)int x[2][3]={1,2,3,4,5,6};
43. 若有定义语句:char s[10]="1234567\0\0";则strlen(s)的值是 【 A】
A)7 B)8 C)9 D)10
A)7 B)8 C)9 D)10
44. 给定以下程序段:
int n=10;
while (n>6)
{ n--;
printf(“%3d”,n);
}
以上程序段输出结果是 【 D】
int n=10;
while (n>6)
{ n--;
printf(“%3d”,n);
}
以上程序段输出结果是 【 D】
A)10 9 8 B)9 8 7 C)10 9 8 7 D)9 8 7 6
45. 若i,j已定义为int型,则以下程序段中内循环总的执行次数是 【C 】
for (i=5; i>0; i--)
for (j=1; j<6; j++)
{……}
A)30 B)24 C)25 D)20
for (i=5; i>0; i--)
for (j=1; j<6; j++)
{……}
A)30 B)24 C)25 D)20
46. 若已定义:float *p, m=3.14159; 则使p指向m正确的赋值语句是 【B 】
A)p=m; B)p=&m; C)*p=m; D)*p=&m;
A)p=m; B)p=&m; C)*p=m; D)*p=&m;
47. 若已定义:char s[10]; 则下面表达式中不能作为s[1]地址的是 【A 】
A)s++ B)s+1 C)&s[0]+1 D)&s[1]
A)s++ B)s+1 C)&s[0]+1 D)&s[1]
48. 已知:int a=3, b=5, t; 要将a和b中的数值进行交换,错误的程序段是 【C 】
A)a=a+b; b=a-b; a=a-b; B)t=a; a=b; b=t;
C)t=a; b=a; a=t; D)t=b; b=a; a=t;
A)a=a+b; b=a-b; a=a-b; B)t=a; a=b; b=t;
C)t=a; b=a; a=t; D)t=b; b=a; a=t;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论