改错题
下列给定程序中,函数fun的功能是:给一维数组a输入任意4个整数,并按如下的规律输出。例如,输入1、2、3、4,程序运行后输出以下方阵:
4 1 2 3
3 4 1 2
2 3 4 1
1 2 3 4
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define M 4
/**********found**********/
void fun(int a)
{
int i,j,k,m;
printf('Enter 4 number:');
for(i=0;i<M;i++)
scanf('%d',&a[i]);
printf('\n\nThe result:\n\n');
for(i=M;=i>0;i--)
{
k=a[M-1];
for(j=M-1;j>0;j--)
/**********found**********/
a[j]=a[j+1];
a[0]=k;
for(m=0;m<M;m++)
printf('%d',a[m]);
printf('\n');
}
}
void main()
{
int a[M];
fun(a);
printf('\n\n');
}
【正确答案】(1)void fun(int *a) (2)a[j]=a[j-1];
【答案解析】(1)由函数的调用形式可知,函数fun的形参变量应为指针类型。 (2)每次循环都将最后一个元素取出,使前面的元素向后移动一位,因此为a[j]=a[j-1];。