软件水平考试

void f(p1,p2) int *p1,*p2; { in

2016年01月05日来源:软件水平考试 所有评论

试题来源:2013年软考程序员考前模拟试题及答案解析(7)(8)
【分析解答题】void f(p1,p2)
int *p1,*p2;
{ int i,j;
*p2=0;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
*p2+=*(pl+i*3+j);
return;

main()
{ int a[3][3]={{1,2},{3,4},{5,6}};
int s;
f(a,&s);
printf("%d",s);


网考网解析:
【解析】本程序是由一个无返回值的函数f()和主函数组成的。先看主函数,定义了一个3行3列的二维数组a,并且给a赋了初值,初值如下: a[0][0]=1 a[0][1]=2 a[0][2]=0 a[1][0]=3 a[1][1]=4 a[1][2]=0 a[2][0]=5 a[2][1]=6 a[2][2]=0 接着调用无返回值的函数f(),然后输出变量s中的值,显然这个s中的值是在函数f()中获得的。 接下来分析函数f()。该函数有两个形参,第1个形参是指针变量p1,对应的实际参数是数组a的首地址,即调用该函数后,指针变量p1是指向二维数组a的首地址。第2个形参也是指针变量p2,对应的实参是变量s的地址,即函数调用后指针变量p2是指向变量s的。再来分析函数体。前面定义了两个变量i和j,从后面的循环语句中看出是二重循环的控制变量。接着,通过“*p... 查看试题解析出处>>

发布评论 查看全部评论

相关推荐