scanf("%d,%d",i,j); //你输入时要带","比如 5,6 ,是"%d,%d"要求的,你可以去掉这个逗号然后输入 5 6 也行
成都创新互联,为您提供成都网站建设、成都网站制作、网站营销推广、网站开发设计,对服务成都发电机回收等多个行业拥有丰富的网站建设及推广经验。成都创新互联网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!
c语言输入矩阵方法:先自己输入阶数,再输入各个元素。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
更多关于c语言如何输入矩阵,进入:查看更多内容
#include stdio.h
#define N 3
int array[N][N];
void transition(int array[][3])
{
int i,j,temp;
for(i=0;iN;i++)
for(j=i+1;jN;j++)
{
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}
int main(void)
{
void transition(int array[][3]);
int i,j;
printf("请输入数据\n");
for(i=0;iN;i++)
for(j=0;jN;j++)
scanf("%d",array[i][j]);
printf("\n");
transition(array);
printf("调换数据如下\n");
for(i=0;iN;i++)
{
for(j=0;jN;j++)
printf("%5d",array[i][j]);
printf("\n");
}
return 0;
}
~~~~~~
我写的代码,你自己参考吧,很简单的
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语言矩阵分为两种:
第一种方法是动态的申请矩阵存储空间,该方法的好处有以下两点:
1.能够动态的申请和释放存储空间;
2.对于将矩阵作为函数返回值的情况,该方法具有独特的优势。
第二种方法是静态存储实现,该方法的好处是简单、易实现,相对第一种方法缺点:
1.静态实现,不能动态的申请和释放空间,对电脑的内容要求高;
2.对于将矩阵作为函数返回值的情况,不能使用该方法。
我的代码逻辑是:
矩阵行指针初值指向每行首地址,迭代依次取所有行指针指向值组成新行,所有行指针自增。最终组合新的矩阵。
#include stdio.h
#include malloc.h
int **getList(int row,int clo);//获取矩阵地址空间
void setNum(int **nList,int n);//填写数值
void prtList(int **nList,int row,int clo);//打印矩阵
int **zz(int **nList,int row,int clo);//转置函数
int main()
{
int row,clo,**nList=NULL,**nListSave=NULL;
printf("输入矩阵行列数:");
scanf("%d%d",row,clo);
nList=getList(row,clo);
setNum(nList,row*clo);
printf("输入的矩阵为:\n");
prtList(nList,row,clo);
printf("转置后的矩阵为:\n");
nListSave=zz(nList,row,clo);
free(nList);
nList=nListSave;
prtList(nList,clo,row);
return 0;
}
int **zz(int **nList,int row,int clo)
{
int *nSave=NULL,**listSave=NULL,**listp=nList,*p=NULL,i,j;
nSave=(int *)malloc(sizeof(int)*row*clo);
listSave=(int **)malloc(sizeof(int*)*clo);//倒置后的矩阵
p=nSave;
for(j=0;jclo;j++)
{
for(i=0;irow;i++)
{
*p++=*listp[i];
listp[i]=listp[i]+1;
}
}
for(i=0;iclo;i++)
listSave[i]=nSave[i*row];
for(i=0;irow;i++)
free(nList[i]);//释放原矩阵行空间
return listSave;
}
void prtList(int **nList,int row,int clo)
{
int i,j;
for(i=0;irow;i++)
{
for(j=0;jclo;j++)
printf("%d ",nList[i][j]);
printf("\n");
}
}
void setNum(int **nList,int n)
{
int *p=nList[0];
printf("填写矩阵中%d个数值:\n",n);
while(n--0)
scanf("%d",p++);
}
int **getList(int row,int clo)
{
int *nums,**nList,i;
nums=(int *)malloc(sizeof(int)*row*clo);
nList=(int **)malloc(sizeof(int*)*row);
for(i=0;irow;i++)
nList[i]=nums[i*clo];
return nList;
}