编写C函数readMatrix 读系数矩阵(三元组),函数printMatrix打印系数矩阵非零元(看错写成了打印矩阵,费老了劲了,弱爆了我),函数search在系数矩阵中查找给定值。
#include <stdio.h>
#define MAX_TERMS 101
#define MAX_COL 8
typedef struct {
int row;
int col;
int value;
} term;
term a[MAX_TERMS];
term b[MAX_TERMS];
int readMatrix(term b[]); //读系数矩阵三元组
int printMatrix(term a[]); //打印系数矩阵
int Judge(int j, int k, int numTerms, term c[]);
int search(term d[], int num); //在系数矩阵中查找给定值
int main(void) {
int z;
a[0].row=6; a[0].col=6; a[0].value=8; //测试用矩阵a
a[1].row=0; a[1].col=0; a[1].value=15;
a[2].row=0; a[2].col=3; a[2].value=22;
a[3].row=0; a[3].col=5; a[3].value=-15;
a[4].row=1; a[4].col=1; a[4].value=11;
a[5].row=1; a[5].col=2; a[5].value=3;
a[6].row=2; a[6].col=3; a[6].value=6;
a[7].row=4; a[7].col=0; a[7].value=91;
a[8].row=5; a[8].col=2; a[8].value=28;
//printMatrix(a);
//readMatrix(b);
//printMatrix(b);
printf("请输入您想查找的值:");
scanf("%d",&z);
search(a,z); //可修改a为读入矩阵
return 0;
}
int readMatrix(term b[]){ //读系数矩阵三元组
int i;
printf("请输入系数矩阵三元组: \n");
scanf("%d, %d, %d", &b[0].row, &b[0].col, &b[0].value);
for(i = 1; i<= b[0].value; i++){
scanf("%d, %d, %d", &b[i].row, &b[i].col, &b[i].value);
}
return 0;
}
int printMatrix(term c[]){ //打印系数矩阵
int j, k, numCols = c[0].col, numRows = c[0].row, numTerms = c[0].value;
if(numTerms>0){
for(j=0; j<numRows; j++){
for(k=0; k<numCols; k++){
printf("%d ", Judge(j, k, numTerms,c));
}
printf("\n");
}
}
return 0;
}
int Judge(int j, int k, int numTerms, term c[]){ //给'打印'函数返回值
int i;
for(i=1; i<=numTerms; i++){
if(c[i].col==k&&c[i].row==j){
return c[i].value;
}
}
return 0;
}
int search(term d[], int num){ //在系数矩阵中查找给定值
int i;
for(i = 1; i <= d[0].value; i++){
if(d[i].value == num){
printf("数字位置为: %d %d \n", d[i].row, d[i].col);
}
}
return 0;
}