请各位编程高手给我讲讲一下几道题目,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/18 17:35:47
4.下面程序的运行结果: 【6】 。
int f(int a[],int n)
{ if(n>l) return a[0]+f(&a[1],n-1);
else return a[0];

main()
{ int aa[3]={1,2,3},s;
s=f(&aa[0],3); printf("%d\n",s);

5.若有以下程序
main()
{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
int i,j,s=0;
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ if(a[i][j]<0)continue;
if(a[i][j]= =0)break;
s+=a[i][j];
}
}
printf("%d\n",s);
}
执行后输出的结果是 【7】 。
6.fun函数的功能是:首先对a所指的N行N列的矩阵找出各行中最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。
#define N 100
int fun(int (*a)[M])
{int row, col, max, min;
for(row=0;row<N;row++)
{ for(max=a[row][0], col=1; col<N; col++)
if 【8】 max=a[row][col];
if(row= =0) min=max;
else if 【9】 min=max;

第一题:
f(&aa[0],3)
1.因为3>1,所以 return a[0]+f(&a[1]),2) 其中a[0]=aa[0]=1,a[1]=aa[1]=2
f(&a[1],2)
2.因为2>1,所以 return a[0]+f(&a[1],1) 其中a[0]=aa[1]=2,a[1]=aa[2]=3
f(&a[1],1)
3.因为1==1,所以 return a[0] 其中a[0]=aa[2]=3

所以2中的a[0]+f(&a[1],1)=aa[1]+aa[2]=2+3=5
所以1中的a[0]+f(&a[1],2)=aa[0]+5=1+5=6

所以最后输出s=6

第二题,每次a[i][j]<0时continue,就是当该数为负数时跳过该数据。
每次a[i][j]==0时break,就是当该数据为0时跳过该行数据。
所以可以得到s=a[0][1]+a[0][1]+a[2][1]+a[3][1]=1+2+23+32=58
所以最后输出s=58

第三题,
【8】:if(max<a[row][col]) max=a[row][col];
【9】:else if(min>max) min=max;