C语言找出马鞍山数?

题目 ,马鞍山数是指在一个矩阵中,这个数在所在行中最大,在所在列中最小

首先根据题目的要求我们构造以下的函数,这几个都是我们下面需要用到的函数

void creat_data(int data[][20],int x,int y);  //创建一个矩阵,
void printf_data(int data[][20],int x,int y);  //输出矩阵
int fin_x(int data_x[20],int data[][20],int x,int y); //找出矩阵每行最大元素下标
void printf_x(int data_x[20],int x);  //输出每行下标 便于肉眼观察 核对结果
void fin_m_a_s(int data_x[20],int data[][20],int x,int y); //找出马鞍上数字

(1):创建一个矩阵


void creat_data(int data[][20],int x,int y)
{

	int j,k;

	for(j=0;j<x;j++)
	{
		for(k=0;k<y;k++)
		{
			data[j][k]=rand() % (99-1+1)+1;
		}
	}
}

(2):输出矩阵

void printf_data(int data[][20],int x,int y)
{
	int j,k;
	for(j=0;j<x;j++)
	{
		for(k=0;k<y;k++)
		{
			printf("%-3d",data[j][k]);
		}
		printf("\n");
	}
}

3:找出最小的x坐标

int fin_x(int data_x[20],int data[][20],int x,int y)
{
	int j,k,max;
	for(j=0;j<x;j++)
	{
		max=data[j][0];
		for(k=0;k<y;k++)
		{
			if(max<data[j][k])
			{
				max=data[j][k];
				data_x[j]=k;
			}
		}
	}
	return j;
}

4:找出马鞍山数


void fin_m_a_s(int data_x[20],int data[][20],int x,int y)
{
	int min,j,k;
	for(j=0;j<x;j++)
	{
		min=data[j][data_x[j]];	 
		for(k=0;k<x;k++)
		{
			if(min>data[k][data_x[j]])  
			{
			   min=data[k][data_x[j]];
			   break;
			}
		}
		if(data[j][data_x[j]] != min)
		{
	
			printf("第%d行马鞍山数为:NULL\n",j);
		
		}
		else
		{
	    	printf("第%d行马鞍山数为: %d\n",j,min);
		}
	}
}

6:马鞍山数调用


void main()
{
	int x,y;
	int data[20][20]={0},data_x[20]={0},data_m_a_s[20]={0};
	srand(time(NULL));
	printf("input X:\n");
	scanf("%d",&x);
	printf("input Y:\n");
	scanf("%d",&y);
	creat_data(data,x,y);
	printf("printf data:\n");
	printf_data(data,x,y);
	fin_x(data_x,data,x,y);
	printf("printf_x_data\n");
	printf_x(data_x,x);
	printf("end_data_end\n");
	fin_m_a_s(data_x,data,x,y);

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值