下列给定程序中,函数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 /*******************************/ 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\n The result : \n\n "); for (i=M; i>0; i--){ k=a [M-1];for (j=M-1; j>0; j--) /**********************************/ a[j]=a[j+1];a[0]=k;for (m=0 ;m<M; m++ ) printf ("%d ", a [m]);printf ("\n ");} } main () {int a [M]; fun(a); printf("\n\n "); }
参考答案:错误:void fun (int a) 正确:int fim (int *a
解析:(2)错误:a[j]=a[j+1]; 正确:a[j]=a[j-1];其实,该题中题目信息已经告诉我们按“如下规律”,这就需要去认真分析矩阵的“规律”了,在第1列中,数列以4开始递减,直至1,在该数列中,行和列都是递减循环排列,所以题目在循环的时候有循环条件for(i=M;i>0;i--)和 for (j=M-1;j>0;j--),当然每次循环结束后在列中的赋值语句应该是a[j]=a[j-1];。