第八章 函数
【题8.1-8.30】 BBADA DBCBC BDBD(BC) B(CA)CAB A(AB)ADD CADDA
【题8.31】 程序中的main()函数
【题8.32】 【1】函数说明部分 【2】函数体
【题8.33】 -125 = -5*5*5
【题8.34】 【1】void add(float a,float b) 【2】float add(float a,float b)
【题8.35】 i=7;j=6;x=7
i=2;j=7;x=5
【题8.36】 111
【题8.37】 max is 2
【题8.38】 【1】break 【2】break 【3】getchar()
【题8.39】 【1】(int)((value*10+5)/10) 【2】ponse==val
【题8.40】 打印出所有“水仙花数”
【题8.41】 【1】f(r)*f(n)<0 【2】n-m<0.001
【题8.42】 1010
【题8.43】 【1】f(x,x-y,x-z)+f(y,y-z,y-x)+f(z,z-x,z-y)
【2】sin(a)/((sin(b)*sin(c))
【题8.44】 【1】j=1 【2】y>=1 【3】--y或y—
【题8.45】 【1】2*i+1 【2】a(i) 【3】a(i)
【题8.46】 【1】y>x&&y>z 【2】j%x1==0&&j%x2==0&&j%x3==0
【题8.47】 【1】> 【2】b!=0
【题8.48】 (1)x=2 y=3 z=0
(2)x=4 y=9 z=5
(3)x=2 y=3 z=0
【题8.49】 【1】n=1,s=0.0,t=1.0 【2】2.0*s
【题8.50】 【1】把factorial函数中的语句 while(n>1||n<170)
result *= (double)--n;
【2】改为 while(n>1&&n<170)
result *= (double)n--;
【题8.51】 打印5阶幻方:
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
【题8.52】 计算整数num的各位数字之积
【题8.53】 FACT(5):120
FACT(1):1
FACT(-1):Error!
【题8.54】 【1】age(n-1)+2 【2】age(5)
【题8.55】 【1】计算斐波拉契级数第7项的值 【2】k=13
【题8.56】 15
【题8.57】 【1】(x0+a/x0)/2.0 【2】a,x1
【题8.58】 5 10 9
【题8.59】 sum=6
【题8.60】 【1】 0 1 2 3
-1 0 1 2
-2 -1 0 1
-3 -2 -1 0
【2】 0 -1 -2 -3
1 0 -1 -2
2 1 0 -1
3 2 1 0
【题8.61】 【1】a[i]==m 【2】a,m 【3】no>=0
【题8.62】 【1】s[i]=k 【2】sum=0
【题8.63】 【1】-7 3 5 7 10 【2】冒泡法排序
【题8.64】 【1】-1 3 6 8 9 【2】选择法排序
【题8.65】 【1】p=p+1 【2】a[i]=a[i+1]
【题8.66】 1 13 5 7
2 4 26 8
10 1 3 12
the value is 31
【题8.67】 【1】a[0]=1 a[1]=2
【2】单向值传递,不能返回交换后的值
【题8.68】 【1】a[0]=2 a[1]=1
【2】因实参是地址,已对指定地址中的内容进行了交换
【题8.69】 【1】i<10 【2】array[i] 【3】average(score)
【题8.70】 【1】i=3 【2】j<=i-1 【3】a[i-1][j-1]
【题8.71】 【1】for(j=0;j<n-1;j++)
【2】printf(“%4d”,(*(aa+i))[j]);
【题8.72】 first:14,4,12
second:26,4,12
third:26,3,6
【题8.73】 (2)1
(3)5,6
(1)4,6
【题8.74】 10,20,40,40
【题8.75】 i=5
i=2
i=2
i=0
i=2
【题8.76】 A+B=9
【题8.77】 8
【题8.78】 125
【题8.79】 x=1
y=1
x=1
y=2
x=1
y=3
【题8.80】 123
【题8.81】 MAIN:x=5 y=1 n=1
FANC:x=6 y=21 n=11
MAIN:x=5 y=1 n=11
FANC:x=8 y=31 n=21
【题8.82】 输出1至5的阶乘
【题8.83】 fun(int x,int y)
{
int z;
z = fabs(x-y);
return(z);
}
【题8.84】 isprime(int a)
{
int i;
for (i=2; i<sqrt((double)a); i++)
if (a % i == 0)
return 0;
return 1;
}
【题8.85】 sum(int n)
{
int i,k = 0;
for (i=0; i<=n; i++)
k += i;
return k;
}
【题8.86】 double mypow(double x,int y)
{
int i;
double p;
p = 1.0;
for (i=1; i<=y; ++i)
p = p * x;
return p;
}
【题8.87】 float f(float x0)
{
float x1;
x1 = (cos(x0) – x0) / (sin(x0) + 1);
x1 = x1 + x0;
return x1;
}
【题8.88】 double add(double x,double y)
{
return x + y;
}
【题8.89】 float root(float x1,float x2)
{
int i;
float x,y,y1;
y1 = f(x1);
do
{
x = xpoint(x1,x2);
y = f(x);
if (y * y1 > 0)
{
y1 = y;
x1 = x;
}
else
x2 = x;
}
while (fabs(y) >= 0.0001);
return(x);
}
【题8.90】 float p(int n,int x)
{
float t,t1,t2;
if (n == 0)
return(1);
else if(n == 1)
return(x);
else
{
t1 = (2 * n – 1) * x * p((n–1),x);
t2 = (n – 1) * p((n-2),x);
t = (t1 – t2) / n;
return(t);
}
}
【题8.91】 float f2(int n)
{
if (n == 1)
return 1;
else
return (f2(n-1) * n);
}
float f1(int x,int n)
{
int i;
float j = 1;
for (i=1; i<=n; i++)
j = j * x;
return j;
}
【题8.92】 max(int arr[][4])
{
int i,j,max;
max = arr[0][0];
for (i=0; i<2; i++)
for (j=0; j<4; j++)
if (arr[i][j] > max)
max = arr[i][j];
return(max);
}
【题8.93】 f(int a[],int c[],int n)
{
int i;
for (i=0; i<n; i++)
c[a[i]]++;
}
【题8.1-8.30】 BBADA DBCBC BDBD(BC) B(CA)CAB A(AB)ADD CADDA
【题8.31】 程序中的main()函数
【题8.32】 【1】函数说明部分 【2】函数体
【题8.33】 -125 = -5*5*5
【题8.34】 【1】void add(float a,float b) 【2】float add(float a,float b)
【题8.35】 i=7;j=6;x=7
i=2;j=7;x=5
【题8.36】 111
【题8.37】 max is 2
【题8.38】 【1】break 【2】break 【3】getchar()
【题8.39】 【1】(int)((value*10+5)/10) 【2】ponse==val
【题8.40】 打印出所有“水仙花数”
【题8.41】 【1】f(r)*f(n)<0 【2】n-m<0.001
【题8.42】 1010
【题8.43】 【1】f(x,x-y,x-z)+f(y,y-z,y-x)+f(z,z-x,z-y)
【2】sin(a)/((sin(b)*sin(c))
【题8.44】 【1】j=1 【2】y>=1 【3】--y或y—
【题8.45】 【1】2*i+1 【2】a(i) 【3】a(i)
【题8.46】 【1】y>x&&y>z 【2】j%x1==0&&j%x2==0&&j%x3==0
【题8.47】 【1】> 【2】b!=0
【题8.48】 (1)x=2 y=3 z=0
(2)x=4 y=9 z=5
(3)x=2 y=3 z=0
【题8.49】 【1】n=1,s=0.0,t=1.0 【2】2.0*s
【题8.50】 【1】把factorial函数中的语句 while(n>1||n<170)
result *= (double)--n;
【2】改为 while(n>1&&n<170)
result *= (double)n--;
【题8.51】 打印5阶幻方:
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
【题8.52】 计算整数num的各位数字之积
【题8.53】 FACT(5):120
FACT(1):1
FACT(-1):Error!
【题8.54】 【1】age(n-1)+2 【2】age(5)
【题8.55】 【1】计算斐波拉契级数第7项的值 【2】k=13
【题8.56】 15
【题8.57】 【1】(x0+a/x0)/2.0 【2】a,x1
【题8.58】 5 10 9
【题8.59】 sum=6
【题8.60】 【1】 0 1 2 3
-1 0 1 2
-2 -1 0 1
-3 -2 -1 0
【2】 0 -1 -2 -3
1 0 -1 -2
2 1 0 -1
3 2 1 0
【题8.61】 【1】a[i]==m 【2】a,m 【3】no>=0
【题8.62】 【1】s[i]=k 【2】sum=0
【题8.63】 【1】-7 3 5 7 10 【2】冒泡法排序
【题8.64】 【1】-1 3 6 8 9 【2】选择法排序
【题8.65】 【1】p=p+1 【2】a[i]=a[i+1]
【题8.66】 1 13 5 7
2 4 26 8
10 1 3 12
the value is 31
【题8.67】 【1】a[0]=1 a[1]=2
【2】单向值传递,不能返回交换后的值
【题8.68】 【1】a[0]=2 a[1]=1
【2】因实参是地址,已对指定地址中的内容进行了交换
【题8.69】 【1】i<10 【2】array[i] 【3】average(score)
【题8.70】 【1】i=3 【2】j<=i-1 【3】a[i-1][j-1]
【题8.71】 【1】for(j=0;j<n-1;j++)
【2】printf(“%4d”,(*(aa+i))[j]);
【题8.72】 first:14,4,12
second:26,4,12
third:26,3,6
【题8.73】 (2)1
(3)5,6
(1)4,6
【题8.74】 10,20,40,40
【题8.75】 i=5
i=2
i=2
i=0
i=2
【题8.76】 A+B=9
【题8.77】 8
【题8.78】 125
【题8.79】 x=1
y=1
x=1
y=2
x=1
y=3
【题8.80】 123
【题8.81】 MAIN:x=5 y=1 n=1
FANC:x=6 y=21 n=11
MAIN:x=5 y=1 n=11
FANC:x=8 y=31 n=21
【题8.82】 输出1至5的阶乘
【题8.83】 fun(int x,int y)
{
int z;
z = fabs(x-y);
return(z);
}
【题8.84】 isprime(int a)
{
int i;
for (i=2; i<sqrt((double)a); i++)
if (a % i == 0)
return 0;
return 1;
}
【题8.85】 sum(int n)
{
int i,k = 0;
for (i=0; i<=n; i++)
k += i;
return k;
}
【题8.86】 double mypow(double x,int y)
{
int i;
double p;
p = 1.0;
for (i=1; i<=y; ++i)
p = p * x;
return p;
}
【题8.87】 float f(float x0)
{
float x1;
x1 = (cos(x0) – x0) / (sin(x0) + 1);
x1 = x1 + x0;
return x1;
}
【题8.88】 double add(double x,double y)
{
return x + y;
}
【题8.89】 float root(float x1,float x2)
{
int i;
float x,y,y1;
y1 = f(x1);
do
{
x = xpoint(x1,x2);
y = f(x);
if (y * y1 > 0)
{
y1 = y;
x1 = x;
}
else
x2 = x;
}
while (fabs(y) >= 0.0001);
return(x);
}
【题8.90】 float p(int n,int x)
{
float t,t1,t2;
if (n == 0)
return(1);
else if(n == 1)
return(x);
else
{
t1 = (2 * n – 1) * x * p((n–1),x);
t2 = (n – 1) * p((n-2),x);
t = (t1 – t2) / n;
return(t);
}
}
【题8.91】 float f2(int n)
{
if (n == 1)
return 1;
else
return (f2(n-1) * n);
}
float f1(int x,int n)
{
int i;
float j = 1;
for (i=1; i<=n; i++)
j = j * x;
return j;
}
【题8.92】 max(int arr[][4])
{
int i,j,max;
max = arr[0][0];
for (i=0; i<2; i++)
for (j=0; j<4; j++)
if (arr[i][j] > max)
max = arr[i][j];
return(max);
}
【题8.93】 f(int a[],int c[],int n)
{
int i;
for (i=0; i<n; i++)
c[a[i]]++;
}