编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a[4][4]中,接着求出主对角线上元素之和,最后返回求和结果。

题目
编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a[4][4]中,接着求出主对角线上元素之和,最后返回求和结果。

相似考题
更多“编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a[4][4]中,接着求出主对角线上元素之和,最后返回求和结果。”相关问题
  • 第1题:

    请编一个函数void fun( int tt[M][N], int pp[N], tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <conio.h>

    include <stdio.h>

    define M 3

    define N 4

    void fun(int tt[M][N],int pp[N])

    {

    }

    main()

    {

    int t[M] [N]={{68,32,54,12},{14,24,88,

    58},{42, 22, 44, 56}};

    int p[N],i,j,k;

    clrscr();

    printf("The riginal data is:\n");

    for(i=0;i<M;i++)

    {

    for(j=0;j<N;j++)

    printf("%6d",t[i][j]);

    printf("\n");

    }

    fun(t,p);

    printf("\nThe result is:\n");

    for(k=0;k<N;k++)

    printf("%4d",p[k]);

    printf("\n");

    }


    正确答案:void fun(int tt[M][N]int pp[N]) { int iimax; for(j=0;jN;j++) { max=tt[0][j]; /*假设各列中的第一个元素最大*/ for(i=0;iM;i++) if(tt[i][j]>max) /*如果各列中的其他元素比最大值大则将这个更大的元素看作当前该列中最大元素*/ max=tt[i][j]; pp[j]=max; /*将各列的最大值依次放入pp数组中*/ } }
    void fun(int tt[M][N],int pp[N]) { int i,i,max; for(j=0;jN;j++) { max=tt[0][j]; /*假设各列中的第一个元素最大*/ for(i=0;iM;i++) if(tt[i][j]>max) /*如果各列中的其他元素比最大值大,则将这个更大的元素看作当前该列中最大元素*/ max=tt[i][j]; pp[j]=max; /*将各列的最大值依次放入pp数组中*/ } } 解析:本题中函数的功能是求出二维数组中每列的最大元素。首先,假设各列中的第一个元素最大,然后利用行标值的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,则把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素比较。

  • 第2题:

    将一个n阶三对角矩阵A的三条对角线上的元素按行压缩存放于一个一维数组B中, A[0][0]存放于B[0]中。对于任意给定数组元素A[i][j],它应是数组A中第______行的元素。


    正确答案:2i+j-3
    2i+j-3 解析:在三对角矩阵中,按行压缩存储,其转换公式为k=2i+j-3。

  • 第3题:

    补充程序Ccon061.C,使其从键盘输入一个4行4列的二维整型数组表示4×4阶矩阵,并计算第1列元素之和。如输出:28


    Inti,/**/j/**/;
    Sum=/**/0/**/;
    /**/sum+=a[i][0];/**/

  • 第4题:

    请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。 注意:部分源程序在文件PROGl.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:


    【考点分析】
    本题考查:求数组的最大值,需要运用循环语句,因为数组是二维数组,所以应使用二层for循环嵌套。使用for循环语句时需要注意循环变量的取值范围。
    【解题思路】
    此类求最大值或最小值的问题,我们可以采用逐个比较的方式,要求对数组中所有元素遍历一遍,并且从中找出数组最大值或最小值。首先定义变量max存放数组中的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素值大于max,则将该值赋予max,循环结束后max的值即为数组最大值,最后将该值返回。
    【解题宝典】
    该类题目考查较多,要掌握逐行比较的方法。对于m*n二维数组,如采用逐行查找方法,代码实现为:


  • 第5题:

    请编写一个函数intproc(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。 例如,输入如下整数: 876675896101999401980431451777 则输出结果为4,999。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。 试题程序:


    正确答案:

    【解析】要得到数组中的最大元素的下标,需要比较数组中的每一个元素。将最大的元素返回给主函数,最大元素的下标通过形参返回给主函数。

  • 第6题:

    下列给定程序中,函数proc()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之积。 请修改函数proc()中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:


    正确答案:
    (1)错误:for(i=0;j<3;j++)

  • 第7题:

    要求编写一个递归函数“int FF(int a[], int n)”,求出数组a中所有n个元素之积并返回。

  • 第8题:

    编一个程序,定义一个n行n列的二维整数数组,赋初值,然后求出对角线上的元素之和。


    正确答案: int n=5;
    int s=0;
    int[,]arr={{1,2,3,4,5},{11,12,13,14,15},{21,22,23,24,25},{31,32,33,34,35},{41,42,43,44,45}};
    inti,j;
    for(i=0;i {
    for(j=0;j {
    if(i==j||i+j==n+1)
    s=s+arr[i,j];
    }
    }
    Console.WriteLine("对角线上的元素之和{0}",s);

  • 第9题:

    在一个概率矩阵中,()的概率值之和需等于1。

    • A、每一个行向量
    • B、每一个列向量
    • C、两条对角线上元素
    • D、主对角线上元素

    正确答案:A

  • 第10题:

    单选题
    在一个概率矩阵中,()的概率值之和需等于1。
    A

    每一个行向量

    B

    每一个列向量

    C

    两条对角线上元素

    D

    主对角线上元素


    正确答案: D
    解析: 暂无解析

  • 第11题:

    问答题
    编一个程序,定义一个n行n列的二维整数数组,赋初值,然后求出对角线上的元素之和。

    正确答案: int n=5;
    int s=0;
    int[,]arr={{1,2,3,4,5},{11,12,13,14,15},{21,22,23,24,25},{31,32,33,34,35},{41,42,43,44,45}};
    inti,j;
    for(i=0;i {
    for(j=0;j {
    if(i==j,,i+j==n+1)
    s=s+arr[i,j];
    }
    }
    Console.WriteLine("对角线上的元素之和{0}",s);
    解析: 暂无解析

  • 第12题:

    单选题
    设有一个M*N的矩阵已经存放在一个M行N列的数组x中,且有以下程序段:sum=0;for(i=0;i
    A

    矩阵两条对角线元素之和

    B

    矩阵所有不靠边元素之和

    C

    矩阵所有元素之和

    D

    矩阵所有靠边元素之和


    正确答案: A
    解析:
    程序执行过程为:第一个for循环实现对第一列和第N列求和。第二个for循环在上一个for循环结果上实现对第一行和第M行从第二个元素到第N-1个元素的求和,总体来说,就是矩阵所有靠边元素之和,答案选择D选项。

  • 第13题:

    给定程序中,函数fun的功能是:判定形参a所指的NxN(规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1: 不是,函数返回值为O。“幻方”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。

    例如,以下3×3的矩阵就是一个“幻方”:

    4 9 2

    3 5 7

    8 1 6

    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

    注意:源程序存放在考生文件夹下的BLANKl.C中。

    不得增行或删行,也不得更改程序的结构!


    正确答案:(1)0 (2)11 (3)1
    (1)0 (2)11 (3)1 解析:本题中函数fun的功能是判定形参a所指的N×N的矩阵是否是”幻方”,“幻方"的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等,因此判断“幻方”对先求每行、每列、主对角及反对角元素和,然后判断是否都相等,都相等则是幻方,否则不是幻方。

  • 第14题:

    请编写一个函数fun(),它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fan的花括号中填入所编写的若干语句。

    试题程序:

    define M 4

    include <stdio.h>

    fun(int a[] [M])

    {

    }

    main()

    {

    int arr[2][M]={5, 8, 3, 45, 76, -4, 12, 82};

    printf("max=%d\n",fun(arr));

    }


    正确答案:fun (int a[] [M]) { int ijmax=a[0][0]; for(i=0;i2;i++) for(j=0;jM;j++) if(maxa[i][j]) max=a[i][j]; /*求出二维数组的最大值*/ return max; }
    fun (int a[] [M]) { int i,j,max=a[0][0]; for(i=0;i2;i++) for(j=0;jM;j++) if(maxa[i][j]) max=a[i][j]; /*求出二维数组的最大值*/ return max; } 解析:此类求最大值或最小值的C语言问题,我们可以采用逐个比较的方式。要求数组中的所有元素走动一遍,并从中找出最大、最小值,要注意一开始应使max存放数组中的第一个元素的值。可按逐行查找也可按逐列查找的方式,本题采用的是逐行查找的方式。即行下标在外层循环列下标在内层循环,因为在循环的嵌套中越在内层循环,循环变化就越快。

  • 第15题:

    请编写一个函数fun(),它的功能是:找出一维数组元素中最大的值和它所在的下标,最大值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。

    主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include<stdlib.h>

    include<stdio.h>

    void fun(int a[],int n, int *max,int *d)

    {

    }

    main()

    {

    int i, x[20], max, index, n=10;

    randomize();

    for(i=0; i<=n; i++)

    {

    x[i]=rand()%50;

    printf("%4d",x[i]);

    /*输出一个随机数组*/

    }

    printf("\n");

    fun(x,n,&max,&index);

    printf("Max=%5d,Index=%4d\n",max,index);

    }


    正确答案:void fun(int a[]int nint *maxint *d) { int i; *max=a[0]; *d=0; for(i=0;in;i++) /*将最大的元素放入指针max所指的单元最大元素的下标放入指针d所指的单元*/ if(*maxa[i]) {*max=a[i];*d=i;} }
    void fun(int a[],int n,int *max,int *d) { int i; *max=a[0]; *d=0; for(i=0;in;i++) /*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/ if(*maxa[i]) {*max=a[i];*d=i;} } 解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运算。

  • 第16题:

    程序定义了NxN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返给主函数中的s。

    例如:a数组中的值为:

    则返回主程序后s的值应为:3.375。

    注意:部分源程序存在文件PROGl.C文件中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是求出数组周边元素的平均值。其中周边元素是指第一行的元素的行下标为0,或者第n行的元素行下标为n-1,或者第一列元素的元素列下标为0,或者第n列的元素的列下标为n-1。

  • 第17题:

    请编写函数proc(),函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

    则函数值为59。

    注意:部分源程序给出如下。

    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

    试题程序:


    正确答案:


    【解析】要求二维数组周边元素之和,首先应该判断数组中的每一个元素是否是周边元素。找出所有的周边元素后求和,返回给主函数。周边元素的下标特点为行或列的下标为。或N—1。根据此特点,找出所有的周边元素然后求和。

  • 第18题:

    请编一个函数void proc(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。

    注意:部分源程序给出如下。

    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

    试题程序:


    正确答案:


    【解析】按照题目中要求,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。首先比较二维数组中每一行的元素,然后找出每一行中的最大元素,放入一维数组pp中,最后返回到主函数当中。

  • 第19题:

    编写一个递归函数“int FF(int a[], int n)”,求出数组a中所有n个元素之积并返回。

  • 第20题:

    使用split("-")方法对字符串"北京-东城区-米市大街8号-"进行分割的结果是()。

    • A、返回一个长度为4的数组
    • B、返回一个长度为3的数组
    • C、不能返回数组,因为最后一个"-"后面没有数值,代码不能执行
    • D、能够返回数组,数组中最后一个元素的数值为null

    正确答案:A

  • 第21题:

    关于array_keys()函数,下面说法错误的是()。

    • A、该函数用于获取数组中元素对应的键名
    • B、当匹配结果有多个时,只返回第一个匹配的键名
    • C、函数的第一个参数表示被查询的数组
    • D、如果只传一个数组,则返回数组中所有的键

    正确答案:B

  • 第22题:

    问答题
    请补充fun函数,该函数的功能是:计算N×N维矩阵元素的方差,结果由函数返回。维数在主函数中输入。
      例如:

    正确答案:

    ①int a[][N]
    ②s/(n*n)
    ③sqrt(f)
    解析:
    根据题目中的方差公式,先要计算矩阵元素的平均值,再求矩阵元素与平均值差的平方的平均值,最后调用库函数求方差。
      填空1:根据函数中各变量的使用情况及实参的类型,这里应该是对二维数组a的定义,因为二维数组做形参,可以省略第一维的长度,但不能省略第二维的长度,所以此处应填int a[][N]。
      填空2:这里求矩阵元素的平均值,注意元素的个数应该是n*n。
      填空3:此处应该调用库函数sqrt()求平方根。

  • 第23题:

    单选题
    使用split("-")方法对字符串"北京-东城区-米市大街8号-"进行分割的结果是()。
    A

    返回一个长度为4的数组

    B

    返回一个长度为3的数组

    C

    不能返回数组,因为最后一个-后面没有数值,代码不能执行

    D

    能够返回数组,数组中最后一个元素的数值为null


    正确答案: A
    解析: 暂无解析