1264 - C语言10.34
用指向指针的指针的方法对n个整数从小到大排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,经过函数排序后在主函数中输出。
题目输入
第一行有一个整数n,保证n不超过100。
第二行有n个整数,用空格隔开。
题目输出
在一行内输出从小到大有序的n个整数,每个整数后输出一个空格。
请注意行尾输出换行。
输入/输出样例
题目输入
10 1 3 5 7 9 2 4 0 8 6
题目输出
0 1 2 3 4 5 6 7 8 9
C语言解答
#include<stdio.h> int main() { int i,j,n,k,t; int a[100]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",a+i); for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(a[k]>a[j]) k=j; if(k!=i) {t=a[i];a[i]=a[k];a[k]=t;} } for(i=0;i<n;i++) printf("%d ",a[i]); printf("\n"); return 0; }
C++解答
#include <stdio.h> int main() { void sort(int *vals[], int n); int *vals[100], val[100], i, n; scanf("%d", &n); for (i = 0;i < n;i++) { scanf("%d", &val[i]); vals[i] = &val[i]; } sort(vals, n); for (i = 0;i < n;i++) printf("%d ", *vals[i]); printf("\n"); return 0; } /* 选择排序函数 */ void sort(int *vals[], int n) { int i, j, **p, *temp; for (i = 0;i < n - 1;i++) { p = vals + i; for (j = i + 1;j < n;j++) { if (*vals[j] < **p) p = vals + j; } temp = *p; *p = vals[i]; vals[i] = temp; } }