二级C语言分类模拟题503.docx
《二级C语言分类模拟题503.docx》由会员分享,可在线阅读,更多相关《二级C语言分类模拟题503.docx(30页珍藏版)》请在冰点文库上搜索。
二级C语言分类模拟题503
二级C语言分类模拟题503
一、选择题
1、以下关于return语句的叙述中正确的是______。
A.一个自定义函数中必须有一条return语句
B.一个自定义函数中可以根据不同情况设置多条return语句
C.定义成void类型的函数中可以有带返回值的return语句
D.没有return语句的自定义函数在执行结束时不能返回到调用处
2、以下叙述中错误的是______。
A.可以给指针变量赋一个整数作为地址值
B.函数可以返回地址值
C.改变函数形参的值,不会改变对应实参的值
D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
3、以下叙述中不正确的是______。
A.C程序的main函数可以有参数
B.C程序的main函数可以没有参数
C.C程序的main函数可以有两个参数,其中参数名必须为argc和argv
D.main函数的第一个参数argc必须是整型,第二个参数argv是一个指向字符型的指针数组的指针
4、有以下程序:
#include <stdio.h>
int funa(int a,intb){return a+b;}
int funb(int a,intb){return a-b;}
intsss(int(*t)(),intx,inty){ return((*t)(x,y)); }
main()
{ intx;
x=sss(funa,9,3); x+=sss(funb,8,3);printf("%d\n",x);
}
程序运行后的输出结果是______。
A.24
B.23
C.17
D.22
5、#include <stdio.h>
intadd(inta,intb){return(a+b); }
main()
{ intk,(*f)(),a=5,b=10;
f=add;
…
}
则以下函数调用语句中错误的是______。
A.k=f(a,b);
B.k=add(a,b);
C.k=(*f)(a,b);
D.k=*f(a,b);
6、有以下程序:
#include <stdio.h>
int *f(int*s,int*t)
{ if(*s<*t) s=t;
returns;
}
main()
{ inti=3,j=5,*p=&i,*q=&j,*r;
r=f(p,q);
printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);
}
程序的运行结果是______。
A.3,5,3,5,5
B.3,5,5,5,5
C.5,3,3,3,5
D.5,5,5,5,5
7、有以下程序:
#include <stdio.h>
voidf(intx[],intn)
{ if(n>1)
{ printf("%d,",x[n-1]);
f(x,n-1);
printf("%d,",x[n-1]);
}
else
printf("%d,",x[0]);
}
main()
{ intz[3]={1,2,3};
f(z,3);
printf("\n");
}
程序运行后的输出结果是______。
A.3,1,3,
B.3,2,1,2,3,
C.1,2,3,1,2,3,
D.1,2,3,2,1,
8、有以下程序:
#include <stdio.h>
voidf(intx[],intn)
{ if(n>1)
{ printf("%d,",x[0]);
f(&x[1],n-1);
printf("%d,",x[0]);
}
else
printf("%d,",x[0]);
}
main()
{ intz[3]={4,5,6};
f(z,3);
printf("\n");
}
程序运行后的输出结果是______。
A.6,5,4,6,5,4,
B.4,5,6,5,4,
C.4,5,6,4,5,6,
D.6,5,4,5,6,
9、以下叙述中正确的是______。
A.任何情况下都不能用函数名作为实参
B.函数既可以直接调用自己,也可以间接调用自己
C.函数的递归调用不需要额外开销,所以效率很高
D.简单递归不需要明确的结束递归的条件
10、有如下程序:
#include <stdio.h>
voidconvert(char ch)
{ if(ch<'X')convert(ch+1);
printf("%c",ch);
}
main()
{ convert('W'); printf("\n"); }
程序运行后的输出结果是______。
A.YZ
B.VW
C.XY
D.XW
11、有以下程序:
#include <stdio.h>
intf(intx);
main()
{ intn=1,m;
m=f(f(f(n)));printf("%d\n",m);
}
intf(intx)
{ returnx*2;}
程序运行后的输出结果是______。
A.8
B.2
C.4
D.1
12、设有如下函数定义:
#include <stdio.h>
int fun(int k)
{ if(k<1) return 0;
else if(k==1) return 1;
else return fun(k-1)+1;
}
若执行调用语句:
n=fun(3);,则函数fun总共被调用的次数是______。
A.2
B.3
C.4
D.5
13、有以下程序:
#include <stdio.h>
intf(intx)
{ inty;
if(x==0||x==1) return(3);
y=x*x-f(x-2);
returny;
}
main()
{ intz;
z=f(3);
printf("%d\n",z);
}
程序的运行结果是______。
A.0
B.9
C.6
D.8
14、有以下程序:
#include <stdio.h>
intfun(intn)
{ if(n==1) return 1;
elsereturn(n+fun(n-1));
}
main()
{
intx;
scanf("%d",&x);
x=fun(x);
printf("%d\n",x);
}
执行程序时,给变量x输入10,程序的输出结果是______。
A.55
B.54
C.65
D.45
15、若有以下程序:
#include <stdio.h>
voidf(intx)
{ if(x>=10)
{ printf("%d-",x%10); f(x/10); }
else
printf("%d",x);
}
main()
{ int z=123456;
f(z);
}
则程序的输出结果是______。
A.6-5-4-3-2-1-
B.6-5-4-3-2-1
C.1-2-3-4-5-6
D.1-2-3-4-5-6-
16、若有以下程序:
#include <stdio.h>
int f(int a[],int n)
{ if(n>1)
{ int t;
t=f(a,n-1);
return t>a[n-1]?
t:
a[n-1];
}
else
returna[0];
}
main()
{ int a[]={8,2,9,1,3,6,4,7,5};
printf("%d\n",f(a,9));
}
则程序的输出结果是______。
A.9
B.1
C.8
D.5
17、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是______。
A.auto和static
B.extern和register
C.auto和register
D.static和register
18、以下叙述中正确的是______。
A.函数的形式参数不属于局部变量
B.对于变量而言,“定义”和“声明”这两个词实际上是同一个意思
C.在复合语句中不能定义变量
D.全局变量的存储类别可以是静态类
19、有以下程序:
#include <stdio.h>
void fun2(chara,charB.
{ printf("%c%c",a,b); }
chara='A',b='B';
void fun1()
{ a='C'; b='D'; }
main()
{ fun1();
printf("%c%c",a,b);
fun2('E','F');
}
程序的运行结果是______。
A.ABEF
B.CDEF
C.ABCD
D.CDAB
20、有以下程序:
#include <stdio.h>
int d=1;
void fun(int p)
{
int d=5;
d+=p++;
printf("%d",d);
}
main()
{
int a=3;
fun(a);
d+=a++;
piintf("%d\n",d);
}
程序的输出结果是______。
A.8 4
B.9 6
C.9 4
D.8 5
21、若有以下程序:
#include <stdio.h>
int f(int m)
{ static int n=0;
int a=2;
n++; a++; return n+m+a;
}
main()
{ intk;
fbr(k=0;k<4;k++) printf("%d,",f(k));
}
则程序的输出结果是______。
A.3,5,7,9,
B.4,7,10,13,
C.4,5,6,7,
D.4,6,8,10,
22、有以下程序:
#include <stdio.h>
intfun(intn)
{ staticintt=1; inti=1;
for(;i<=n;i++) t*=i;
returnt;
}
main()
{ intt=1,i;
for(i=2;i<4;i++)
t+=fun(i);
printf("%d\n",t);
}
程序的运行结果是______。
A.8
B.11
C.15
D.4
23、#include <stdio.h>
fun(int x,int y)
{ staticintm=0,i=2;
i+=m+1; m=i+x+y; returnm;
}
main()
{ intj=1,m=1,k;
k=fun(j,m); printf("%d,",k);
k=fun(j,m); printf("%d\n",k);
}
执行后的输出结果是______。
A.5,11
B.5,5
C.11,11
D.11,5
24、在一个C源程序文件中所定义的全局变量,其作用域为______。
A.由具体定义位置和extern说明来决定范围
B.所在程序的全部范围
C.所在函数的全部范围
D.所在文件的全部范围
25、以下叙述中错误的是______。
A.未经赋值的全局变量值不确定
B.未经赋值的auto变量值不确定
C.未经赋值的register变量值不确定
D.未经赋值的静态局部变量值为0
26、有以下程序:
#include <stdio.h>
int a=2;
intf(intk)
{ staticint n;
intm;
m=n=0;
n++; a++; m++;k++;
return n+m+a+k;
}
main()
{ intk;
for(k=0;k<2;k++) printf("%d,",f(k));
printf("\n");
}
程序运行后的输出结果是______。
A.6,8,
B.6,9,
C.6,6,
D.6,7,
27、以下叙述中正确的是______。
A.局部变量不能被说明为static
B.只有全局变量才有自己的作用域,函数中的局部变量没有作用域
C.只有在函数内部定义的变量才是局部变量
D.只要是用户定义的标识符,都有一个有效的作用域
28、以下叙述中错误的是______。
A.函数中的形参属于局部变量
B.在函数内部定义的变量只能在本函数范围内使用
C.在函数外部定义的变量在所有函数中都有效
D.在不同的函数中可以使用相同名字的变量
29、当没有指定C语言中函数形参的存储类别时,函数形参的存储类别是______。
A.外部(extern)
B.静态(static)
C.寄存器(register)
D.自动(auto)
30、以下选项中叙述错误的是______。
A.C程序函数中定义的自动变量,系统不自动赋确定的初值
B.在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内
C.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值
D.C程序函数的形参不可以说明为static型变量
31、有以下程序:
#include <stdio.h>
intfun()
{ static int x=1;
x*=2;
return x;
}
main()
{ int i,s=1;
for(i=l;i<=3;i++) s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是______。
A.10
B.30
C.0
D.64
32、若有以下程序:
#include <stdio.h>
char *a="you";
char b[]="WelcomeyoutoChina!
";
main()
{ inti,j=0; char*p;
for(i=0;b[i]!
='\0';i++)
{ if(*a==b[i])
{ p=a;
for(j=i;*p!
='\0';j++)
{ if(*p!
=b[j]) break;
p++;
}
if(*p=='\0') break;
}
}
printf("%s",&b[i]);
}
则程序的输出结果是______。
A.China!
B.toChina!
C.meyoutoChina!
D.youtoChina!
33、有以下程序:
#include <stdio.h>
intf(intn);
main()
{ inta=3,s;
s=f(a);s=s+f(a);printf("%d\n",s);
}
intf(intn)
{ staticinta=1;
n+=a++;
returnn;
}
程序运行后的输出结果是______。
A.9
B.8
C.7
D.10
34、有以下程序:
#include <stdio.h>
intfun()
{ staticintx=1;
x+=1;
returnx;
}
main()
{ inti,s=1;
for(i=1;i<=5;i++)s+=fun();
printf("%d\n",s);
}
程序运行后的输出结果是______。
A.120
B.11
C.6
D.21
35、有以下程序:
#include <stdio.h>
fun(inta,intb)
{ int static m=0,i=2;
i=i+m+1;
m=i+a+b;
return m;
}
main()
{ int k=4,m=1,p;
p=fun(k,m);
printf("%d,",p);
p=fun(k,m);
printf("%d\n",p);
}
程序运行后的输出结果是______。
A.8,17
B.7,16
C.8,8
D.7.17
36、有如下程序:
#include <stdio.h>
intsum(intdata)
{
staticintinit=0;
returninit+=data;
}
main()
{
inti;
for(i=1;i<=5;i++)
printf("%d,",sum(i));printf("\n");
}
程序运行后的输出结果是______。
A.1,3,6,10,15,
B.1,2,3,4,5,
C.0,0,0,0,0,
D.1,1,1,1,1,
二、操作题
37、规定输入的字符串中只包含字母和*号。
编写函数fun,其功能是:
将字符串中的前导*号全部删除,中间和尾部的*号不删除。
例如,字符串中的内容为:
"*******A*BC*DEF*G****",删除后字符串中的内容应当是:
"A*BC*DEF*G***+"。
编写函数时,不得使用C语言提供的字符串函数。
注意:
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun(char*a)
{
}
main()
{ chars[81];
printf("Enterastring:
\n");gets(s);
fun(s);
printf("Thestringafterdeleted:
\n");puts(s);
}
38、请编写一个函数voidfun(inttt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列的最大元素,并依次放入pp所指的一维数组中。
二维数组中的数已在主函数中给出。
注意:
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 4
voidfun(int tt[M][N],int pp[N])
{
}
main()
{
intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}};
intp[N],i,j,k;
printf("Theoriginaldatais:
\n");
for(i=0;i<M;i++){
for(j=0;j<N;j++)
printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
print