用“打擂台法”输出10个数最大值及第几个数,c语言。

用“打擂台法”输出10个数最大值及第几个数,c语言。,第1张

#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.

因为像打擂台的时候一个一个上,赢得留下,输的下去,所以被称之为打擂台法。

参考资料:打擂台法_百度百科


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11484595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存