C语言上机题库百科园第4章南信大文档格式.docx
《C语言上机题库百科园第4章南信大文档格式.docx》由会员分享,可在线阅读,更多相关《C语言上机题库百科园第4章南信大文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
return0;
}
intf(intx)
{returnx*2;
A.8B.4C.1D.2
有以下程序,程序执行后变量w中的值是()
intfunl(doublea){returna*=a;
intfun2(doublex,doubley)
{doublea=0,b=0;
a=funl(x);
b=funl(y);
return(int)(a+b);
{doublew;
w=fun2(1.1,2.0);
……}
B.0.0C.5.0D.5
intfun()
{staticintx=1;
x*=2;
returnx;
{inti,s=1;
for(i=1;
i<
=3;
i++)s*=fun();
s);
}
A.10B.64C.0D.30
intf(intx,inty)
{return((y-x)*x);
{inta=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf("
d);
A.10B.8C.7D.9
voidfun(intp)
{intd=2;
p=d++;
printf(“%d”,p);
{inta=1;
fun(a);
printf(“%d\n”,a);
return0;
A.22B.21C.12D.32
有以下程序:
程序运行后的输出结果是()
#include<
intf()
{staticintx=1;
x+=1;
returnx;
for(i=1;
=5;
i++)s+=fun();
A.21B.6C.120D.11
若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是()
A.sqrt(fabs(pow(n,x)+exp(x,e)))
B.sqrt(fbs(pow(n,x)+pow(x,e)))
C.sqrt(fabs(pow(x,n)+exp(x)))
D.sqrt(abs(nx+ex))
以下关于return语句叙述中正确的是()
A.定义void类型的函数中可以有带返回值的return语句
B.没有return语句的自定义函数在执行结束时不能返回到调用处
C.一个自定义函数中必须有一条return语句
D.一个自定义函数中可以根据不同情况设置多条return语句
设有如下函数定义,若执行调用语句:
n=fun(3);
,则函数fun总共被调用的次数是()
intfun(intk)
{if(k<
1)return0;
elseif(k==1)return1;
elsereturnfun(k-1)+1;
A.2B.3C.5D.4
在一个C语言源程序文件中所定义的全局变量,其作用域为()
A.所在函数的全部范围
B.所在文件的全部范围
C.由具体定义位置和extern说明来决定范围
D.所在程序的全部范围
以下叙述正确的是()
A.C语言函数可以嵌套调用,例如:
fun(fun(x))
B.C语言程序是由过程和函数组成的
C.C语言函数不可以单独编译
D.C语言中除了main函数,其他函数不可以作为单独文件形式存在
以下程序的主函数中调用了在其前面定义的fun函数,则以下选项中错误的fun函数首部是()
{
doublea[15],k;
k=fun(a);
A.doublefun(double*a)
B.doublefun(doublea)
C.doublefun(doublea[])
D.doublefun(doublea[15])
以下说法不正确的是()
A.系统不允许用户重新定义标准库函数
B.标准库函数按分类在不同的头文件中声明
C.用户可以重新定义标准库函数
D.用户若需要调用标准库函数,调用前必须使用预编译命令将该函数所在文件包括到用户源文件中
下列叙述中正确的是()
A.C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束
B.main可作为用户标识符,用以命名任意一个函数作为主函数
C.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
D.C语言程序将从源程序中第一个函数开始执行
若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()
A.同名的实参和形参占同一存储单元
B.函数的形参和实参分别占用不同的存储单元
C.函数的实参和其对应的形参共占同一存储单元
D.形参只是形式上的存在,不占用具体存储单元
在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。
A.extern和register
B.auto和register
C.static和register
D.auto和static
设函数中有整形变量n,为保证其在未赋初值的情况下初值为0,应该选择的存储类别是()
A.register
B.auto
C.auto或register
D.static
以下正确的函数定义形式是:
()
A.doublefun(intx,inty){}
B.doublefun(intx,y);
{}
C.doublefun(intx;
inty){}
D.doublefun(intx,inty);
在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()
A.称为函数的循环调用
B.C语言中不允许这样的递归调用
C.称为函数的间接递归调用
D.称为函数的直接递归调用
程序设计
/*请编写函数fun,其功能是:
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
例如,输入17,则应输出46891012141516。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
conio.h>
stdlib.h>
intfun(intm,intxx[])
/***************Begin************/
/***************End************/
FILE*wf;
intm,n,zz[100];
\nPleaseenteranintegernumberbetween10and100:
"
);
scanf("
%d"
&
n);
m=fun(n,zz);
\n\nThereare%dnon-primenumberslessthan%d:
m,n);
for(n=0;
n<
m;
n++)
%4d\n"
zz[n]);
wf=fopen("
debug\\out.dat"
"
w"
m=fun(21,zz);
fprintf(wf,"
fclose(wf);
【参考代码】
inti,k,j=0;
for(i=2;
i++){
for(k=2;
k<
i;
k++)
if(i%k==0)break;
if(k<
i)xx[j++]=i;
returnj;
程序改错
/*下列给定程序中,函数fun的功能是:
将十进制正整数m转换成进制数,并按位输出。
例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
请改正函数fun中的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构。
*/
/**********ERROR**********/
voidfun(intm,intk);
{intaa[20],i;
for(i=0;
i++)
{
aa[i]=m/k;
m/=k;
for(;
i--)
aa[i]);
intb,n;
\nPleaseenteranumberandabase:
\n"
%d%d"
n,&
b);
fun(n,b);
\n"
【参考答案】
voidfun(intm,intk)
aa[i]=m%k;
aa[i-1]);
如当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。
符合此条件的累加值应为42,126,366,570,1010。
请改正程序中的错误,使它能得出正确的结果。
试题程序:
#defineN20
intfun(intn,inta[])
{inti,j,k,sum;
sum=0;
for(k=3,i=0;
n;
i++,k+=5)
{sum=sum+k;
if(sum%4=2)