程序定义了N×N的二维数组,并在主函数中自动赋值。 请编写函数fun(int a[][N],int n),该函数的功能是使数组左下半三角元素中的值加上n。 例如:若n的值为3,a数组中的值为 a=2 5 4 1 6 9

admin2009-02-15  76

问题 程序定义了N×N的二维数组,并在主函数中自动赋值。
请编写函数fun(int a[][N],int n),该函数的功能是使数组左下半三角元素中的值加上n。
   例如:若n的值为3,a数组中的值为
   a=2  5  4
     1  6  9
     5  3  7
   则返回主程序后a数组中的值应为
   5  5  4
   4  9  9
   8  6  10
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数full的花括号中填入所编写的若干语句。
   试题程序:
       #include    <stdio.h>
       #include    <conio.h>
       #include    <stdlib.h>
       #define  N 5
       fun(int a[][N],int n)
       {

       }
       main()
       {
       int a[N][N],n,i,j;
      clrscr();
      printf("*****  The  array  *****\n");
      for(i=0;i<N;i++)
      /*产生—个随机5*5矩阵*/
      {
       for(j=0;j<N;j++)
       {
         a[j]=rand()%10;
         printf("%4d",a[j]);
       }
     printf("\n");
    }
   do
     n=rand()%10;
     /*产生一个小于5的随机数n*/
     while(n>=5);
     printf("n=%4d\n",n);
     fun(a,n);
     printf("*****THE  RESULT*****\n");
     for(i=0;i<N;i++)
      {
         for(j=0;j<N;i++)
            printf("%4d",a[j]);
      printf("\n");
     }
   }

选项

答案fun (int a[ ][N], int n) { int i,j; for(i=0; i<N; i++) for(j=0; j<i; j++) a[i][j]=a[i][j]+n /*使数组左下半三角元素中的值加上n*/ }

解析 首先从数组中找出要被加上n的那部分元素,找的过程其实就是找出将被挑出的那部分元素在原数组中的分布规律的过程。通过观察得出,要被处理的那部分元素的下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得合乎要求的元素,然后再加上n。
转载请注明原文地址:https://jikaoti.com/ti/bxkiFFFM
0

最新回复(0)