⑴ 求教:c語言求矩陣的鞍點問題
// 下面是你的代碼 我加了個 注釋
#include <stdio.h>
void main()
{
while(1)
{
int a[4][4];
int j,i,m,t,x,y;
printf("please input sixteen numbers:\n");
for(j=1;j<=4;j++)
for(i=1;i<=4;i++)
scanf("%d",&a[j-1][i-1]);
printf("\n");
for(j=1;j<=4;j++)
{
if(a[j-1][0]>=a[j-1][1])
m=a[j-1][0];
else
m=a[j][1]; // 這里出問題了 應該是 m = a[j-1][1];
for(i=3;i<=4;i++)
if(a[j-1][i-1]>=m)
m=a[j-1][i-1];
for(x=1;x<=4;x++)
{
if(a[j-1][x-1]==m)
{
if(a[0][x-1]<=a[1][x-1])
t=a[0][x-1];
else
t=a[1][x-1];
for(y=3;y<=4;y++)
if(a[y-1][x-1]<=t)
t=a[y-1][x-1];
if(m==t)
printf("此數列的鞍點為元素a[%d][%d],對應數值大小為 %d\n",j-1,x-1,m);
}
}
}
}
}
⑵ c語言 求二維數組的鞍點
#include<stdio.h>
#define N 3
#define M 4
int main()
{
int i,j,k,max,min;
int array[N][M];
printf("請輸入數組元素: ");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
scanf("%d",&array<i>[j]);
}
printf("數組有: ");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%-5d ",array<i>[j]);
printf(" ");
}
for(i=0;i<N;i++)
{
max=array<i>[0];//用列來進行當前行來比較
for(j=0;j<M;j++)
{
if(max<array<i>[j])
max=array<i>[j];
k=j;//記錄下當前一行中最大的小標
}
min=array[0][k];
for(j=0;j<N;j++)//用行來進行列比較
{
if(min>array<i>[k])//若在該列中有更小的,則賦值與min
min=array<i>[k];
}
if(min==max)
{
printf("小標為%d,%d,鞍點為:%d",i+1,k,max);
}
}
printf("搜索結束 ");
return;
}
(2)c語言矩陣中的馬鞍點擴展閱讀:
define作用
被定義為「宏」的標識符稱為「宏名」。在編譯預處理時,對程序中所有出現的「宏名」,都用宏定義中的字元串去代換,這稱為「宏代換」或「宏展開」。宏定義是由源程序中的宏定義命令完成的。宏代換是由預處理程序自動完成的。
宏定義的作用范圍僅限於當前文件,即file1.c中定義#define PI 3.14,在file2.c中該宏定義不起作用;
通過將#define PI 3.14定義在common.h中,file1.c和file2.c分別#include"common.h"的方式,該宏定義在file1.c和file2.c中都起作用。
在C或C++語言中,「宏」分為有參數和無參數兩種。
⑶ c語言編程 找出一個二維數組中的鞍點
你那個-8XXXXX是地址值,
#include "stdio.h"
main()
{
int x=0,y=0,t=0,index=0;
int s[3][4];
for(;x<3;x++)
{
for(y=0;y<4;y++)
{
scanf("%d",&t);
s[x][y]=t;
}
}
for(x=0;x<3;x++)
{
for(y=0;y<3;y++)
{
index=s[x][y]>s[x][y+1]?y:y+1;
}
if(s[x][index]<=s[0][index]&&s[x][index]<=s[1][index]&&s[x][index]<=s[2][index])
{
printf("%dddd\n",s[x][index]);
return;
}
}
printf("NO",s[x][index]);
}
⑷ c語言 求矩陣鞍點
啥是鞍點?
⑸ c語言中,由鍵盤輸入一個3×4(3行4列)的矩陣,輸出矩陣中的鞍點(即在矩陣中行中最大,列中最小的
int main(){
int a[3][4];
int i,j,k,n,max1,max2;
printf("input: ");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++){
max1=0;
max2=0;
k=0;
for(j=0;j<4;j++){
if(a[i][j]>max1){
max1=a[i][j];
k=j;
}
}
printf("行最大值max1:%d ",max1);//1.求出行中最大值
max2=max1;
for(n=0;n<3;n++){
if(a[n][k]<max2){
max2=a[n][k];
}
}
printf("列最小值max2:%d ",max2); //2.求出行最大值的那一列的最大值
if(max1==max2){
printf("鞍:%d ",max1);
}else{
printf("NO ");
}//3.判斷是否是同一個值
}
}
⑹ C語言求二維數組的鞍點
前面xoaxa的回答挺正確的,只是在後面輸出鞍點的時候出錯了,應該把行列位置交換下,求min時的得出位置是行的位置,求max時得出的是所在列的位置。
⑺ c語言問題 找矩陣中的鞍點
#include <stdio.h>
#define N 3
#define M 4
void main()
{
int i,j,k,a[N][M];
int max,maxj,flag;
printf("Please input matrix:\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
{
max=a[i][0];
maxj=0;
for(j=0;j<M;j++)
if(a[i][j]>max)
{max=a[i][j];
maxj=j;
}
flag=1;
for(k=0;k<N;k++)
if(max>a[k][maxj])
{flag=0;
continue;
}
if(flag)
{printf("a[%d][%d]=%d\n",i,maxj,max);
break;}
}
if(!flag)
printf("NO!");
}
⑻ C語言求任意數M*N矩陣的鞍點
#include <stdio.h>
main()
{
int a[100][100];
int m,n,i,j,sign;
printf("input m and n:\n");
scanf("%d%d",&m,&n);
printf("Input the array:\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<m;i++)
{
for(sign=0,j=1;j<n;j++)
if(a[i][sign]<a[i][j])
sign=j;
for(j=0;j<m;j++)
if(a[i][sign]>a[j][sign])
break;
if(j>=m)
printf("鞍點:%d\n",a[i][sign]);
}
}
//調試成功
⑼ C語言尋找矩陣的鞍點
1、鞍點為矩陣元素所在行的最大值,以及所在列的最小值。
⑽ 求一個5×5矩陣馬鞍點的C語言程序
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#defineM50
#defineN50
intmain(void){
inti,j,k,T,max,jmax,flag,f;
inta[M][N],m,n;
srand((unsigned)time(NULL));
scanf("%d",&T);//測試次數
while(T--){
scanf("%d%d",&m,&n);//二維數組維度
for(i=0;i<m;++i){//產生二維數組元素
for(j=0;j<n;++j){
a[i][j]=rand()%1000;
printf("%04d",a[i][j]);
}
printf("
");
}
f=1;
for(i=0;i<m;++i){
max=a[i][0];
jmax=0;
for(j=1;j<n;++j){//找出i行最大的
if(max<a[i][j]){
max=a[i][j];
jmax=j;//且記錄所在的列坐標
}
}
flag=1;//預置標志
for(k=0;k<m&&flag;++k){//判斷max是否為所在列最小的
if(a[k][jmax]<max)//不是
flag=0;//則清標志
}
if(flag==1){//有鞍點
printf("鞍點:a[%d][%d]=%d
",i,jmax,a[i][jmax]);
f=0;
//break;
}
}
if(f)printf("沒有鞍點。
");//沒有鞍點
}
return0;
}