A.np.matmul()
B.np.stack()
C.np.linalg.inv()
D.np.transpose()
第1題
方陣轉(zhuǎn)置。將如下矩陣a轉(zhuǎn)置為矩陣b。程序運(yùn)行結(jié)果如下圖所示:
保存工程和窗體,窗體文件名為:昵稱-4-4.frm;工程名為:昵稱-4-4.vbp。將工程文件和窗體文件壓縮成:昵稱-4-4.rar,以附件形式提交。 提示: (1)定義兩個(gè)二維數(shù)組a(1 to 2,1 to 3)和 b(1 to 3,1 to 2); (2)a數(shù)組元素值可通過輸入對(duì)話框InputBox函數(shù)輸入,也可通過行(i)和列(j)的關(guān)系求得; (3)矩陣轉(zhuǎn)置就是b(j,i)=a(i,j)。
第2題
A、arange()
B、reshape()
C、zeros()
D、ones()
第3題
[說明]
若一個(gè)矩陣中的非零元素?cái)?shù)目很少且分布沒有規(guī)律,則稱之為稀疏矩陣。對(duì)m行n列的稀疏矩陣M,進(jìn)行轉(zhuǎn)置運(yùn)算后得到n行m列的矩陣MT,如圖3-1所示
為了壓縮稀疏矩陣的存儲(chǔ)空間,用三元組(即元素所在的行號(hào)、列號(hào)和元素值、表示稀疏矩陣中的一個(gè)非零元素,再用一維數(shù)組逐行存儲(chǔ)稀疏矩陣中的所有非零元素也稱為三元組順序表)。例如,圖3-1所示的矩陣M相應(yīng)的三元組順序表如表3-1所示。其轉(zhuǎn)置矩陣MT的三元組順序表如表3-2所示。
函數(shù)TransposeMatrix(Matrix M)的功能是對(duì)用三元組順序表表示的稀疏矩陣M進(jìn)行轉(zhuǎn)置運(yùn)算。
對(duì)M實(shí)施轉(zhuǎn)置運(yùn)算時(shí),為了將M中的每個(gè)非零元素直接存入其轉(zhuǎn)置矩陣MT三元組順序表的相應(yīng)位置,需先計(jì)算M中每一列非零元素的數(shù)目(即MT中每一行非零元素的數(shù)目),并記錄在向量num中;然后根據(jù)以下關(guān)系,計(jì)算出矩陣M中每列的第一個(gè)非零元素在轉(zhuǎn)置矩陣MT三元組順序表中的位置:
cpot[0]=0
cpot[j]=cpot[j-1]+num[j-1]) /*j為列號(hào)*/
類型ElemType,Triple和Matrix定義如下:
typedef int ElemType;
typedef struct{ /*三元組類型*/
int r,c; /*矩陣元素的行號(hào)、列號(hào)*/
ElemType e; /*矩陣元素的值*/
}Triple;
typedef struct{ /*矩陣的元組三元組順序表存儲(chǔ)結(jié)構(gòu)*/
int rows,cols,elements; /*矩陣的行數(shù)、列數(shù)和非零元素?cái)?shù)目*/
Triple data[MAXSIZE];
}Matrix;
[C語言函數(shù)]
int TransposeMatrix(Matrix M)
{
int j,q,t;
int *num, *cpot;
Matrix MT; /*MT是M的轉(zhuǎn)置矩陣*/
num=(int*)malloc(M.cols*sizeof(int));
cpot=(int*)malloc(M.cols*sizeof(int));
if(!num ||cpot)
return ERROR;
MT.rows=(1); /*設(shè)置轉(zhuǎn)置矩陣MT行數(shù)、列數(shù)和非零元素?cái)?shù)目*/
MT.cols=(2);
MT.elements=M.elements;
if(M.elements>0){
for (q=0 ; q<M. cols ; q++)
num[q]=0;
for (t=0; t<M.elements;++t) /*計(jì)算矩陣M中每一列非零元素?cái)?shù)目*/
num [M.data[t].c]++;
/*計(jì)算矩陣M中每列第一個(gè)非零元素在其轉(zhuǎn)置矩陣三元組順序表中的位置*/
(3);
for(j=1;j<M.cols;j++)
cpot[j]=(4);
/*以下代碼完成轉(zhuǎn)置矩陣MT三元組順序表元素的設(shè)置*/
for(t=0;t<M.elements;t++){
j=(5); /*取矩陣M的一個(gè)非零元素的列號(hào)存入j*/
/*q為該非零元素在轉(zhuǎn)置矩陣MT三元組順序表中的位置(下標(biāo))*/
q=cpot[j];
MT.data[q].r=M.data[t].c;
MT.data[q].c=M.data[t].r;
MT.data[q].e=M.data[t].e;
++cpot[j]; /*計(jì)算M中第j列的下一個(gè)非零元素的目的位置*/
}/*for*/
} /*if*/
free(num); free(cpot);
/*此處輸出矩陣元素,代碼省略*/
return OK;
}/*TransposeMatrix*/
第4題
A、imploed()
B、explode()
C、arsort()
D、natsort()
第5題
第7題
下面程序的功能是用指針變量作函數(shù)參數(shù)編程計(jì)算任意m×n階矩陣的轉(zhuǎn)置矩陣。要求用指向一維數(shù)組的指針變量即二維數(shù)組的行指針作函數(shù)參數(shù)。程序的運(yùn)行結(jié)果如下: Please enter matrix: 1 2 3 4↙ 1 2 3 4↙ 1 2 3 4↙ The transposed matrix is: 1 1 1 2 2 2 3 3 3 4 4 4 按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。#include <stdio.h> #define ROW 3 #define COL 4 void Transpose(int (*a)[COL], int (*at)[ROW], int row, int col); void InputMatrix(int (*s)[COL], int row, int col); void PrintMatrix(int (*s)[ROW], int row, int col); int main(void) { int s[ROW][COL];//s代表原矩陣 int st[COL][ROW];//st代表轉(zhuǎn)置后的矩陣 printf("Please enter matrix:\n"); InputMatrix(s, ROW, COL);//輸入原矩陣,s指向矩陣s的第0行,是行指針 Transpose(s, st, ROW, COL);//對(duì)矩陣s進(jìn)行轉(zhuǎn)置,結(jié)果存放于st中 printf("The transposed matrix is:\n"); PrintMatrix(st, COL, ROW); //輸出轉(zhuǎn)置矩陣,*st指向st的第0行,是行指針 return 0; } //函數(shù)功能: 對(duì)任意row行col列的矩陣a轉(zhuǎn)置,轉(zhuǎn)置后的矩陣為at void Transpose(____________,int (*at)[ROW], int row, int col) { int i, j; for (i=0; i <row; i++) { for (j="0;" j++) _____________________; } void inputmatrix(___________, int row, col) 輸入矩陣元素 i, j; (i="0;" scanf("%d", ___________); 元素s[i][j] printmatrix(int ___________, 輸出矩陣元素 printf("%d\t", *(*(s+i)+j)); printf(" \n");> A、第20行: int (*a)[COL] 第27行: *(*(at+j)+i) = *(*(a+i)+j) 第32行: int(*s)[COL] 第39行: *(s+i)+j 第44行: (*s)[ROW]
B、第20行: int *a[COL] 第27行: *(*(at+j)+i) = (*(a+i)+j) 第32行: int(*s)[ROW] 第39行: *(s+i)+j 第44行: *s[COL]
C、第20行: int (*a)[ROW] 第27行: *(at+j+i) = *(*(a+i)+j) 第32行: int(*s)[COL] 第39行: *(s+i+j) 第44行: (*s)[ROW]
D、第20行: int (*a)[COL] 第27行: *(*(at+j)+i) = *(*(a+i+j)) 第32行: int(*s)[ROW] 第39行: *(s)+i+j 第44行: (*s)[COL]
第8題
下面程序的功能是用指針變量作函數(shù)參數(shù)編程計(jì)算任意m×n階矩陣的轉(zhuǎn)置矩陣。要求用指向一維數(shù)組的指針變量即二維數(shù)組的行指針作函數(shù)參數(shù)。程序的運(yùn)行結(jié)果如下: Please enter matrix: 1 2 3 4↙ 1 2 3 4↙ 1 2 3 4↙ The transposed matrix is: 1 1 1 2 2 2 3 3 3 4 4 4 按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。 #include <stdio.h> #define ROW 3 #define COL 4 void Transpose(int (*a)[COL], int (*at)[ROW], int row, int col); void InputMatrix(int (*s)[COL], int row, int col); void PrintMatrix(int (*s)[ROW], int row, int col); int main(void) { int s[ROW][COL];//s代表原矩陣 int st[COL][ROW];//st代表轉(zhuǎn)置后的矩陣 printf("Please enter matrix:\n"); InputMatrix(s, ROW, COL);//輸入原矩陣,s指向矩陣s的第0行,是行指針 Transpose(s, st, ROW, COL);//對(duì)矩陣s進(jìn)行轉(zhuǎn)置,結(jié)果存放于st中 printf("The transposed matrix is:\n"); PrintMatrix(st, COL, ROW); //輸出轉(zhuǎn)置矩陣,*st指向st的第0行,是行指針 return 0; } //函數(shù)功能: 對(duì)任意row行col列的矩陣a轉(zhuǎn)置,轉(zhuǎn)置后的矩陣為at void Transpose(____________,int (*at)[ROW], int row, int col) { int i, j; for (i=0; i <row; i++) { for (j="0;" j++) _____________________; } void inputmatrix(___________, int row, col) 輸入矩陣元素 i, j; (i="0;" scanf("%d", ___________); 元素s[i][j] printmatrix(int ___________, 輸出矩陣元素 printf("%d\t", *(*(s+i)+j)); printf(" \n");> A、第20行: int (*a)[COL] 第27行: *(*(at+j)+i) = *(*(a+i)+j) 第32行: int(*s)[COL] 第39行: *(s+i)+j 第44行: (*s)[ROW]
B、第20行: int *a[COL] 第27行: *(*(at+j)+i) = (*(a+i)+j) 第32行: int(*s)[ROW] 第39行: *(s+i)+j 第44行: *s[COL]
C、第20行: int (*a)[ROW] 第27行: *(at+j+i) = *(*(a+i)+j) 第32行: int(*s)[COL] 第39行: *(s+i+j) 第44行: (*s)[ROW]
D、第20行: int (*a)[COL] 第27行: *(*(at+j)+i) = *(*(a+i+j)) 第32行: int(*s)[ROW] 第39行: *(s)+i+j 第44行: (*s)[COL]
第9題
下面程序的功能是用指針變量作函數(shù)參數(shù)編程計(jì)算任意m×n階矩陣的轉(zhuǎn)置矩陣。要求用指向一維數(shù)組的指針變量即二維數(shù)組的行指針作函數(shù)參數(shù)。程序的運(yùn)行結(jié)果如下: Please enter matrix: 1 2 3 4↙ 1 2 3 4↙ 1 2 3 4↙ The transposed matrix is: 1 1 1 2 2 2 3 3 3 4 4 4 按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。 #include <stdio.h> #define ROW 3 #define COL 4 void Transpose(int (*a)[COL], int (*at)[ROW], int row, int col); void InputMatrix(int (*s)[COL], int row, int col); void PrintMatrix(int (*s)[ROW], int row, int col); int main(void) { int s[ROW][COL];//s代表原矩陣 int st[COL][ROW];//st代表轉(zhuǎn)置后的矩陣 printf("Please enter matrix:\n"); InputMatrix(s, ROW, COL);//輸入原矩陣,s指向矩陣s的第0行,是行指針 Transpose(s, st, ROW, COL);//對(duì)矩陣s進(jìn)行轉(zhuǎn)置,結(jié)果存放于st中 printf("The transposed matrix is:\n"); PrintMatrix(st, COL, ROW); //輸出轉(zhuǎn)置矩陣,*st指向st的第0行,是行指針 return 0; } //函數(shù)功能: 對(duì)任意row行col列的矩陣a轉(zhuǎn)置,轉(zhuǎn)置后的矩陣為at void Transpose(____________,int (*at)[ROW], int row, int col) { int i, j; for (i=0; i <row; i++) { for (j="0;" j++) _____________________; } void inputmatrix(___________, int row, col) 輸入矩陣元素 i, j; (i="0;" scanf("%d", ___________); 元素s[i][j] printmatrix(int ___________, 輸出矩陣元素 printf("%d\t", *(*(s+i)+j)); printf(" \n");> A、第20行: int (*a)[COL] 第27行: *(*(at+j)+i) = *(*(a+i)+j) 第32行: int(*s)[COL] 第39行: *(s+i)+j 第44行: (*s)[ROW]
B、第20行: int *a[COL] 第27行: *(*(at+j)+i) = (*(a+i)+j) 第32行: int(*s)[ROW] 第39行: *(s+i)+j 第44行: *s[COL]
C、第20行: int (*a)[ROW] 第27行: *(at+j+i) = *(*(a+i)+j) 第32行: int(*s)[COL] 第39行: *(s+i+j) 第44行: (*s)[ROW]
D、第20行: int (*a)[COL] 第27行: *(*(at+j)+i) = *(*(a+i+j)) 第32行: int(*s)[ROW] 第39行: *(s)+i+j 第44行: (*s)[COL]
第10題
下面程序的功能是用指針變量作函數(shù)參數(shù)編程計(jì)算任意m×n階矩陣的轉(zhuǎn)置矩陣。要求用指向一維數(shù)組的指針變量即二維數(shù)組的行指針作函數(shù)參數(shù)。程序的運(yùn)行結(jié)果如下: Please enter matrix: 1 2 3 4↙ 1 2 3 4↙ 1 2 3 4↙ The transposed matrix is: 1 1 1 2 2 2 3 3 3 4 4 4 按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。 #include <stdio.h> #define ROW 3 #define COL 4 void Transpose(int (*a)[COL], int (*at)[ROW], int row, int col); void InputMatrix(int (*s)[COL], int row, int col); void PrintMatrix(int (*s)[ROW], int row, int col); int main(void) { int s[ROW][COL];//s代表原矩陣 int st[COL][ROW];//st代表轉(zhuǎn)置后的矩陣 printf("Please enter matrix:\n"); InputMatrix(s, ROW, COL);//輸入原矩陣,s指向矩陣s的第0行,是行指針 Transpose(s, st, ROW, COL);//對(duì)矩陣s進(jìn)行轉(zhuǎn)置,結(jié)果存放于st中 printf("The transposed matrix is:\n"); PrintMatrix(st, COL, ROW); //輸出轉(zhuǎn)置矩陣,*st指向st的第0行,是行指針 return 0; } //函數(shù)功能: 對(duì)任意row行col列的矩陣a轉(zhuǎn)置,轉(zhuǎn)置后的矩陣為at void Transpose(____________,int (*at)[ROW], int row, int col) { int i, j; for (i=0; i <row; i++) { for (j="0;" j++) _____________________; } void inputmatrix(___________, int row, col) 輸入矩陣元素 i, j; (i="0;" scanf("%d", ___________); 元素s[i][j] printmatrix(int ___________, 輸出矩陣元素 printf("%d\t", *(*(s+i)+j)); printf(" \n");> A、第20行: int (*a)[COL] 第27行: *(*(at+j)+i) = *(*(a+i)+j) 第32行: int(*s)[COL] 第39行: *(s+i)+j 第44行: (*s)[ROW]
B、第20行: int *a[COL] 第27行: *(*(at+j)+i) = (*(a+i)+j) 第32行: int(*s)[ROW] 第39行: *(s+i)+j 第44行: *s[COL]
C、第20行: int (*a)[ROW] 第27行: *(at+j+i) = *(*(a+i)+j) 第32行: int(*s)[COL] 第39行: *(s+i+j) 第44行: (*s)[ROW]
D、第20行: int (*a)[COL] 第27行: *(*(at+j)+i) = *(*(a+i+j)) 第32行: int(*s)[ROW] 第39行: *(s)+i+j 第44行: (*s)[COL]
為了保護(hù)您的賬號(hào)安全,請(qǐng)?jiān)凇?span>上學(xué)吧”公眾號(hào)進(jìn)行驗(yàn)證,點(diǎn)擊“官網(wǎng)服務(wù)”-“賬號(hào)驗(yàn)證”后輸入驗(yàn)證碼“”完成驗(yàn)證,驗(yàn)證成功后方可繼續(xù)查看答案!