填空题 下列给定程序中,函数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 "); }
  • 1、
【正确答案】 1、错误: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];。