这个问题涉及数组问题和循环语句,明确“打擂台”算法可以快速写出。
利用计算机在一批数中找出最大值的一般方法为:
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=0;i<10;i++)
scanf("%d",&data[i]); //输入10个整数
//打擂台算法,就是假设第一个数据是最大,并赋给max,然后看后面的数是否有
//大于max的,如果有,则将该数赋给max ,这样始终在max中存放最大的数。
max=data[0];
for(i=1;i<10;i++)//输入循环体
{ if(data[i]>max)
max=data[i];}
printf("\nmax num is:%d",max);//输出最大数
return 0;}
扩展资料:
所谓打擂台法,就是一种求最大值的方法,依次读入数据,按先后顺序存入一个变量,后读入的数与前面读入的数比,输出较大的一个。
例子:
var a,b,temp:integer;
begin temp:=0;readln(a,b);temp:=a;
if b>=temp then temp:=b,else temp:=a;
writeln(temp);
end.
因为像打擂台的时候一个一个上,赢得留下,输的下去,所以被称之为打擂台法。
参考资料:打擂台法_百度百科
#include<stdio.h>
main()
{
int i,a,b;
int max,min;
int max=0,min=0;
printf("please input 10 numbers:");
scanf("%d",&a);
max = a;
min = a;
for(i=2;i<=10;i++)
{
scanf("%d",&a);
if(a>max)
max=a;
if(b<min)
min=a;
}
printf("max=%d\n,max);
}
扩展资料:
使用其他方法找出10个数中的最大值并且输出:
#include "stdio.h"
//从键盘输入10个数存入一维数组,求这10个数中的最大值并输出
int main()
{
int i;
float max,min,num[10];
printf("请输入10个数,每输入一个数按回车键结束:\n");
for(i=0;i<10;i++){
scanf("%f",&num[i]);
}
max=num[0];
for(i=1;i<10;i++)
{
if(max<num[i])
max=num[i];
else if(min>num[i])
min=num[i];
}
printf("最大为:%f\n,max);
return 0;
# include <stdio.h>
int main(void)
{
int a[10];
int b;
int c = 0; //这个数记录的是最大值。给赋值为0也是个bug。应该赋值输入十个数的第一个数。
printf("输入十个数\n");
for(b=0;b<10;b++)
{
scanf("%d",&a[b]);
if(c<a[b]) c=a[b]; //把c和每个输入的数字进行比较,如果大于c,让c记录它的值,最后记录下来的值就是最大值了。
}
printf("最大值%d\n",c);
return 0;
}
int main()
{
int i,max,data[10];
for(i=0;i<10;i++)
scanf("%d",&data[i]); //输入10个整数
//打擂台算法,就是假设第一个数据是最大,并赋给max,然后看后面的数是否有
//大于max的,如果有,则将该数赋给max ,这样始终在max中存放最大的数。
max=data[0];
for(i=1;i<10;i++)
{
if(data[i]>max)
max=data[i];
}
printf("\n最大数是:%d",max);
return 0;
}
data[10]这个什么意思 []这个在c语言怎么用