#include<stdio.h>
#include<windows.h>
int main()
{
int arr[10] = {1,5,6,3,4,2,4,5,3,4}//创建一个数组,然后放入10个数
int max = 0//定义一个数max,用来放打擂后的擂主
int i = 0//定义一个数i,循环来遍历数组
int num = 0//定义第几个数
while (i <= 9) {
if (arr[i] >max) {
max = arr[i]//当打擂成功时,将较大数赋值给max,作为新的擂主
num = i
}
i++//每次循环结束后给i加1,达到数组遍历的目的
}
printf("这10个数中最大的数为:%d,排在第%d位", max,num+1)
system("pause")
return 0
}
扩展资料:
if (max(m,a[i])>m),比较条件错误。
此时的比较条件,应该是擂主的数字和当前循环的数字进行比较,如果当前循环的数字比较大,则把擂主数字替换掉。反之,继续循环数字比较。
max(m,a[i])>m,先把m和a[i]比较一次,再把此次的结果和m比较一次。比较的动作进行了两次,是不对的。
if...else...:
if 和 else 是两个新的关键字,if 意为“如果”,else 意为“否则”,用来对条件进行判断,并根据判断结果执行不同的语句。总结起来,if else 的结构为:
if(判断条件){
语句块1
}else{
语句块2
}
打擂法排序与选择排序不是一回事,但前者是后者的改进,打擂法排序也并不是什么冒泡排序,在一些教科书中称之为树形选择排序(注意不是排序树),也叫锦标赛排序、胜者树。思路类似于打擂台,打胜者进入下一轮,最后一场胜者是冠军,败者是亚军。这个问题涉及数组问题和循环语句,明确“打擂台”算法可以快速写出。利用计算机在一批数中找出最大值的一般方法为:
1.将数据存入一个一维数组中,例如存入a数组中。
2.在数组中找最大值(假设用变量max存放最大数)。
(1)首先将a[0]视为最大数,即首先使max=a[0]。
(2)将除a[0]之外的其他元素(用a[i]表示)逐个与max比较,若a[i]>max,则a[i]为目前的最大数,使max=a[i]。在所有元素比较完之后,max即为最大数。
3.输出最大数(max的值)。
具体程序为:
#include<stdio.h>
int
main()
{int
i,max,data[10]//定义3个变量
for(i=0i<10i++)
scanf("%d",&data[i])
//输入10个整数
//打擂台算法,就是假设第一个数据是最大,并赋给max,然后看后面的数是否有
//大于max的,如果有,则将该数赋给max
,这样始终在max中存放最大的数。
max=data[0]
for(i=1i<10i++)//输入循环体
{ if(data[i]>max)
max=data[i]}
printf("\nmax
num
is:%d",max)//输出最大数
return
0}
扩展资料:
所谓打擂台法,就是一种求最大值的方法,依次读入数据,按先后顺序存入一个变量,后读入的数与前面读入的数比,输出较大的一个。
例子:
var
a,b,temp:integer
begin
temp:=0readln(a,b)temp:=a
if
b>=temp
then
temp:=b,else
temp:=a
writeln(temp)
end.
因为像打擂台的时候一个一个上,赢得留下,输的下去,所以被称之为打擂台法。
参考资料:打擂台法_百度百科
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)