单选题设有一个M*N的矩阵已经存放在一个M行N列的数组x中,且有以下程序段:sum=0;for(i=0;iA矩阵两条对角线元素之和B矩阵所有不靠边元素之和C矩阵所有元素之和D矩阵所有靠边元素之和

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

矩阵两条对角线元素之和

B

矩阵所有不靠边元素之和

C

矩阵所有元素之和

D

矩阵所有靠边元素之和


参考解析

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

相关考题:

以下程序中函数 f 的功能是在数组 x 的 n 个数 ( 假定 n 个数互不相同 ) 中找出最大最小数 , 将其中最小的数与第一个数对换 , 把最大的数与最后一个数对换 . 请填空 .#include stdio.hviod f(int x[],int n){ int p0,p1,i,j,t,m;i=j=x[0]; p0=p1=0;for(m=0;mn;m++){ if(x[m]i) {i=x[m]; p0=m;}else if(x[m]j) {j=x[m]; p1=m;}}t=x[p0]; x[p0]=x[n-1]; x[n-1]=t;t=x[p1]; x[p1]= _[14]_______ ; _[15]_______ =t;}main(){ int a[10],u;for(u=0;u10;u++) scanf("%d",a[u]);f(a,10);for(u=0;u10;u++) printf("%d",a[u]);printf("\n");}

以下程序中,select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标,请填空。#define N 3#define M 3select(int a[N][M],int *n){int i,j,row=0,colum=0;for(i=0;iN;i++)for(j=0;jM;j++)if(a[i][j]a[row][colum]){row=i;colum=j;}*n=;return();}

下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <conio.h>include <stdio.h>define N 20void fun(int *a,int n){int i, m,t,k;/*************found**************/for(i=O; i<n; i++){m==i;for(k=i; k<n; k++)if(a[k]<a[m])/*************found**************/k=m;t=a[i];a[i]=a[m];a[m]=t;}}main(){int x,b[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;clrscr();for(i=0; i<n; i++)printf("%d",b[i]);printf("\n");fun(b,n);for(i=0; i<n; i++)printf("%d",b[i]);printf("\n");}

以下程序中的select()函数功能是:在N行M列的二维数组中选出一个最大值作为函数值返回,并通过形参传回此最大值的行下标。请填空完成此程序。include<iostream>define N 3define M 3using namespace std;int select(int a[N][M],int *n){int i,j,row=0,colum=0;for(i=0;i<N;i++)for(i=0;j<M;j++)if(a[i][j]>a[row][colum]){row=i;colum=j;}*n=【 】;return 【 】;}int main(){int a[N][M]={9,11,23,6,1,15,9,17,20};int max,n;max=select(a,n);cout<<"max="<<max<<"line="<<n<<end1;return 0;}

以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。#define N 3#define M 3select(int a[N][M],int *n){int i,j,row=1,colum=1;for(i=0;ifor(j=0;jif(a[i][j]a[row][colum]){row=i;colum=j;}*n= 【16】 ;return 【17】 ;}main(){int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;max=select(a,n);printf("max=%d,line=%d\n",max,n);}

已知有一维数组A[0...m*n-1],若要对应为m行、n列的矩阵,则下面的对应关系______可将元素A[k](0≤k<m*n)表示成矩阵的第i行、第j列的元素(0≤i<m,0≤j<n)。A.i=k/n,j=k%mB.i=k/m,j=k%mC.i=k/n,j=k%nD.i=k/m,j=k%n

下面程序段的时间复杂度是()。s=0;for(i=0;ifor(j=0;js+=B[i][j];sum=s; A、O(m2)B、O(n2)C、O(m*n)D、O(m+n)

下列给定程序中,函数fun()的功能是:输出M行N列整数方阵,然后求两条对角线上的各元素的平方和,返回此和数。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <conio.h>include <stdio.h>define M 5int fun(int n,int XX[][M]){int i,j,sum=O;printf("\nThe %d x %d matrix:\n",M,M);for(i=0;i<N;i++){for(j=0;j<M;j++)/*************found*************/printf("%4d",XX[i j]);/*************found*************/printf('\n');}for(i=0;i<n;i++)sum+=xx[i][i]*XX[i][i]+XX[i][n-i-1]*XX[i][n-i-1];return(sum);}main(){int aa[M][M)={{3,12,4,24,35},{11,3, 3,7, 56},{61,27,58,49,24},{17,28,7,36,85},{15,33,5,24,9}};clrscr();printf("\nThe result of all elements on 2diagnals iS%d",fun(M,aa));}

请编一个函数void fun( int tt[M][N], int pp[N], tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include <conio.h>include <stdio.h>define M 3define N 4void 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");}

给定程序MODllC中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。inClude<coMo.h>inClude<stdio.h>dehne M 5/************fOUnd************/int fun(int n,int xx[][]){int i,j,sum=0;printf("\n The%dx%d matrix:\n"M,M);for(i=0;i<M;i++){ for(j=0;j<M;j++)/************found************/printf("%f",xx[i][j]);printf("\n");}for(i=0;i<n;i++)sum+=xx[i][i]+XX[i][[n-i-1];return(sum);}main( ){int aa[M][M]={{1,2,3,4,5),{4,3,2,1,0),{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};clrscr( );printf("\n The sum Of all elements On 2 diagnals is %d."fun(M,aa));}

设有以下程序:main(){int i,sum=0;for(i=2;i<10;i++){ if((i%2)==0)continue;sum+=i;}printf("%d\n",sum);}程序执行后的输出结果是( )。

下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <stdio.h>define SIZE 20fun (double *s, double *w){ int k, i; double sum;for(k=2, i=0; i<SIZE; i++){s [i]=k; k+=2;}sum=0.0;for(k=0, i=0; i<SIZE;i++){sum+=s[i];/*************found**************/if(i+1%5==0){w[k]=sum/5; Sum=0; k++;}}return k;}main(){ double a[SIZE],b[SIZE/5];int i, k;k=fun(a/b);printf ("The original data:\n");for(i=0;i<SIZE;i++){if(i%5==0)printf("\n");printf("%4.0f"/a[i]);}printf{"\n\nThe result:\n");for(i=0; i<k; i++) printf("%6.2f",b[i]);printf("\n\n");}

下列给定程序中,函数fun()的功能是:给一维数组a输入任意4个整数,并按如下的规律输出。例如输入1,2,3,4,程序运行后输出以下方阵:4 1 2 33 4 1 22 3 4 11 2 3 4请改正程序中的错误,使它能得出正确的结果。注意;不要改动main 函数,不得增行或删行,也不得更改程序的结构。试题程序;include <stdio.h>define M 4/*******************************/void fun(int a){int i,j,k,m;printf("Enter 4 number: ");for (i=0; i<M; i++) scanf ("%d", a [i] );printf ("\n\n The result : \n\n ");for (i=M; i>0; i--){ k=a [M-1];for (j=M-1; j>0; j--)/**********************************/a[j]=a[j+1];a[0]=k;for (m=0 ;m<M; m++ ) printf ("%d ", a [m]);printf ("\n ");}}main (){int a [M];fun(a); printf("\n\n ");}

阅读下列函数说明和C代码,填入(n)处。[说明]以下C语言程序实现了生成从里到外是连续的自然数排列的回旋矩阵,矩阵形式如下:7 6 5 168 1 4 159 2 3 1410 11 12 13程序的变量说明如下:x1:矩阵上边界;x2:矩阵下边界;y1:矩阵左边界;y2:矩阵右边界;s:数组元素升降标记,s等于1为升,s等于-1为降;a[]:存放矩阵元素的数组。仔细阅读C语言程序源码,将(n)处的语句补充完整。(注:每处仅一个语句)[C程序]include<stdio.h>void main ( ){const int N=20;int i=0,j=0,a[N][N],n;int m,x1,x2,y1,y2,s;while (1){Printf ("\ninput matrix row N( N>=2): ");scanf ("%d",n);printf ("\n");if (n>=2)break;}m=n*n;x1=0; y1=0; x2=n; y2=n;if(n%2==0){j=n-1; y2=n-1; s=1;}else{i=n-1; y1=1; s=-1; }while (1){if (s==1){for (i; i<x2; i++) a[i][j]=m--;i--;j--;(1)for (j;j>=y1;j--) a[i][j]=m--;j++;i--;y1++;(2)}else{for (i;i>=x1;i--)a[i][j]=m--;i++;j++;(3)for (j;j<y2;j++)(4)(5)i++;(6)S=i;}if (m<1) break;}for (i=O;i<n; i++){for (j=O;j<n;j++)printf ("%6d",a[i][j]);printf ("\n");}printf ("\n");}

一个nxn的对称矩阵A,将其下三角部分按行存放在一个一维数组B中。 A[0][0]存放于B[O]中,那么第i行的对角元素A[i][i]存放于B中(50)处。A.(i+3)*i/2B.(i+1)*i/2C.(2n-i+1)*i/2D.(2n-i-1)*i/2

阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。【说明】计算n的合数。一个整数n可以有多种划分,使其划分的一列整数之和为n。例如,整数5的划分为:54 13 23 1 12 2 12 1 1 11 1 1 1 1共有7种划分。这种划分的程序如下所示。【程序】include <stdio.h>int n[1000],m,k;void output sum(){int j;for(j=0;n[j]!=0;j++)printf("%d\t",n[j]);printf("\n");}void sum(int i)if(m-n[i]<n[i]){ m=m-n[i];(1)i++;n[i+1]=0;}else{(2)m-=n[i];i++;}if(m!=n[i])sum(i);elseoutput_sum();if(n[i]>1){n[i]--;(3)}else{while((n[i]==1)(i>O)){i--;(4)}if(i!=0){(5)sum(i);}}}void main(){int i;scanf("%d",n[0]);m=k=n[0];for(i=1;i<=k;i++)n[i]=0;while(n[0]!=1){n[0]--;i=0;sum(0);m=k;}}

以下程序中,函数 sumColumM的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。define M 2define N 4void SumColumMin(int a[M][N],int *sum){ int i,j,k,s=0;for(i=0;i〈N;i++){ k=0;for(j=1;j<M;j++)if(a[k][i]>a[j][i])k=j;s+=【 】;}【 】 =s;}main( ){ int x[M][N]={3,2,5,1,4,1,8,3},s;SumColumMin(【 】);printf("%d\n",s);}

以下fun函数的功能是在N行M列的整型二维数组中,选出一个最大值作为函数值返回,请填空。(设M,N已定义)int fun(int a[N][M]){int i,j,row=0,col=0;for(i=0;iN;i++)for(j=0;jM;j++)if(a[i][j]a[row][col])(row=i;col=j;)return(_____);}

下列给定程序中,函数fun()的功能是:输出M行N列整数方阵,然后求两条对角线上的各元素之和,返回此和数。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:include <conio.h>include <stdio.h>define M 5/**********************************/iht fun(int n, int xx[ ][ ]){ int i, j, sum=0;printf("\nThe %d x %d matrix:\n",M,M);for(i=0;i<M;i++){ for (j=0; j<M; j++)/**********************************/printf("%4f",xx[i][j]);printf("\n");}for(i=0;i<n;i++)sum+=xx[i][i]+xx[i][n-i-1];return(sum);}main (){ int aa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};clrscr();printf("\nThe sum of all elements on 2diagnals is %d",fun(M, aa));}

●设下三角矩阵(上三角部分的元素值都为 0)A[0..n,0..n]如下所示,将该三角矩阵的所有非零元素(即行下标不小于列下标的元素)按行优先压缩存储在容量足够大的数组M[ ]中(下标从1 开始),则元素 A[I,j](O≤i≤n,j≤i)存储在数组M 的 (57) 中。

已知有一维数组A(0..m*n-1],若要对应为m行、n列的矩阵,则下面的对应关系(4)可将元素A[k](0≤k<m*n)表示成矩阵的第i行、第j列的元素(0≤i<m,0≤j<n)。A.i=k/n,j=k%mB.i=k/m,j=K%mC.i=k/n,j=k%nD.i=k/m,j=k%n

有以下程序:include int fun(int x[], int n){ static int sum =0,i;for(i=0;i 有以下程序: #include <stdio.h> int fun(int x[], int n) { static int sum =0,i; for(i=0;i<n;i ++ )sum + =x[i]; return sum;{ int a[] ={1,2,3,4,5},b[]={6,7,8,9},s=0; s = fun(a,5) + fun(b,4) ;printf( "%d \n",s);程序执行后的输出结果是( )。A.45B.50C.60D.55

设有一个m行n列的矩阵存储在二维数组A[1..M,1..n]中,将数组元素按行排列,对于A[i,j](1im,ljn),排列在其前面的元素个数为( )。A.i*(n-1)+jB.(i-1)*n+J-1C.i*(m-l)+jD.(i-1)*m+J-1

以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)例如,矩阵为:3 0 0 32 5 7 31 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;ifor(j=0;jN;J++)sum=sum+ (7) ;for(j=0;jfor(i=1; (8) ;i++)sum=sum+arr[i*n+j];return(sum);}

已知有一维数组A[0.m×n-1],若要对应为m行n列的矩阵,则下面的对应关系(),可将元素A[k](O≤<k≤<m×n)表示成矩阵的第i行、第j列的元素(0≤i≤m,0匀≤n)。 A. i=k/n,j=k%mB.i=k/m,j=k%mC.i=k/n,j=k%nD.i=k/m,j=k%n

设有一个m行n列的矩阵存储在二维数组A[1..M,1..n]中,将数组元素按行排列,对于A[i,j](1≤i≤m,l≤j≤n),排列在其前面的元素个数为( ).A.i*(n-1)+jB.(i-1)*n+J-1C.i*(m-l)+jD.(i-1)*m+J-1

单选题设有n个数按从大到小的顺序存放在数组x中,以下能使这n个数在x数组中的顺序变为从小到大的是(  )。Afor(i=0;in/2;i++){ t=x[i]; x[i]=x[n-i-1]; x[n-i-1]=t;}Bfor(i=0;in;i++){ t=x[i]; x[i]=x[n-i-1]; x[n-i-1]=t;}Cfor(i=0;in/2;i++){ t=x[i]; x[i]=x[n-i+1]; x[n-i+1]=t;}Dfor(i=0;in/2;i+=2){ t=x[i]; x[i]=x[n-i-1]; x[n-i-1]=t;}