-
题目描述:
-
对输入的n个数进行排序并输出。
-
输入:
-
输入的第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数。
-
输出:
-
可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。
每组测试数据的结果占一行。
-
样例输入:
-
4 1 4 3 2
-
样例输出:
-
1 2 3 4
代码:
#include <stdio.h>
#include <algorithm>
using namespace std;
int main() {
int n;
int a[100];
int i;
while(scanf("%d",&n)!=EOF) {
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
for(i=0;i<n-1;i++)
printf("%d ",a[i]);
printf("%d\n",a[i]);
}
return 0;
}
本题注意要点:
1.使用了c++库中的sort函数,头文件中需要包含algorithm(没有.h),并加上using namespace std;(注意有";")。
sort函数的两个参数代表待排序内存的起始地址和结束地址,第三个参数可选,代表排序的函数,默认为升序排列。
可以定义一个cmp函数,来实现对新的排序规则的定义。当cmp返回值为true时,即表示第一个参数是否比第二个参数大,若是,则排在前面。
所以如果要降序排列可以像这样:
bool cmp(int x,int y) {
return x>y;
}
sort(buf,buf+n,cmp);
对于排序的题目,推荐使用sort函数,简单易懂。
2.对于
while(scanf("%d",&n)!=EOF)
scanf是有返回值的,它返回的是被输入函数成功赋值的变量个数。本例中即返回1,不等于EOF(-1),循环条件成立。
BTW:若输入为字符串,可使用
while(gets(字符串变量))