用c语言计算最大数

给出10个数,要求将它们之中的最大数得出来

第一种方法是利用冒泡排序的原理,详情可见https://blog.csdn.net/Djldqc/article/details/128193453?spm=1001.2014.3001.5501

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

int main(void)
{
	int arr[10] = { 2,9,6,4,10,3,8,7,5,1 };//自定义数组,也可scanf自定义

	int c = 0;
	int max = 0;//最大值
	int x = 0;//相当于下标
	int h = 0;//暂存值

	for (c = 1; c < 10; c++)//10个数比较9轮
	{
		for (x = 0; x < 10 - c; x++)//相当于下标,为什么有九个数下标只有八个,因为if语句中x+1相当于访问了最后一位数的下标
		{							//因为之前几轮中已经把最大值换算到了左边,所以之后几轮不用访问就知道右边是最小值,所以10-c省去多余计算,让它只判断未比较过的值
			if (arr[x] < arr[x + 1])
			{
				if (max < arr[x + 1])//if语句判断最大值
				{
					max = arr[x + 1];
				}

				h = arr[x + 1];
				arr[x + 1] = arr[x];
				arr[x + 1] = h;
			}
		}
	}
	printf("%d\n", max);
	return 0;
}//麻烦,只可计算正数,如果计算负数则max初始值0就是最大的了,要计算也可以,最开始把max赋值为数组中的某一元素,让他们相比较

这种方法太过繁琐,不推荐

第二种利用循环比较

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

int main(void)
{
	int arr[10] = { -3,-5,-8,-7,-4,-1,-2,-6,-10,-9 };//自赋初始值scanf

	int max = arr[0];//初始赋值数组中某一元素,也可以比较负数
	int x = 0;//下标

	for (x = 0; x < 10; x++)//下标从零开始,十个数跟max比10次
	{
		if (arr[x] > max)//比较
		{
			max = arr[x];
		}
	}
	printf("%d\n", max);
}

注意这种方法把最大值赋给了数组中其中一个数,如果赋初始值0,0肯定比负数大,这样就无法比较,就相当于拿一群普通人去跟一个无限发马克沁机枪的人比较一样,结果显而易见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值