
正文
c语言矩阵输入函数 c语言矩阵输入输出
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言输入矩阵
scanf("%d,%d",i,j); //你输入时要带","比如 5,6 ,是"%d,%d"要求的,你可以去掉这个逗号然后输入 5 6 也行
相关问答
Q1: 我想问一下c语言如何输入矩阵
c语言输入矩阵方法:先自己输入阶数,再输入各个元素。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
更多关于c语言如何输入矩阵,进入:查看更多内容
Q2: 用C语言编写一个矩阵运算的程序,高分!
//矩阵三元组之矩阵相加 相乘
#include iostream
using namespace std;
typedef int Elemtype;
#define MAXSIZE 12500 //最大非零元素
typedef struct Triple
{
Elemtype value;
int row,col;
}Triple;
typedef struct TSMatrix
{
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;
TSMatrix T;
void InputMatrix(TSMatrix T) //输入t个非零元素
{
cout"请输入稀疏矩阵的信息,(行,列,非零元素个数)"endl;
cinT.muT.nuT.tu;
int i;
cout"请输入非零元素的信息(行,列,值),提醒(下标从1开始)"endl;
for(i=1;i=T.tu;++i)
{
cinT.data[i].rowT.data[i].colT.data[i].value;
}
}
void Output(TSMatrix T)
{
cout"矩阵的三元组表示(ROW=)"T.mu" COL="T.nu"非零个数="T.tuendl;
int i;
for(i=1;i=T.tu;++i)
{
cout"ROW(行):"T.data[i].row" COL(列):"T.data[i].col" Value(值)"T.data[i].valueendl;
}
}
void TransposeSMatrix(TSMatrix M,TSMatrix T) //矩阵的转置
{
T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;
int i,j,k=1;
for(i=1;i=M.nu;++i)
{
for(j=1;j=M.tu;++j)
if(M.data[j].col==i)
{
T.data[k].row=i;
T.data[k].col=M.data[j].row;
T.data[k].value=M.data[j].value;
++k;
}
}
}
void AddMastrix(TSMatrix M,TSMatrix T,TSMatrix Q) //矩阵相加
{
int index_a,index_b,i=1,j=1,k=1;
Q.mu=M.mu; Q.nu=M.nu;
while (i=M.tuj=T.tu)
{
index_a=(M.data[i].row)*(M.data[i].col)+M.data[i].col;
index_b=(T.data[j].row)*(T.data[j].col)+T.data[j].col;
if(index_aindex_b)
{
Q.data[k]=M.data[i];
i++;
k++;
}
else if(index_aindex_b)
{
Q.data[k]=T.data[j];
j++;
k++;
}
else if(index_a==index_b)
{
if((M.data[i].value+T.data[j].value)!=0)
{
Q.data[k]=M.data[i];
Q.data[k].value=M.data[i].value+T.data[j].value;
k++;
}
++i;
++j;
}
}
//复制剩余元素
for(;i=M.tu;++i)
{
Q.data[k]=M.data[i];
k++;
}
for(;j=T.tu;++j)
Q.data[k++]=T.data[j];
Q.tu=k-1;
}
void Multiply(TSMatrix M,TSMatrix T,TSMatrix Q) //相乘
{
if(M.nu!=T.mu)
{
cerr"两矩阵相乘不合法"endl;
return ;
}
int *rowSize=new int[T.mu+1]; //存放每行非零元素的个数
int *rowStart=new int[T.mu+2]; //矩阵每行在三元组开始位置
int *temp=new int[T.nu+1]; //存放结果矩阵中每行的计算结果
int i,Current,k,ROWM,COLM,COLB;
for(i=1;i=T.mu;i++) rowSize[i]=0;
for(i=1;i=T.tu;++i) rowSize[T.data[i].row]++;
rowStart[1]=1;
for(i=2;i=T.mu+1;i++)
rowStart[i]=rowStart[i-1]+rowSize[i-1];
Current=1; k=1;
while (Current=M.tu)
{
ROWM=M.data[Current].row; //当前三元组数据中元素的行号
for(i=1;i=T.nu;++i) temp[i]=0;
while (Current=M.tuROWM==M.data[Current].row)
{
COLM=M.data[Current].col; //当前元素的列号,方便与T矩阵的行号相乘
for(i=rowStart[COLM];irowStart[COLM+1];i++) //对应T矩阵中每行的个数
{
COLB=T.data[i].col;
temp[COLB]+=(M.data[Current].value)*(T.data[i].value);
}
Current++;
}
for(i=1;i=T.nu;i++)
{
if(temp[i]!=0)
{
Q.data[k].row=ROWM;
Q.data[k].col=i;
Q.data[k].value=temp[i];
}
k++;
}
}
Q.mu=M.mu;Q.nu=T.nu;
Q.tu=k-1;
}
int main()
{
TSMatrix T,M,Q,S;
InputMatrix(M);
InputMatrix(T);
cout"两矩阵相乘"endl;
Multiply(M,T,Q);
Output(Q);
cout"两矩阵相加"endl;
AddMastrix(M,M,S);
Output(S);
system("pause");
return 0;
}
Q3: c语言怎么输入矩阵
c语言矩阵分为两种:
第一种方法是动态的申请矩阵存储空间c语言矩阵输入函数,该方法的好处有以下两点:
1.能够动态的申请和释放存储空间c语言矩阵输入函数;
2.对于将矩阵作为函数返回值的情况c语言矩阵输入函数,该方法具有独特的优势。
第二种方法是静态存储实现,该方法的好处是简单、易实现,相对第一种方法缺点:
1.静态实现,不能动态的申请和释放空间,对电脑的内容要求高;
2.对于将矩阵作为函数返回值的情况,不能使用该方法。
Q4: C语言怎么把矩阵传到函数中?希望有具体的例子;
float matrix(float *a[3]){
return(a[0][0]+a[0][2]+a[1][1]+a[2][0]+a[2][2]);
}
int i,j;
float a[3][3],*p[3];
for(i = 0; i 3; i++)for(j = 0; j 3; j++){
scanf("%f",a[i][j]); // float 格式 %f
}
p[0]=a[0][0];p[1]=a[1][0];p[2]=a[2][0]; // 3个指针
printf("sum=%0.2f\n", matrix(p)); // 调用。
============
一般例子(已知数组 行列,动态分配的数组)如何传递数值:
#include stdio.h
void fun1(int *mat, int N_row, int N_col){
int i,j;
for (j=0;jN_row;j++){
for (i=0;iN_col;i++) printf("%d ",mat[j*N_col+i]);
printf("\n");
}
}
void fun2(int **mat, int N_row, int N_col){
int i,j;
for (j=0;jN_row;j++){
for (i=0;iN_col;i++) printf("%d ",mat[j][i]);
printf("\n");
}
}
int main()
{
int arr[3][4]={{11,12,13,14},{21,22,23,24},{31,32,33,34}};
int **a;
int NR,NC,j,i;
fun1( arr[0][0],3,4);
printf("input nrow ncol\n");
scanf("%d %d",NR,NC);
a = (int **) malloc(sizeof(int *) * NR);
for (j=0;jNR;j++){
a[j] = (int *) malloc(sizeof(int) * NC);
}
printf("input matrix data \n");
for (j=0;jNR;j++) for (i=0;iNC;i++) scanf("%d",a[j][i]);
fun2( a,NR,NC);
return 0;
}
关于c语言矩阵输入函数和c语言矩阵输入输出的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






