以下的题目均来自于牛客网
BC120

这个题目主要考察用循环将元素输入数组,并且进行排序
输入元素的代码很简单
int main() {
int arr[40] = { 0 };
int num = 0;
scanf("%d", &num);//输入几名
for (int k = 0; k <= num; k++) {//输入成绩
scanf("%d", &arr[k]);
}
输入后,则需要用一个变量tmp来作为载体进行俩俩的交换
默认第i位为最大值
int temp = 0;//进行交换
for(int i = 0; i < num; i++)
{//第i位为最大数
for(int j =i+1; j<num; j++)
{//从第i+1位开始遍历剩余数
if(arr[j] > arr[i])
//第一位和后边的数进行比较、第二位与后边、第三位......
//定一个数,后边的数进行比较,最后会有一个最小的数放在该位置,一个一个数遍历过去就能得到最大值
{//存在大于最大数的数
temp = arr[i];//把最大数和比较数进行交换
arr[i] = arr[j];
arr[j] = temp;
}
}
}
最后再打印
for (int k = 0; k < 5; k++)
printf("%d ", arr[k]);
return 0;
}
这道题的方法就是进行升序排序,且仅进行前五个的输出,那我们就选择用遍历的方法,每一轮都找出一个最小值,这样就可以实现升序的方法。
BC119

这道题,我们可能会想到用数组来储存这n个成绩,然后又进行排序,最后再选出最大值和最小值,进行计算。
但这样会显得特别的繁琐,那我们如何简化?——那就在输入成绩的同时,进行最大值和最小值的选择
#include <math.h>
#include <stdio.h>
int main()
{
int n;
int max=0,min=100;//最小值定为100,最大值定为0
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int num;
scanf("%d",&num);//输入的时候就进行定义,且进行比较
if(num>max)
{
max=num;
}
if(num<min)
{
min=num;
}
}
printf("%d",max-min);
return 0;
}