① 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;
}