下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int in),该函数的功能是使数组右上半三角元素中的值乘以m。 例如,若m的值为2,a数组中的值为: 则返回主程序后a数组中的值应为: 注意:部分源程序在文

admin2017-02-24  29

问题 下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int in),该函数的功能是使数组右上半三角元素中的值乘以m。
例如,若m的值为2,a数组中的值为:

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

注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。   
试题程序:
1  #include<conio.h>
2  #include<stdio.h>
3  #include<stdlib.h>
4  #include<string.h>
5  #defitie N 5
6  void fun(int a[][N],int m)
7  {
8
9  }
10  main()
11  {
12    int a[N][N],m,i,j;
13    FILE*out;
14    printf("***The array***\n");
15    for(i=0;i<N;i++)
16       {  for(j=0;j<N; j++)
17          {a[j]=rand()%20;
18          printf("%4d",a[j]);
19          }
20      printf("\n");
21      }
22     m=rand()%4;
23     printf("m=%4d\n",m);
24     fun(a,m);
25     printf("THE RESULT\n");
26     for(i=0;i<N;i++)
27      { for(j=0;j<N;j++)
28         printf("%4 d",a[j]);
29         printf("\n");
30       }
31   /*********found*********/
32     out=fopen("out.dat","w");
33     for(i=0;i<N;i++)
34        for(j=0;j<N;j++)
35          a[j]=i*j;
36     fun(a,8);
37     for(i=0;i<N;i++)
38    {  for(j=0;j<N;j++)
39        fprintf(out,"% 4d",a[j]);
40       fprintf(out,"\n");
41     }
42     fclose(out);
43    /*********found*********/
44   }

选项

答案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*/ }

解析 本程序实现将矩阵中右上半三角元素中的值乘以m,使用循环语句遍历数组元素,第1个循环用于控制行坐标,第2个循环用于控制列下标。
转载请注明原文地址:https://kaotiyun.com/show/y0Dp777K
0

最新回复(0)