习题五
一、选择题
1. 以下叙述中正确的是
A)C语言程序总是从第一个定义的函数开始执行。
B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行。
D)C语言程序中的main()函数必须放在程序的开始部分。 2. 已定义了以下函数
fff(float x) {
printf(“%d\\n”,x*x); }
该函数的类型是
A)与参数x的类型相同 B)void类型 C)int类型 D)无法确定 3. 有函数调用语句;func((exp1,exp2),(exp3,exp4,exp5));此函数调用语句含有的
实参个数是
A)1 B)2 C)4 D)5 4. 有以下程序:
#include“stdio.h” int func(int a,int b) { int c;
c=a+b; retuen c; }
main() {
int x=6,y=7,z=8,r; r=func((x--,y++,x+y),z--); printf(“%d\\n”,r) }
程序的输出结果是 A)11 B)20 C)21 D)31 5. 有以下程序:
#include“stdio.h” int f(int a,int b) main() {
int i=2,p; p=f(i,i++); printf(“%d\\n”,p) }
int f(int a,int b)
{ int c;
c=a;
if(a>b)c=1; else if(c==b)
c=0;
else c=-1; retuen c; }
程序的输出结果是 A)-1 B)0 6. 有以下程序:
#include“stdio.h”
int fun(int a,int b,int c) {
c=a*b; }
main() {
int c;
fun(2,3,c); printf(“%d\\n”,c) }
程序的输出结果是
A)0 B)1 7. 有以下程序:
#include“stdio.h” double f(int n) { int i;double s; s=1.0; for(i=1;i<=n;i++)
s+=1.0;
return s;
}
main() {
int i,m=3;double a=0.0 for(i=0;i 程序的输出结果是 A)5.500000 B)3.000000 C)1 C)6 C)4.000000 D)2 D)无定值 D)8.25 二、填空题 1. 以下程序的输出结果是_________ #include“stdio.h” unsigned fun6(unsigned int num) { unsigned int k=1; do { k*=num;num/=10;} while(num); return k; } main() { unsigned int n=26; printf(“%d\\n”,fun6(n)) } 2. 以下程序的输出结果是_________ #include“stdio.h” double sub(double x, double y, double z) { y-=1.0;z=z+x;return z;} main() { double a=2.5,b=9.0; printf(“%f\\n”,sub(b-a,a,a)) } 3. 以下程序的输出结果是_________ #include“stdio.h” int fun2(int a, int b) { int c; c=(a*b)%3;return c; } int fun1(int a, int b) { int c; a+=a;b+=b;c=fun2(a,b); return c*c; } main() { int x=11,y=19; printf(“%d\\n”,fun1(x,y)) } 4. 下面?函数的功能是,根据以下公式返回满足精度?要求的?的值。请填空。 ?1121231234?1???????????? 23353573579double pi(double eps) { } 5. 以下函数用于求x的y次方。请填空。 double fun(double x,int y) { double z=1.0; int i; for(i=1;i__[1]___;i++) { z=__[2]___; } return z; } 6. 以下程序的功能是计算sdouble s=0.0,t=1.0; int n; for(__[1]___;t>eps;n++) { s+=t;t=n*t/(2*n+1); } Return(2.0*__[2]___); ??k!。请填空。 k?0n#include“stdio.h” long f(int n) { int i;long s; s=____[1]_____; for(i=1;i<=n;i++)s=____[2]_____; return s; } main() { long s;int k,n; scanf(“%d”,&n); s=_____[3]______; for(k=1;k<=n;k++)s=s+____[4]_____; printf(“%ld\\n”,s) } 三、程序调试和编成题 1. 下面的fun函数用以判断n是否是素数,fun函数中有逻辑错,请调试改正。 int fun(int n) { int k,yes; for(k=2;k<=n/2;k++) if(n%k==0)yes=0; else yes=1; return yes; } 2. 编写函数,根据整数形参n的值,计算如下公式的值: 1?111111n?11 ??????????1?234567n