最高分与最低分之差输入n个成绩,换行输出n个成绩中最高分数和最低分数只差

您所在的位置:网站首页 最低分数差和最低分 最高分与最低分之差输入n个成绩,换行输出n个成绩中最高分数和最低分数只差

最高分与最低分之差输入n个成绩,换行输出n个成绩中最高分数和最低分数只差

2024-03-29 04:02| 来源: 网络整理| 查看: 265

两行,第一行为n,表示n个成绩,不会大于10000. 第二行为n个成绩(整数表示,范围为0~100),以空格隔开。 输出描述 一行,输出n个成绩中最后高分和最低分数的差。

//F1:假定max=0, min=100;

#include int main() { int n = 0; scanf("%d", &n); //输入n个值 int arr[100] = { 0 }; int i = 0; int max = 0; int min = 100; for (i = 0; i < n; i++) { scanf_s("%d", &arr[i]); if (max < arr[i]) { max = arr[i]; } if (min > arr[i]) { min = arr[i]; } } //输出 printf("%d", max - min); return 0; }

//F2:冒泡排序

//问题在于arr初始创建的数组大小是多少就是多少,不会由n决定,比如arr[10],但n=5

//输入成绩时arr[i]中存入的数据是:{99,98,97,95,91,0,0,0,0,0}

//所以输出的时候要格外注意,不能用首位减去末尾。除非初始定义的元素个数就等于输入n的数

#include void test(int* str, int sz) { int i = 0; for (i = 0; i < sz; i++) { int j = 0; for (j = 0; j < sz - i -1; j++) { if (str[j] < str[j + 1]) { int t = str[j]; str[j] = str[j + 1]; str[j + 1] = t; } } } } int main() { int n = 0; scanf_s("%d", &n); int arr[5] = { 0 }; int i = 0; for (i = 0; i < n; i++) { scanf_s("%d", &arr[i]); } int sz = sizeof(arr) / sizeof(arr[0]); test(arr, sz); int ret = arr[0] - arr[4]; printf("%d", ret); return 0; }

//F3:常规迭代找最大值和最小值

//这种方法跟冒泡排序最大不同处在于不用考虑数组大小,因为能直接找出来最大值和 最小值

#include int main() { //输入成绩有几个 int n = 0; scanf_s("%d", &n); int arr[10] = { 0 }; //输入n个成绩 int i = 0; for (i = 0; i < n; i++) { scanf_s("%d", &arr[i]); } int max = arr[0]; for (i = 0; i < n; i++) { if (max < arr[i]) { max = arr[i]; } } int min = arr[1]; for (i = 0; i < n; i++) { if (min > arr[i]) { min = arr[i]; } } int ret = max - min; printf("%d", ret); return 0; }

还有一种求法是假定第一个元素值是最大值或最小值,然后从最后一位开始比较递减,交换也可以求出来。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3