niusouti.com

已知矩阵 A=[3 4 -1 1 -9 10;6 5 0 7 4 -16;1 -4 7 -1 6 -8;2 -4 5 -6 12 -8;-3 6 -7 8 -1 1;8 -4 9 1 3 0] 写出完成下列操作的命令: (1) 将矩阵A的第2-5行中第1,3,5列元素赋给矩阵B; (2) 删除矩阵A的第7号元素; (3) 将矩阵A的每个元素加上30; (4) 求矩阵A的大小和维数; (5) 将矩阵A的右下角3*2矩阵构成矩阵C; (6) 输出[-5,5]范围内的所有元素;

题目

已知矩阵 A=[3 4 -1 1 -9 10;6 5 0 7 4 -16;1 -4 7 -1 6 -8;2 -4 5 -6 12 -8;-3 6 -7 8 -1 1;8 -4 9 1 3 0] 写出完成下列操作的命令: (1) 将矩阵A的第2-5行中第1,3,5列元素赋给矩阵B; (2) 删除矩阵A的第7号元素; (3) 将矩阵A的每个元素加上30; (4) 求矩阵A的大小和维数; (5) 将矩阵A的右下角3*2矩阵构成矩阵C; (6) 输出[-5,5]范围内的所有元素;


相似考题
更多“已知矩阵 A=[3 4 -1 1 -9 10;6 5 0 7 4 -16;1 -4 7 -1 6 -8;2 -4 5 -6 12 -8;-3 6 -7 8 -1 1;8 -4 9 1 3 0] 写出完成下列操作的命令: (1) 将矩阵A的第2-5行中第1,3,5列元素赋给矩阵B; (2) 删除矩阵A的第7号元素; (3) 将矩阵A的每个元素加上30; (4) 求矩阵A的大小和维数; (5) 将矩阵A的右下角3*2矩阵构成矩阵C; (6) 输出[-5,5]范围内的所有元素;”相关问题
  • 第1题:

    如下是一个稀疏矩阵的三元组法存储表示和相关的叙述正确的是

    A.该稀疏矩阵有8列

    B.该稀疏矩阵有7列

    C.该稀疏矩阵有9个非0元素

    D.该稀疏矩阵的第3行第6列的值为0


    正确答案:B
    解析:该稀疏矩阵有7列;稀疏矩阵有7个非0元素;该稀疏矩阵的第3行第6列的值为1。掌握广义表的定义和存储方式,多维数组的存储方式。

  • 第2题:

    阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。

    【说明】

    将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。

    在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。

    例:序列{6,8,9,1,2,5,4,7,3}

    经重排后成为{3,4,5,2,1,6,8,9,7}

    【函数】

    include < stdio. h >

    include < conio. h >

    void jsValue( int a [10] [9] )

    { int i,j,k,n,temp;

    int b[9];

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

    { temp=a[i] [0];

    k=8;n=0;

    for(j=8;j=0;j--)

    { if(temp < a[i] [j]) (1)=a[i][j];

    if(temp >a[i] [j]) (2)=a[i][j];

    if(temp =a[i] [j]) (3)= temp;

    }

    for(j=0;j<9;j++) a[i][j] =b[j];

    }

    }

    void main( )

    int a[10] [9] = {{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},

    {8,2,1,9,3,5,4,6,7}, {3,5,1,2,9,8,6,7,4},

    {4,7,8,9,1,2,5,3,6}, {4,7,3,5,1,2,6,8,9},

    {9,1,3,5,8,6,2,4,7}, {2,6,1,9,8,3,5,7,4},

    {5,3,7,9,1,8,2,6,4}, {7,1,3,2,5,8,9,4,6}

    };

    int i,j;

    (4);

    for(i=0;i<10;i++) {

    for(j=0;j<9;j++) {

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

    if((5))printf(",");

    }

    printf(" \n" );

    }

    getch( );

    }


    正确答案:(1)b[k--] (2)b[n++] (3)b[n] (4)jsValue(a) (5)j=7
    (1)b[k--] (2)b[n++] (3)b[n] (4)jsValue(a) (5)j=7 解析:在主函数中先要调用函数jsValue()对数组a进行处理,所以(4)空应填入“jsValue(a)”。然后输出数组元素,同一行的元素之间用逗号分隔,所以(5)空应填入“j=7”。
    函数jsValue()是将数组按题目要求进行排序。通过观察发现处理后的数组中元素的顺序与原来的顺序相反,并且每一行中没有与第一个数相同的数,所以是从后往前处理,也就是将每组从最后往前倒序逐个问第一个数比较,比它大的就放到临时数组b中的最后,比它小的就放到临时数组b中的最前面,以次类推,所以(1)空应填入“b[k- -]”,(2)空应填入“b[n++],(3)空应填入“b[n]”。最后将b数组赋给a数组。

  • 第3题:

    当执行下面的语句定义一维数组a后,此数组的所有元素为 ( ) inta[10];

    A.a[1],a[2],a[3],a[4],a[5],a[6],a[8],a[9],a[10],a[10]

    B.a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]

    C.a[0],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10]

    D.a[1],a[2],a [3],a[4],a [5],a [9],a [7],a [8],a [9],a [10],a [11]


    正确答案:B

  • 第4题:

    阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。

    【说明】

    在一个矩阵中,如果其零元素的个数远远多于其非零元素的个数时,称这样的矩阵为稀疏矩阵。稀疏矩阵通常采用三元组数组表示。每个非零元素用一个三元组来表示,即非零元素的行号、列号和它的值。然后按某种顺序将全部非零元素的三元组存于一个数组中。例如,对于以下二维数组:

    int x[3][4]={{1,0,0,0},{0,5,0,0),{0,0,7,2}};

    可用以下数组a来表示:

    int a[][3]={{3,4,4},{0,0,1},{1,1,5),{2,2,7},{2,3,2}};

    其中三元数组a的第1行元素的值分别存储稀疏矩阵×的行数、列数和非零元素的个数。

    下面的流程图描述了稀疏矩阵转换的过程。

    【流程图】


    正确答案:(1)a[0][2]=W; (2)x[i][j]≠0; (3)a[k][2]=x[i][j]; (4)k++; (5)i++;
    (1)a[0][2]=W; (2)x[i][j]≠0; (3)a[k][2]=x[i][j]; (4)k++; (5)i++; 解析:本题考查程序流程图及数组的操作。
    根据题目的意思,本题的流程图是用来描述稀疏矩阵转换过程的。而三元数组d的第1行元素的值分别用来存储稀疏矩阵x的行数、列数和非零元素个数,在第(1)空位置处,前面已经分别存储了稀疏矩阵x的行数和列数,只差非零元素的个数没有存储进数组a。因此,此空应该填a[0][2]=W。
    在第(2)空的前面有两条判断语句,我们可以看出它们是为了保证取到的元素是稀疏矩阵中的元素,再往下我们应该判断此元素是否是0,因此,此空应该填x[i][j]≠0。
    根据程序流程图,如果第(2)空中的条件为真,即取到的元素不为0,那么我们应该将该元素存放到三元数组a中,第(3)空的前面两条语句已经分别用于存储了稀疏矩阵非0元素的行号和列号,那么接下来应该是保存其值。因此,此空的答案是 a[k][2]=x[i][j]。
    由题目中对三元数组a的描述可以知道,三元数组a的每一行只存储3个元素。再看流程图,第(4)空的前面三条语句都表示向三元数组a中存储一个元素。因此,如果再要往数组中添加元素,就需要存放到另外一行。因此,第(4)空应该是将数组的行号加1,即 k++。
    结合流程图中三个判断语句的结构和作用来分析,第(5)空应该是i++,它的作用是保证能取到稀疏矩阵中每一行的元素。

  • 第5题:

    有以下程序:

    A.1,2,3,4,5,6,7,8,9,0,

    B.0,9,8,7,6,5,1,2,3,4,

    C.0,9,8,7,6,5,4,3,2,1,

    D.1,2,3,4,9,8,7,6,5,0,


    正确答案:D
    fun()函数的功能是对数组a[]的元素从大到小进行排序。

  • 第6题:

    下列程序的功能是( )。 main() { static int s[3][3]={1,2,3,4,5,6,7,8,9,),m,n; for(m=0;m<3;m++) { for(n=0;n<=m;n++) printf("%d",s[m][n]);printf("\n'); } }

    A.输出3×3矩阵的下三角的元素

    B.输出3×3矩阵的上三角的元素

    C.输出3×3矩阵的对角线上的元素

    D.输出3×3矩阵的元素


    正确答案:A
    解析:本题使用了一个双重for循环,外循环变量m的变化范围是0~2,而内循环变量n的变化范围从0~m,所以执行循环体时(m,n)的值依次为(0,0),(1,0),(1,1),(2,0),(2,1),(2,2),故输出的是3×3矩阵的下三角元素。所以应该选择A。

  • 第7题:

    请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。

    例如,输入下面的矩阵: 其转置矩阵为:

    1 2 3 1 4 7

    4 5 6 2 5 8

    7 8 9 3 6 9

    程序输出:

    2 6 10

    6 10 14

    10 14 18

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

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


    正确答案:
    解析:该程序功能是实现B=A+Aˊ,即把矩阵A加上A的转置。其中,所谓矩阵的转置,是把行中的数据与列中的数据进行对调。解题过程中首先求得已给的矩阵的转置,然后在循环过程中对矩阵与该矩阵的转置对应元素求和。

  • 第8题:

    阅读下列说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。 【说明】 设有二维整数数组(矩阵)A[1:m,1:n],其每行元素从左到右是递增的,每列元素从上到下是递增的。以下流程图旨在该矩阵中需找与给定整数X相等的数。如果找不到则输出“false”;只要找到一个(可能有多个)就输出“True”以及该元素的下标i和j(注意数组元素的下标从1开始)。 例如,在如下矩阵中查找整数8,则输出伟:True,4,1 2 4 6 9 4 5 9 10 6 7 10 12 8 9 11 13 流程图中采用的算法如下:从矩阵的右上角元素开始,按照一定的路线逐个取元素与给定整数X进行比较(必要时向左走一步或向下走一步取下一个元素),直到找到相等的数或超出矩阵范围(找不到)。

    【流程图】【问题】该算法的时间复杂数是() 供选择答案:A.O(1) B.O(m+n) C.O(m*n) D,O(m²+n²)


    正确答案:(1)n
    (2)j-1→j
    (3)i+1→I
    (4)j
    (5)C

  • 第9题:

    以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)

    例如,矩阵为:

    3 0 0 3

    2 5 7 3

    1 0 4 2

    则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

    add(int m,int n,int arr[])

    { int i,j,sum=0;

    for(i=0;i

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

    sum=sum+ (7) ;

    for(j=0;j

    for(i=1; (8) ;i++)

    sum=sum+arr[i*n+j];

    return(sum);

    }


    正确答案:
    3.(7) arr[i*n+j](或者arr[i*10+j])

     (8) i<M-1(或者I<=M-2)

  • 第10题:

    设为3阶矩阵,将的第2列加到第1列得矩阵,再交换的第2行与第3行得单位矩阵,记,,则A=( )



    答案:D
    解析:

  • 第11题:

    将10阶的上三角矩阵(非0元素分布在矩阵左上部)按照行优先顺序压缩存储到一维数组A中,则原矩阵中第8行第2列的非0元素在一维数组A中位于第()个元素位置。


    正确答案:51

  • 第12题:

    填空题
    将10阶的下三角矩阵(非0元素分布在矩阵左下部)按照行优先顺序压缩存储到一维数组A中,则原矩阵中第4行第3列的非0元素在一维数组A中位于第()个元素位置。

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

  • 第13题:

    已知一个有向图的邻接矩阵表示,要删除所有从第j个结点发出的边,应()。

    A、将邻接矩阵的第j行删除

    B、将邻接矩阵的第j行元素全部置为0

    C、将邻接矩阵的第j列删除

    D、将邻接矩阵的第j列元素全部置为0


    参考答案:B

  • 第14题:

    有以下程序:程序的运行结果是( )。

    A.1,2,3,4,5,6,7,8,9,0,

    B.2,1,4,3,6,5,8,7,0,9,

    C.0,9,8,7,6,5,4,3,2,1,

    D.0,1,2,3,4,5,6,7,8,9,


    正确答案:A
    在c语言中函数参数的传递是”传值”的,即形参和实参是两个没有关系的变量,函数fun虽然看似交换了参数值,但是只交换了形参的值,其结果不会传递给实参,因此数组c没有变化。主函数中给数组c元素赋值l,2,…,9,0。第一个for循环语句中调用fun函数,该函数功能是交换变量的数值,注意循环变量i的增量。第二个for循环语句将数组c中元素的值进行输出。

  • 第15题:

    以下程序是求矩阵a、b的和,结果存入矩阵c中,请填空。 include main() {int a[4][4]={1,2,

    以下程序是求矩阵a、b的和,结果存入矩阵c中,请填空。 include<stdio.h> main() {int a[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}}; int b[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)}; int i,j,c[4][4]; for(i=0;i<4;i++) for(j=0;j<4;j++) c[i][j]=( ); for(i=0;i<4;i++) for(j=0;j<4;j++) printf("%d",c[i][j]); }


    正确答案:a[i][j]+b[i][j]
    a[i][j]+b[i][j] 解析:求两个矩阵的和只要将对应元素相加即可。

  • 第16题:

    有以下程序main() { int a[]={1,2,3,4,5,6,7,8,9,0},*p; for(p=a;p<a+10;p++) printf("%d,",*p);}程序运行后的输出结果是A.1,2,3,4,5,6,7,8,9,0, B.2,3,4,5,6,7,8,9,10,1, C.0,1,2,3,4,5,6,7,8,9, D.1,1,1,1,1,1,1,1,1,1,


    正确答案:A
    在本题中,程序首先定义了一个一维数组a,并赋了初值,数组a中元素的个数为10个,另外,程序定义了一个同类型的指针变量p。然后用一个for循环用指针变量p对数组进行操作。在循环开始前,将指针变量指向数组的开始位置,即指向数组的第一个元素。
    第一次循环时,指针变量p指向的是数组第一个元素,输出该元素应该为1;然后指针变量自加1,即将指针变量后移一位,使其指向数组的第二个元素,开始第二次循环,此时,指针变量指向数组第二个元素,输出该元素为2,然后指针变量自加1。同样,利用指针变量p可以输出数组中后面的元素,直到输出最后一个元素。因此,最后的输出结果是1,2,3,4,5,6,7,8,9,0,。

  • 第17题:

    有以下程序:

    程序运行后的输出结果是( )。

    A.1,2,3,4,5,6,7,8,9,0,

    B.2,1,4,3,6,5,8,7,0,9,

    C.0,9,8,7,6,5,4,3,2,1,

    D.0,1,2,3,4,5,6,7,8,9,


    正确答案:A
    函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化,所以数组c中的元素的值并没有变化,选择A。

  • 第18题:

    给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。

    例如,有下列矩阵:

    1 2 3 4 5

    1 2 3 4 5

    1 2 3 4 5

    若k为2,程序执行结果为

    3 4 5 1 2

    3 4 5 1 2

    3 4 5 1 2

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

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

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


    正确答案:(1)k (2)N-1 (3)temp
    (1)k (2)N-1 (3)temp 解析:本题中函数fun的功能是将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边,即把每列元素循环左移k个位置。

  • 第19题:

    有以下程序 include void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到

    有以下程序

    #include <stdio.h>

    void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/

    { int t,i,j;

    for(i=0;i<n-1;j++)

    for(j=i+1;j<n;j++)

    if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t;}

    }

    main( )

    { int c[10]={1,2,3,4,5,6,7,8,9,0},i;

    fun(c+4,6);

    for(i=0;i<10;i++) printf("%d,",c[i]);

    printf("\n");

    }

    程序的运行结果是

    A.1,2,3,4,5,6,7,8,9,0,

    B.0,9,8,7,6,5,1,2,3,4,

    C.0,9,8,7,6,5,4,3,2,1,

    D.1,2,3,4,9,8,7,6,5,0,


    正确答案:D
    解析:在本题中,主函数在调用fun( )函数进行排序时,传递的参数是c+4和6,fun( )函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

  • 第20题:

    如下是一个稀疏矩阵的三元组法存储表示和相关的叙述:

    行下标 列下标 值

    1 2 6

    2 4 7

    2 1 4

    3 2 6

    4 4 1

    5 2 1

    5 3 6

    Ⅰ. 该稀疏矩阵有5行

    Ⅱ. 该稀疏矩阵有4列

    Ⅲ.该稀疏矩阵有7个非0元素

    这些叙述中哪个(些)是正确的是(36)。

    A.只有Ⅰ

    B.Ⅰ和Ⅱ

    C.只有Ⅲ

    D.Ⅰ、Ⅱ和Ⅲ


    正确答案:C
    解析:稀疏矩阵的三元组法存储只存储稀疏矩阵中不为。的元素的行下标、列下标以及元素的值,仅由稀疏矩阵的三元组法存储的矩阵相关信息,无法得知矩阵的行数和列数,但由题目可以得知矩阵至少有5行、4列

  • 第21题:

    对关键字序列(6,1,4,3,7,2,8,5)进行快速排序时,以第1个元素为基准的一次划分的结果为 ( )

    A.(5,1,4,3,6,2,8,7)

    B.(5,1,4,3,2,6,7,8)

    C.(5,1,4,3,2,6,8,7)

    D.(8,7,6,5,4,3,2,1)


    正确答案:C

  • 第22题:

    inta[3][3]={1,2,3,4,5,6,7,8,9};其中数字7所在的二维数组元素是()

    • A、a[1][2]
    • B、a[1][0]
    • C、a[2][1]
    • D、a[2][0]

    正确答案:D

  • 第23题:

    填空题
    将10阶的下三角矩阵(非0元素分布在矩阵右下部)按照行优先顺序压缩存储到一维数组A中,则原矩阵中第3行第8列的非0元素在一维数组A中位于第()个元素位置。

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

  • 第24题:

    问答题
    请根据以下各小题的要求设计C应用程序(包括界面和代码)。   请编写函数fun(),它的功能是:将3行4列矩阵x乘以4行3列矩阵y,结果放在3行3列矩阵xy中。矩阵相乘的基本方法是:矩阵xy中行列下标分别为i,j的元素的值,是矩阵x中第i行上4个元素与矩阵y第j列上4个元素对应相乘的和。   注意:部分源程序给出如下。   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。   试题程序如下: #include  #include  void fun(int a[3][4],int b[4][3],int ab[3][3]) { } main() {  int x[3][4] = {{1,0,1,1}, {2,1,0,1}, {1,2,0,3}};  int y[4][3] = {{1,1,1}, {0,0,0}, {2,1,1}, {1,1,3}};  int xy[3][3] = {0},i,j;  fun(x,y,xy);  printf(a × b = ab:(3,3):);  for(i=0;i<3;i++)  {   for(j=0;j<3;j++)    printf(%d,xy[i][j]);   printf();  } }

    正确答案:

    void fun(int a[3][4],int b[4][3],int ab[3][3])
    {
    int j,k,l;
    for(k=0;k<3;k++)
    for(l=0;l<3;l++)
    for(j=0;j<4;j++)
    ab[k][l]+=a[k][j]*b[j][l];
    }
    解析: 本题首先要明确矩阵xy中行列下标分别为i,j的元素的值,是矩阵x中第i行上4个元素与矩阵y第j列上4个元素对应相乘再相加的和。因此,每个元素的求解是循环控制来实现的,即ab[k][l]+=a[k][j]*b[j][l],矩阵ab的每个元素的表示可用一个二重循环,整个函数是一个三重循环的嵌套。