13、5个数求最值
设计一个从5个整数中取最小数和最大数的程序
- 输入 输入只有一组测试数据,为五个不大于1万的正整数
- 输出 输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开。
思路
采用了“抽取”的思想,先默认第一个数最小值和最大值,然后依次遍历,分别对比往后的每个数字,最大值用max记录,最小值用min记录。
具体实现
#include <stdio.h>
int main() {
int a[5], max, min;
scanf("%d %d %d %d %d", &a[0], &a[1], &a[2], &a[3], &a[4]);
max = a[0];
min = a[0];
for(int i=1; i<5; i++) {
if(a[i] > max) {
max = a[i];
}
if(a[i] < min) {
min = a[i];
}
}
printf("%d %d\n", min, max);
return 0;
}
14 、ASCII码排序
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
- 输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
- 输出 对于每组输入数据,输出一行,字符中间用一个空格分开。
思路
输入n之后进行循环,每次循环进行判断,对读取字符进行排序(ACSII码的大小)。
具体实现
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
while (n--) {
char a, b, c;
scanf(" %c %c %c", &a, &b, &c);
if (a > b) {
char tmp = a;
a = b;
b = tmp;
}
if (a > c) {
char tmp = a;
a = c;
c = tmp;
}
if (b > c) {
char tmp = b;
b = c;
c = tmp;
}
printf("%c %c %c\n", a, b, c);
}
return 0;
}
小结
这两次算法都有排序的内容在其中,可以看做是两种思想,如果是只求最大值、最小值,可以用第一种思路,如果是要按序排列,则用第二种思想。