P078 右上半三角元素中的值乘以m ★

03-程序设计题 软件121, 唐鼎威 1802浏览

所属年份:2011.3;2011.9;
下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[ ][N],int m),该函数的功能是使数组右上半三角元素中的值乘以m。


例如,若m的值为2,a数组中的值为:

P078

则返回主程序后a数组中的值应为:

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define  N  5
void fun(int a[][N], int m)
{
  
}
main()
{ 
  int a[N][N],m, i, j;
  FILE *out;
  printf("*****The array*****\n");
  for(i=0;i<N;i++)
    { for(j=0;j<N;j++)
        {a[i][j]=rand()%20;
        printf("%4d", a[i][j]);
    }
  printf("\n");
  }
  m=rand()%4;
  printf("m=%4d\n",m);
  fun(a,m);
  printf("THE RESULT\n"); 
  for(i=0;i<N;i++)
     { for(j=0;j<N;j++) 
          printf("%4d",a[i][j]);
       printf("\n");
     }
  /******************************/
  out=fopen("out.dat","w");
  for(i=0;i<N;i++)
      for(j=0;j<N;j++)
          a[i][j]=i*j;
  fun(a,8);
  for(i=0;i<N;i++)
  { 	for(j=0;j<N;j++)
              fprintf(out,"%4d",a[i][j]);
        fprintf(out,"\n");
  }
  fclose(out);
  /******************************/
}

【解题思路】
本程序实现将矩阵中右上半三角元素中的值乘以m,使用循环语句遍历数组元素,第1个循环用于控制行坐标,第2个循环用于控制列下标。
【参考答案】

void fun(int a[][N], int m)
{
   int i,j;
   for(j=0;j<N;j++)
     for(i=0;i<=j;i++)
       a[i][j]=a[i][j]*m;    /*右上半三角元素中的值乘以m*/
}