问题 填空题

下列给定程序中,函数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];。

单项选择题
单项选择题