例1:键盘输入任意10个整数,找出最大数。
解析如下:
这个题目可以用我们前面介绍的打擂台的方法来做:先输入一个数作为擂主,然后,从第二个数开始,每输入一个数都跟擂主比较,如果大于擂主,则记住该数,使该数成为新擂主,否则擂主不变……
代码如下:
#include<stdio.h>
int main()
{int n, max, i;
scanf(“%d”, &n); //输入第一个数
max = n; //第一个数作擂主
for(i = 2; i <= 10; i++){
scanf(“%d”, &n);
if(n > max) //若n是更大的数
max = n; //n成为擂主*/
}
printf(“最大数是:%d\n”, max);
getch();
return 0;
}
例2:键盘输入任意10个数,找出最大数的序号。比如,若键盘输入4,6,7,3,5,9,8,0,1,2,则程序输出6 (第6个数最大)。
解析如下:
这个题目与例3.8类似,唯一不同的是要求输出最大数的序号而不是最大数的值。程序依然可以用打擂台的方法,但是在每个数与擂主比较的时候,若新数大于max,则要:
(1)记住这个数,使这个新数成为擂主(以便后面的数跟这个“新擂主”比较)。
(2)记住这个新擂主的序号。
代码如下:
#include<stdio.h>
int main()
{int n, max, k, i; //k用来记录最大数的序号
scanf(“%d”,&n);
max = n; //第一个数作为擂主
k = 1; //目前第一个数最大,记录其序号
for(i = 2; i <= 10; i++){ //从第二个数开始打擂
scanf(“%d”, &n);
if(n > max){
max = n;
k = i; //记录新擂主的序号
}
}
printf(“最大数的序号是:%d\n”, k);
getch();
return 0;
}
程序的关键点在于:若新数大于擂主,既要记录这个数,又要记录它的序号。