一、第八章习题8 ( p222-p228), 8.1-8.3全做,8.4-8.12中选做四道,8.13-8.19中选做三道,要求给
出所选择题目的程序及执行结果。
8-1( 1 )、
#i nclude
void Fun c(i nt x)
{
x=20;
}
int mai n()
{
int x=10;
Fun c(x);
prin tf("%d",x);
return 0;
}
结果:
分析:调用函数时只发生值的传递,形参与实参之间再也没有关系,子函数一旦退出,内部变量就释 放空间
(2)
#i nclude
void Func(int b[])
{
int j;
for(j=0; j<4; j++)
{
b[j]=j;
}
}
int mai n()
{
static int a[] = {5,6,7,8},i;
Fun c(a);
for(i=0; i<4; i++)
{
prin tf("%d",a[i]);
return 0;
}结果:分析:数组传递时向函数传递的是数组的地址值,实参与形参共享空间,
}
结果:
分析:数组传递时向函数传递的是数组的地址值,实参与形参共享空间,
改就会造成主函数中的数组也被修改。
8.2( 1)
int PositiveNum(i nt a[],i nt n)
{
在被调函数中对数组进行修
int i, count=0;
for(i=0; i
{
if(a[i]>0) count++;
}
retur n count;
}
(2)
void Fib(long f[] ,int n)
{
int i;
f[0]=0;
f[1]=1;
for(i=2; i
{
f[i]= f[i-1]+f[i-2];
}
}
(3)
#i nclude
int mai n()
{
int a[10], n,max,mi n, maxPos,mi nPos;
for(n=0; n<10; n++)
{ scan f("%d", &a[n ]);
}
max=min=a[0];
maxPos=min Pos= 0;
for(n=0; n<10; n++)
{
if(a[n]>max)
{
max=a[ n]; maxPos =n;
}
else if(a[n]
{
min=a[n]; min Pos =n;
}
}
prin tf("max=%d,pos=%d\n",max,maxPos);
prin tf("mi n=%d,pos=%d\n",mi n,min Pos); return 0;
}
结果:
ETji
max=69,pos=4
min =1> pos =0
Pi*ess an^ heto continu
(4)
#i nclude
#defi ne ROW 2
#defi ne COL 3
[ROW][ROW])MultiplyMatrix(i nt a[ROW][COL],i nt b[COL][ROW],i nt c
[ROW][ROW])
{
int i,j,k;
for(i=0; i
{
for(j=0; j
{
c[i][j]= 0;
for(k=0; k
{
c[i][j]= c[i][j]+a[i][k]*b[k][j];
}
}
}
}
void Prin tMatrix(i nt a[ROW][ROW])
{
int i,j;
for(i=0; i
{
for(j=0; j
{
prin tf("%6d",a[i][j]);
}
printf("\n");
}
}
int mai n()
{
int a[ROW][COL],b[COL][ROW],c[ROW][ROW],i,j; printf("Input 2*3 matrix a:\n");
for(i=0; i
{
for(j=0; j
{
scanf("%d", &a[i][j]);
}
}
printf("Input 3*2 matrix b:\n");
for(i=0; i
{
for(j=0; j
scanf("%d", &b[i][j]);
}
MultiplyMatrix( a,b,c); prin tf("Results:\n ”); Prin tMatrix(c);
return 0;
}
结果:
Input 2*3 natrix a =
1 1
1 1
1 1
Input 3*2 matrix