当前位置:首页 » 编程语言 » c语言读入矩阵求最大值
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言读入矩阵求最大值

发布时间: 2023-01-07 12:32:21

c语言编程:一个2*3矩阵,求最大值,最小值

思路:先把矩阵的第一个数赋值给最大值和最小值,接着遍历整个矩阵依次和最大值和最小值比较,更新最大值和最小值,最后输出最大值和最小值。

参考代码:

#include"stdio.h"
intmain()
{
inta[2][3]={{5,1,2},{6,9,4}},max,min,i,j;
max=min=a[0][0];
for(i=0;i<2;i++)
for(j=0;j<3;j++){
if(a[i][j]>max)max=a[i][j];
if(a[i][j]<min)min=a[i][j];
}
printf("最大值为:%d,最小值为:%d ",max,min);
}
/*
运行结果:
最大值为:9,最小值为:1
*/

② 【c语言编程】矩阵求最大值或最小值并返回它所在的行号与列号

#include<stdio.h>
voidmain()
{
inti,j,minv,mini,minj,sum=0;
inta[4][4];
printf("请输入矩阵中的16个数: ");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
minv=a[0][0];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
if(a[i][j]<minv)
{
minv=a[i][j];
mini=i+1;
minj=j+1;
}
if(i==j)
sum+=a[i][j];
}
printf("矩阵中最小值为%d,它在第%d行,%d列! ",minv,mini,minj);
printf("矩阵中对角线元素之和为%d",sum);
}

你需要动态的可以这样写:

#include<stdio.h>
#include<stdlib.h>
voidmain()
{
inti,j,minv,mini=1,minj=1,sum=0,h,l;
printf("请输入矩阵的大小:");
scanf("%d%d",&h,&l);
int**a=(int**)malloc(sizeof(int*)*h);
for(i=0;i<l;i++)
a[i]=(int*)malloc(sizeof(int)*l);
printf("请输入矩阵中的%d个数: ",h*l);
for(i=0;i<h;i++)
for(j=0;j<l;j++)
scanf("%d",&a[i][j]);
minv=a[0][0];
for(i=0;i<h;i++)
for(j=0;j<l;j++)
{
if(a[i][j]<minv)
{
minv=a[i][j];
mini=i+1;
minj=j+1;
}
}
printf("矩阵中最小值为%d,它在第%d行,%d列! ",minv,mini,minj);
minv=a[0][0];
for(i=0;i<h;i++)
for(j=0;j<l;j++)
{
if(a[i][j]>minv)
{
minv=a[i][j];
mini=i+1;
minj=j+1;
}
}
printf("矩阵中最大值为%d,它在第%d行,%d列! ",minv,mini,minj);
}

③ c语言编程求矩阵的最大值,最小值及所在的位置

#include<stdio.h>
int a[9][9]={{5,15,9,16,7,10,2,6,3,20}};

//最大值函数声明
int getmax(int *,int *);

//最小值函数声明
int getmin(int *,int *)

//主函数
void main(void)
{
int imax,jmax,imin,jmin;

printf("矩阵最大值为%d,位置为%d行,%d列;",getmax(&imax,&jmax),imax,jmax);

printf("最小值为%d,位置为%d行,%d列;",getmin(&imin,&jmin),imin,jmin);

printf("正对角线和为%d!",getlsum());

printf("反对角线和为%d!",getrsum());
}

//求最大值函数
int getmax(int * imax,int * jmax)
{
int max=0;
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
{
if(a[i][j]>max)
{
*imax=i;
*jmax=j;
max=a[i][j];
}
}
return max;
}

//求最小值函数
int getmin(int * imin,int * jmin)
{
int min=65535;
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
{
if(a[i][j]<min)
{
*imin=i;
*jmin=j;
min=a[i][j];
}
}
return min;
}

//求正对角线和函数
int getlsum()
{
int sum=0;
for(int i=0;i<9;i++)
sum+=a[i][i];
return sum
}

//求反对角线和函数
int getrsum()
{
int sum=0;
for(int i=0;i<9;i++)
sum+=a[i][9-i];
return sum;
}
程序写好了,放在一起的,公用一个主函数,如果不要显示哪个功能就把哪块干掉,如果这你都不会我就没办法了!!!

④ C语言题:输入一个4*4的矩阵,求出其最大值,最小值及下标

#include<stdio.h>
#include<conio.h>

#defineARR_LEN255/*数组长度上限*/

/*录入矩阵内容*/
voidinputMatrix(intmatrix[ARR_LEN][ARR_LEN],introw,intcol){
inti,j;
printf("请输入%d行%d列的矩阵: ",row,col);
for(i=0;i<row;i++){
printf("第%d行:",i+1);
for(j=0;j<col;j++){
scanf("%d",&matrix[i][j]);
}
}
putchar(' ');
}

/*打印矩阵内容*/
voidprintMatrix(intmatrix[ARR_LEN][ARR_LEN],introw,intcol){
inti,j;
for(i=0;i<row;i++){
for(j=0;j<col;j++){
printf("%d ",matrix[i][j]);
}
putchar(' ');
}
putchar(' ');
}

/*计算处理矩阵内容*/
intcalcMatrix(intmatrix[ARR_LEN][ARR_LEN],introw,intcol){
intmax,min,maxI,maxJ,minI,minJ;
inti,j;

max=min=matrix[0][0];
maxI=maxJ=minI=minJ=0;
for(i=0;i<row;i++){
for(j=0;j<col;j++){
if(matrix[i][j]>max){/*求最大值*/
max=matrix[i][j];
maxI=i;
maxJ=j;
}
if(matrix[i][j]<min){/*求最小值*/
min=matrix[i][j];
minI=i;
minJ=j;
}
}
}

printf("最大值: matrix[%d][%d]=%d ",maxI,maxJ,max);
printf("最小值: matrix[%d][%d]=%d ",minI,minJ,min);
putchar(' ');

return1;
}

intmain(void){
intmatrix[ARR_LEN][ARR_LEN];
introw,col;
row=4;col=4;
inputMatrix(matrix,row,col);/*录入矩阵内容*/
calcMatrix(matrix,row,col);/*计算处理矩阵内容*/

putchar(' ');
getch();
return0;
}

⑤ C语言,输入一个矩阵,找出所在行上最大,列上最小的数。(可能没有) 可能定义出错,求大虾指教!!!!

以下是求每一行上最大、每一列上最小的程序:
#include<stdio.h>
main()
{
inti,j,k,l,min,max;
printf("请输入矩阵的规格: ");
scanf("%d,%d",&i,&j);
printf("这是一个%d乘%d的矩阵 ",i,j);
inta[i][j];
printf("请输入该矩阵: ");
for(k=0;k<i;k++)
for(l=0;l<j;l++)
scanf("%d",&a[k][l]);
for(k=0;k<i;k++)
{
max=a[k][0];
for(l=0;l<j;l++)
{
if(a[k][l]>max)
max=a[k][l];
}
printf("第%d行的最大值%d ",k+1,max);
}
for(l=0;l<j;l++)
{
min=a[0][l];
for(k=0;k<i;k++)
{
if(a[k][l]<min)
min=a[k][l];
}
printf("第%d列的最小值%d ",l+1,min);
}

}

不过题目的意思应该不是这样的。应该是“找出所在行上最大,同时又是列上最小的数”。
#include<stdio.h>
main()
{
inti,j,k,l,min,max,t1,t;
printf("请输入矩阵的规格: ");
scanf("%d,%d",&i,&j);
printf("这是一个%d乘%d的矩阵 ",i,j);
inta[i][j];
printf("请输入该矩阵: ");
for(k=0;k<i;k++)
for(l=0;l<j;l++)
scanf("%d",&a[k][l]);
for(k=0;k<i;k++)
{
max=a[k][0];
for(l=0;l<j;l++)
{
if(a[k][l]>max)
{
max=a[k][l];
t1=l;
}
}
t=1;
for(l=0;l<i;l++)
{
if(a[l][t1]<max)
{
t=0;
}
}
if(t)
printf("第%d行%d列的值%d为行上最大、列上最小 ",k+1,t1+1,max);
}
}

⑥ C语言矩阵的最大值

#define ROW 3
#define COL 4
int main()
{
/*定义一个矩阵*/
int a[ROW][COL];
int i=0;
int j=0;
int maxValue=0;

/*矩阵赋值*/
for (i=0;i<ROW;i++)
{
for (j=0;j<COL;j++)
{
printf("请输入%i行%d列的值:",i+1,j+1);
scanf("%d",&a[i][j]);
}
}
maxValue = a[0][0];

for (i=0;i<ROW;i++)
{
for (j=0;j<COL;j++)
{
if (maxValue<a[i][j])
{
maxValue=a[i][j];
}
}
}

printf("矩阵的最大值是:%d\n",maxValue);

return 0;
}

⑦ C语言编程:输入一个M*N的整数矩阵,求其最大值及其所在的行号、列号。(M、N由键盘输入)

#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,m,n,*array;
printf("请输入矩阵行数:");
scanf("%d",&m);
printf("请输入矩阵列数:");
scanf("%d",&n);
array=(int*)malloc(m*n*sizeof(int));
printf("请输入该%d*%d矩阵:\n",m,n);
for(i=0;i<m*n;i++)
scanf("%d",&array[i]);
int max=array[0];
int index=0;
for(i=1;i<m*n;i++)
{
if(max<array[i])
{
max=array[i];
index=i;
}
}
printf("您输入的矩阵中的最大值为:%d\n",max);
printf("它所在的行号和列号分别是:%d,%d\n",(index/n)+1,(index%n)+1);
return 0;
}

⑧ C语言编程:输入一个M*N的整数矩阵,求其最大值及其所在的行号、列号,验证结果

#include<stdio.h>

intmain(){
introw,column;
inti,j,m,n,max;
intarray[64][64];
scanf("%d%d",&m,&n);
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&array[i][j]);
}
}
max=array[0][0];
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(array[i][j]>max){
max=array[i][j];
row=i+1;
column=j+1;
}
}
}
printf("最大值是%d,在第%d行,%d列 ",max,row,column);
return0;
}