东北大学C语言期末考试题及答案(2)
(2009-12-15 18:44:31)
标签:
东北大学c语言考试 |
分类: 学习 |
1、若执行下面的程序时从键盘输入10,则输出是__B__ main( ) { int a;
scanf(“%d”,&a); if(a++>10)
printf(“%d\n”,++a); else printf("%d\n",a--); }
12
11
10
9
2、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--);
}while(x);
打印出321
打印出23
不打印任何结果
陷入死循环
3、执行与句:for(n=0;n++<4; ); 后,变量n的值是__C__。
3
4
5
不定
4、以下关于循环的描述中,错误的是__D___。
可以用for语句实现的循环一定可以用while语句实现
可以用while语句实现的循环一定可以用for语句实现
可以用do…while语句实现的循环一定可以用while语句实现
do…while语句与while语句的区别仅仅是关键字while的位置不同
5、下面的描述错误的是__C__。
函数可以有多个形式参数
函数可以没有返回值
函数内可以嵌套定义函数
函数可以被其他函数调用
6、函数返回值的类型是由__A__决定的。
定义函数时指定的返回类型
函数中return语句的表达式类型
主调函数的实际参数类型
主调函数的返回值类型
7、定义了一维int型数组a[10]后,下面错误的引用是__B__。
a[0]=1;
a[10]=2;
a[0]=5*2;
a[1]=a[2]*a[0];
8、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为__B__。
24
25
18
17
9、下面语句中,错误的是__D__。
int i; int *p; p=&i;
int i,*p; p=&a;
int i,*p=&a;
int i,*p; *p=i;
10、 已知int型二维数组a[3][4],数组元素a[1][2]的地址不能表达为__C__。
&a[1][2]
a[1]+2
*a[1]+2
*(a+1)+2
11、C语言中,5种基本数据类型的存储空间长度的排列顺序为___A___。
char
char=int
char
char=int=long int<=float
12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是 ___B___。
7
8
6
2
13、若有说明语句:char c='\72';则变量c ___A___。
包含1个字符
包含2个字符
包含3个字符
说明不合法,c的值不确定
14、若x,y均定义为整型,z定义为double型,以下不合法的scanf函数调用语句是___C___。
scanf("%d%lx,%le",&x,&y,&z);
scanf("%2d *
%d%lf",&x,&y,&z);
scanf("%x%*d%o",&x,&y,&z);
scanf("%x%o%6.2f",&x,&y,&z);
15、若输入字符串:abcde<回车>,则以下while循环体将执行___A___次。
while((ch=getchar())=='e') printf("*");
1次
死循环
0次
5次
16、执行下面的程序段后,k的值是___C___。 k=1;n=263;
do{k*=n%10;n/=10;}while(n);
3
63
36
2
17、下面程序段中循环的执行次数是___B___。 a=10;b=0;
do{b+=2;a-=2+b;}while(a>=0);
10
3
5
4
18、下面程序段的运行结果是__D____。 x=2;
do{printf("*");x--;}while(!x==0);
*
***
没有输出
**
19、下面程序段的运行结果是___B___。 i=1;s=1;a=0;
do{a=a+s*i;s=-s;i++;}while(i<=10);
printf("%d",a);
2
-2
3
0
20、有如下程序 void main() { int a=2,b=-1,c=2; if(a)
if(b<0) c=0; else c++; printf("%d\n",c); }
该程序的输出结果是___A___。
0
1
2
3
21、程序中对fun函数有如下说明 void fun(); 下面说明是错误的是___B___。
fun函数无返回值
fun函数的返回值可以是任意的数据类型
fun函数没有形式参数
void 可以省略
22、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 main() { printf("The
sum=%d\n",sum (10)); } int sum(int n){ int s=0,i;
for(i=0;i<=n;i++) _____B_____ }
请从备选答案中选择一答案,补全程序。
s=s+n; return s;
s=s+i; return s;
return s;
return s+=i;
23、 有以下程序 int f1(int x,int y){return x>y?x:y;}
int f2(int x,int y){return x>y?y:x;} main() { int
a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf()__A___
4,3,7
3,4,7
5,2,7
2,5,7
24、若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维的大小是___B___。
2
3
4
无确定值
25、判断字符串s1是否大于字符串s2,应当使用___D____。
if(s1>s2)
if(strcmp(s1,s2))
if(strcmp(s2,s1)>0)
if(strcmp(s1,s2)>0)
26、当运行以下程序时,从键盘输入:AhaMA Aha<CR>
<CR>表示回车,则下面程序的运行结果是___A____。
#include "stdio.h" main() { char s[80],c='a'; int i=0;
scanf("%s",s); while(s[i]!='\0') { if(s[i]==c)
ahAMa
AhAMa
AhAMa ahA
ahAMa ahA
27、以下程序执行后a的值为___C____。 main( ) { int a,m=2, k=1,
*p=&k; a=p!=&m;
printf("%d\n",a); }
-1
0
1
2
28、以下能正确读入字符串的程序段是____C___。
char *p;scanf("%s", p);
char str[10];scanf("%s",
&str);
char str[10], *p;p=str; scanf("%s", p);
char str[10], *p=str;scanf("%s", p[1]);
29、若有定义:int i, x[3][4];,则不能将x[1][1]的值赋给变量i的语句是___B___。
i=x[1][1]
i=*(*(x+1))
i=*(*(x+1)+1)
i=*(x[1]+1)
30、下面程序的运行结果是____A___。 # include
<stdio.h> # include
<string.h> fun(char *s) { char
t,*a,*z; a=s; z=s+strlen(s)-1; while(a++<z--) {
t=*a++; *a=*z--; *z=t;} } main() { char *p; p="a
abdddfg
afcdebg
gbedcfa
gfedcba
31、用来描述C程序中注释的是__C___
/ /
* *
32、对于"xy\n\102\\\'"字符串的长度是__B___
7
6
12
13
33、已知:int x=10;执行语句x-=x+x;后x的值是__A___
-10
10
-20
20
34、下列描述中,正确的是__A___
所有的输入/输出都是通过调用库函数处理的
所有的输入/输出都是通过输入/输出语句实现的
getchar和putchar可以省略#include
在输入/输出格式中的*表示跳过数据的含义
35、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___ if(x>y)
if(y>z)x=y; else z=y;
7
6
5
4
36、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--);
}while(x);
打印出321
打印出23
不打印任何结果
陷入死循环
37、以下关于switch语句和break语句的描述正确的是__D___
在switch语句中必须使用break语句
break语句只能用于switch语句体中
break语句只能用于循环语句中
在switch语句中可以使用break语句
38、与语句while(!x)等价的语句是__A___
while(x==0)
while(x!=0)
while(x!=1)
while(~x)
39、下面的描述错误的是__C___
40、 下面关于局部变量的描述中,错误的是__D___