【正确答案】
【答案解析】void fun(int(*s)[10],int*b,
int*n,int mm,int nn)
{
int i,j,k=0;
for(i=0;i<mm;i++)/*将二维数组s中的数据按行的顺序依次放到一维数组b中*/
for(j=0;j<nn;j++)
b[k++]=s[i][j];
*n=k;/*通过指针返回元素个数*/
}
[解析]
本题可以用两个循环来处理,由于是按行的顺序取出,所以第1个循环用于控制行下标,第2个循环用于控制列下标;若改成按列的顺序取出,则循环应改成:
for(i=0;i<nn;i++)
for(j=0;j<mm;j++)
b[k++]=s[j][i];
要注意s[j][i]的下标,不能用s[i][j]。
若按行取出则列标变化较快,若按列取出则行标变化较陕,即循环嵌套时,越在内层的循环,其循环变量变化就越快。