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

admin2018-03-28  39

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

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

    注意:部分源程序给出如下。
    请勿改动函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
    试题程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define N 5
void fun(int a[][N],int n)
{
}
main()
{
  int a[N][N],n,i,j;
  printf ("*****The array*****\n");
    for(i=0;i<N;i++)
    {
    for(j=0;j<N;j++)
    {
    a[j]=rand()%10;
    printf("%4d",a[j]);
    }
    printf("\n");
    }
    n=rand()%4;
    printf("n=%4 d\n",n);
    fun(a,n);
    printf("*****THE RESULT*****\n");
    for(i=0;i<N;i++)
    {
    for(j=0;j<N;j++)
    printf("%4d",a[j]);
    printf("\n");
    }
  }

选项

答案void 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; }

解析 本题的fun的功能是使数组的左下半三角元素中的值乘以n,因此本题需要使用双重for循环,for循环需要注意的是:
(1)循环初值,根据题意要求控制循环变量的取值范围;
(2)循环条件,确定循环结束的条件,即当不满足条件时,结束循环。
首先从数组中找出要被乘以n的那部分元素,这一过程其实就是找出将被挑出的元素在原数组中的分布规律的过程。通过观察得出,要被处理的元素下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得符合要求的元素,然后乘以n。
转载请注明原文地址:https://kaotiyun.com/show/nDxp777K
0

最新回复(0)