[蓝蓝计算机考研算法]-day9 5个数求最值&ASCII码排序

276 阅读1分钟

5个数求最值

设计一个从5个整数中取最小数和最大数的程序。

输入描述

输入只有一组测试数据,为五个不大于1万的正整数。

输出描述

输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格隔开。

思路

  • 主要是考排序算法的。将一组数据进行排序,然后输出头尾的值,即为最大或最小的。

  • 本题用冒泡排序,外层控制排序趟数,为n-1趟。内层为第一个数与之后的所有数进行比较、交换。

具体实现

#include<bits/stdc++.h>
using namespace std;
int main(){ 
	int a[5];
	for(int i=0; i<5; i++){
		cin>>a[i];
	} 
	for(int i=0; i<4; i++) //控制n-1趟冒泡 
		for(int j=0; j<4-i; j++){
			if(a[j]>a[j+1]){ //比较相邻两个元素 
			int temp=a[j]; //交换 
			a[j]=a[j+1];
			a[j+1]=temp;
		} 
	}
	cout<<a[0]<<" "<<a[4];
	return 0; 
} 

ASCII码排序

输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。

输入描述

第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。

输出描述

对于每组输入数据,输出一行,字符中间用一个空格分开。

思路

字符也可以比较大小,是通过其ASCII的值来判断大小,所以直接比较即可。

具体实现

#include<bits/stdc++.h>
using namespace std;
int main(){ 
	int n;
	cin>>n; //n组数据 
	for(int i=0; i<n; i++){
		char a,b,c,d;
		cin>>a>>b>>c;
		if(a>b){ //比较大小,并交换 
			d=a;a=b;b=d;
		}
		if(a>c){
			d=a;a=c;c=d;
		}
		if(b>c){
			d=b;b=c;c=d;
		}
		cout<<a<<" "<<b<<" "<<c<<endl;
	} 
	return 0; 
} 

小结

  • 掌握常用的排序算法的书写!

  • 字符也可以比较大小,它们是以ASCII值的大小作为比较的标准。