问答题
给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵
1 2 3
4 5 6
7 8 9
程序执行结果为
0 0 1
0 0 4
0 0 7
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#define N 4
void fun(int(*t)[N], int m)
{int i, j;
/**********found**********/
for(i=0; i<N; ______)
{for(j=N-1-m; j>=0; j--)
/**********found**********/
t[i][j+______]=t[i][j];
/**********found**********/
for(j=0; j<______; j++)
t[i][j]=0;
}
}
main()
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j, m;
printf("/nThe original array:/n");
for(i=0; i<N; i++)
{for(j=0; j<N; j++)
printf("%2d", t[i][j]);
printf("/n");
}
printf("Input m(m<=%d): ", N); scanf("%d", &m);
fun(t, m);
printf("/nThe result is:/n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++)
printf("%2d", t[i][j]);
printf("/n");
}
}
【正确答案】
【答案解析】(1)i++ (2)m (3)m
答案考生文件夹
[解析] 函数fun的功能是将每行元素中的值均右移m个位置。
第一空:题目要求对每行元素中的值均右移m个位置,故第一空处循环变量每次增1,共循环N次,完成对N行的移位操作,因此第一空处应为“i++”。
第二空:循环“for(j=N-1-m; j>=0; j--)”是进行行元素中的值右移m个位置,即把t[i][j]元素放置在t[i][j+m]上,因此第二空应为“m”。
第三空:循环“for(j=0; j<______; j++)”是对空出来的位置补0,每行元素的前m位数据已经移动到后面,每行空处m个元素,因此第三空为“m”。
[考点] 二维数组、循环的嵌套。