Ⅰ 求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
*/