算法介绍:思考一下在打擂台时怎样确定最后的优胜者。先找出任一人站在台上,第2人上去与之比武,胜者留在台上。再上去第3人,与台上的人(即刚才的得胜者)比武,胜者留台上,败者下台。以后每一个人都是与当时留在台上的人比武。直到所有人都上台比过为止,最后留在台上的人就是冠军。这就是“打擂台算法”。
解题思路:先让第一个数a[0]作“擂主”,把它的值赋给变量max,max用来存放当前已知的最大值,在开始时还未进行比较,把最前面的值暂时认为是最大的。然后让下一个数a[1]与max比较,如果a[1]>max,则表示a[1]是已经比过的数据中值最大的,把它赋值给max,取代了max的原值。以后依次处理,值大的赋给max。直到全部比完后,max就是最大的值。
编写程序:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a[10], i;
int max;
printf("输入十个数:\n");
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
for (i = 0; i < 10; i++)
{
if (i == 0)
max = a[i];
else
if (max < a[i])
max = a[i];
}
printf("最大值为%d", max);
return 0;
}
运行结果: