当前位置:首页 » 编程语言 » c语言中的3乘4矩阵的作品
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中的3乘4矩阵的作品

发布时间: 2023-07-19 23:59:40

Ⅰ 求c语言流程图:一个3*4的矩阵,要求编写一个程序找出每一行中的最大值并与第一列交换!明天考拜托了!急!

#include <cmath>
#include <iostream>
using namespace std;
void swap(double &a,double &b)
{
double temp=a;
a=b;
b=temp;
}

int InverseMatrix(double *matrix,const int &row)
{
double *m=new double[row*row];
double *ptemp,*pt=m;

int i,j;

ptemp=matrix;
for (i=0;i<row;i++)
{
for (j=0;j<row;j++)
{
*pt=*ptemp;
ptemp++;
pt++;
}
}

int k;

int *is=new int[row],*js=new int[row];

for (k=0;k<row;k++)
{
double max=0;
//全选主元
//寻找最大元素
for (i=k;i<row;i++)
{
for (j=k;j<row;j++)
{
if (fabs(*(m+i*row+j))>max)
{
max=*(m+i*row+j);
is[k]=i;
js[k]=j;
}
}
}

if (0 == max)
{
return 1;
}

//行交换
if (is[k]!=k)
{
for (i=0;i<row;i++)
{
swap(*(m+k*row+i),*(m+is[k]*row+i));
}
}

//列交换
if (js[k]!=k)
{
for (i=0;i<row;i++)
{
swap(*(m+i*row+k),*(m+i*row+js[k]));
}
}

*(m+k*row+k)=1/(*(m+k*row+k));

for (j=0;j<row;j++)
{
if (j!=k)
{
*(m+k*row+j)*=*((m+k*row+k));
}
}

for (i=0;i<row;i++)
{
if (i!=k)
{
for (j=0;j<row;j++)
{
if(j!=k)
{
*(m+i*row+j)-=*(m+i*row+k)**(m+k*row+j);
}
}
}
}

for (i=0;i<row;i++)
{
if(i!=k)
{
*(m+i*row+k)*=-(*(m+k*row+k));
}
}
}

int r;
//恢复
for (r=row-1;r>=0;r--)
{
if (js[r]!=r)
{
for (j=0;j<row;j++)
{
swap(*(m+r*row+j),*(m+js[r]*row+j));
}
}
if (is[r]!=r)
{
for (i=0;i<row;i++)
{
swap(*(m+i*row+r),*(m+i*row+is[r]));
}
}
}

ptemp=matrix;
pt=m;
for (i=0;i<row;i++)
{
for (j=0;j<row;j++)
{
*ptemp=*pt;
ptemp++;
pt++;
}
}
delete []is;
delete []js;
delete []m;

return 0;
}
void input(double *pData,int n)
{
cout<<"输入矩阵元素:"<<endl;
int i,j;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
cin>>pData[i*n+j];
}
}
}

void OutPut(double *pData,int n)
{
int i,j;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
cout<<pData[i*n+j]<<" ";
}
cout<<endl;
}
}
int main()
{
double *pData;
int n;
cout<<"输入矩阵的大小:";
cin>>n;
pData = new double[n*n];
input(pData,n);
cout<<"矩阵为:"<<endl;
OutPut(pData,n);
InverseMatrix(pData,n);
cout<<"逆矩阵为:"<<endl;
OutPut(pData,n);
delete []pData;
return 0;
}

Ⅱ 用c语言编写输出3*4的矩阵,求最后一个最小值并显示行号和列号

#include<stdio.h>

int main() {
const unsigned row=3, col=4;//定义行列数
unsigned minx, miny;//最小值的行列
int min;//最小值
int nums[row][col];
for (unsigned i = 0; i < row; i++)//录入数据
{
for (unsigned j = 0; j < col; j++)
{
scanf("%d",&nums[i][j]);
}
}
min = nums[0][0];//初始化最小值为第一行第一列的数
minx = 1;
miny = 1;
for (unsigned i = 0; i < row; i++)//遍历数组找出最小值
{
for (unsigned j = 0; j < col; j++)
{
if (nums[i][j] <= min)
{
min = nums[i][j];
minx = i+1;
miny = j+1;
}
}
}
printf("最小值为:%d,位于第%u行%u列", min, minx, miny);//输出数据
return 0;
}

Ⅲ 用C语言编程,输入一个3*4整数矩阵并且求各行元素之和和各列元素之和

1.
#include <stdio.h>
int main()
{
int a[3][4]={0};
int i,j,max,max_i,max_j;
printf("Please input a 3X4 matrix:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
max_i=max_j=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max)
{
max=a[i][j];
max_i=i;
max_j=j;
}
printf("The max is %d,row %,col %d\n",max,max_i,max_j);

}

2.
#include <stdio.h>
int main()
{
char a[100]={0};
int i,count=0;
printf("Please input a string:");
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]==' ')
count++;

printf("The string contents %d space\n",count);

}

Ⅳ 请大家帮忙用C语言编个程序,“有一个三乘四的矩阵,求编程求出其中值最大和最小的元素,输出其值及其所在

# include <stdio.h>
main()
{ int max,maxi,maxj,min,mini,minj,a[3][4],i,j;
printf("input numbers:\n');
for(i=0,i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=min=a[0][0];
for(i=0,i<3;i++)
for(j=0;j<4;j++)
{ if(a[i][j]>max)
{ max=a[i][j];
maxi=i+1;
maxj=j+1;
}
if(a[i][j]<min)
{ min=a[i][j];
mini=i+1;
minj=j+1;
}
}
printf("最大值为%d,在第%d行,第%d列;\n最小值为%d,在第%d行,第%d列。\n",max,maxi,maxj,min,mini,minj);
}
满意请采纳!

Ⅳ C语言:有一个3*4的矩阵,要求编写一个程序找出每一行中的最大值并与第一列交换

#include <stdio.h>
main(void)
{
int a[3][4],j,i,k,max=0,t;
for(j=0;j<3;j++)
for(i=0;i<4;i++)
scanf("%d",&a[j][i]);
for(j=0;j<3;j++)
{
for(i=0;i<4;i++)
if(max<a[j][i])
{
max=a[j][i];
k=i;
}
{t=a[j][k];a[j][k]=a[j][0];a[j][0]=t;}
}

printf("\n");
for(j=0;j<3;j++)
{
for(i=0;i<4;i++)
printf("%d ",a[j][i]);
printf("\n");
}
}

Ⅵ c语言编写一个程序,实现一个3×4矩阵转置。

思路:定了两个二维数组分别存储转置前后的矩阵,接着for循环依次转置即可。

//参考代码
#include<stdio.h>
intmain()
{
inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},b[4][3];
inti,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j];
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
printf("%2d",b[i][j]);
printf(" ");
}
return0;
}
/*
运行结果:
159
2610
3711
4812
*/