C语言上机题库百科园第4章南信大.docx
- 文档编号:23968749
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:16
- 大小:24.85KB
C语言上机题库百科园第4章南信大.docx
《C语言上机题库百科园第4章南信大.docx》由会员分享,可在线阅读,更多相关《C语言上机题库百科园第4章南信大.docx(16页珍藏版)》请在冰豆网上搜索。
C语言上机题库百科园第4章南信大
第四章
单选
有以下程序,程序运行后的输出结果是()
#include
intfun(intx,inty)
{if(x!
=y)return((x+y)/2);
elsereturn(x);
}
intmain()
{inta=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
return0;
}
A.12B.6C.3D.8
有以下程序,程序运行的输出结果()
#include
intf(intx);
intmain()
{intn=1,m;
m=f(f(f(n)));printf(“%d\n”,m);
return0;
}
intf(intx)
{returnx*2;}
A.8B.4C.1D.2
有以下程序,程序执行后变量w中的值是()
#include
intfunl(doublea){returna*=a;}
intfun2(doublex,doubley)
{doublea=0,b=0;
a=funl(x);b=funl(y);return(int)(a+b);
}
intmain()
{doublew;w=fun2(1.1,2.0);……}
A.5.21B.0.0C.5.0D.5
有以下程序,程序运行后的输出结果是()
#include
intfun()
{staticintx=1;
x*=2;
returnx;
}
intmain()
{inti,s=1;
for(i=1;i<=3;i++)s*=fun();
printf("%d\n",s);
}
A.10B.64C.0D.30
有以下程序,程序运行后的输出结果是()
#include
intf(intx,inty)
{return((y-x)*x);}
intmain()
{inta=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf("%d\n",d);
}
A.10B.8C.7D.9
有以下程序,程序运行后的输出结果是()
#include
voidfun(intp)
{intd=2;p=d++;printf(“%d”,p);}
intmain()
{inta=1;
fun(a);printf(“%d\n”,a);
return0;
}
A.22B.21C.12D.32
有以下程序:
程序运行后的输出结果是()
#include
intf()
{staticintx=1;
x+=1;returnx;
}
intmain()
{inti,s=1;
for(i=1;i<=5;i++)s+=fun();
printf("%d\n",s);
return0;
}
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函数首部是()
#include
intmain()
{
doublea[15],k;
k=fun(a);
return0;
}
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的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
#include
intfun(intm,intxx[])
{
/***************Begin************/
/***************End************/
}
intmain()
{
FILE*wf;
intm,n,zz[100];
printf("\nPleaseenteranintegernumberbetween10and100:
");
scanf("%d",&n);
m=fun(n,zz);
printf("\n\nThereare%dnon-primenumberslessthan%d:
",m,n);
for(n=0;n printf("%4d\n",zz[n]); wf=fopen("debug\\out.dat","w"); m=fun(21,zz); for(n=0;n fprintf(wf,"%d\n",zz[n]); fclose(wf); return0; } 【参考代码】 inti,k,j=0; for(i=2;i for(k=2;k if(i%k==0)break; if(k } returnj; 程序改错 /*下列给定程序中,函数fun的功能是: 将十进制正整数m转换成 进制数,并按位输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请改正函数fun中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include #include /**********ERROR**********/ voidfun(intm,intk); {intaa[20],i; for(i=0;m;i++) { /**********ERROR**********/ aa[i]=m/k; m/=k; } for(;i;i--) /**********ERROR**********/ printf("%d",aa[i]); } intmain() { intb,n; printf("\nPleaseenteranumberandabase: \n"); scanf("%d%d",&n,&b); fun(n,b); printf("\n"); return0; } 【参考答案】 voidfun(intm,intk) 【参考答案】 aa[i]=m%k; 【参考答案】 printf("%d",aa[i-1]); 如当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。 符合此条件的累加值应为42,126,366,570,1010。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include #defineN20 intfun(intn,inta[]) /**********ERROR**********/ {inti,j,k,sum; sum=0; for(k=3,i=0;i {sum=sum+k; /**********ERROR**********/ if(sum%4=2) a[j++]=sum; } /**********ERROR**********/ returnj-1; } intmain() { inta[N],d,n,i; printf("\nEntern(4<=n<=50): "); scanf("%d",&n); d=fun(n,a); printf("\n\nTheresult: \n"); for(i=0;i printf("\n\n"); return0; } 【参考答案】 inti,j=0,k,sum; 【参考答案】 if(sum%4==2) 【参考答案】 returnj++; returnj; /*下列给定程序中,函数fun的功能是: 计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。 其中x和y不相等,z和y不等。 例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include #include #include /**********ERROR**********/ #defineFU(m,n)(m/n) floatfun(floata,floatb,floatc) {floatvalue; value=FU(a+b,a-b)+FU(c+b,c-b); /**********ERROR**********/ return(Value); } voidmain() {floatx,y,z,sum; printf("Inputxyz: : "); scanf("%f%f%f",&x,&y,&z); printf("x=%f,y=%f,z=%f\n",x,y,z); if(x==y||y==z) {printf("Dataerror! \n"); exit(0);} sum=fun(x,y,z); printf("Theresultis: %5.2f\n",sum); } 【参考答案】 #defineFU(m,n)(m)/(n) #defineFU(m,n)((m)/(n)) 【参考答案】 return(value); returnvalue; /*下列给定程序中,函数fun的功能是: 按如下递归公式求函数值。 例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include /**********ERROR**********/ intfun(n) { intc; /**********ERROR**********/ if(n=1) c=10; else c=fun(n-1)+2; return(c); } voidmain() { intn; printf("Entern: "); scanf("%d",&n); printf("Theresult: %d\n\n",fun(n)); } 【参考答案】 intfun(intn) 【参考答案】 if(n==1) if(1==n) /*下列给定程序中,函数fun的功能是: 用递归算法计算斐波拉契级数列中第n项的值。 从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入7,该项的斐波拉契级数值为13。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include longfun(intg) { /**********ERROR**********/ switch(g); {case0: return0; /**********ERROR**********/ case1;case2: return1; } return(fun(g-1)+fun(g-2)); } voidmain() { longfib;intn; printf("Inputn: "); scanf("%d",&n); printf("n=%d\n",n); fib=fun(n); printf("fib=%d\n\n",fib); } 【参考答案】 switch(g) 【参考答案】 case1: case2: return1; /*请补充函数fun,函数fun的功能是求n的阶乘。 注意: 部分源程序给出如下。 试题程序: */ #include longfun(intn) { /**********FILL**********/ if([1]) /**********FILL**********/ return(n*fun([2])); /**********FILL**********/ return[3]; } voidmain() { printf("10! =%ld\n",fun(10)); } 【参考答案】 if(n>1) if(1 【参考答案】 return(n*fun(n-1)); 【参考答案】 return1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 题库 百科 章南信大