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;
	}
}

时间限制 1 秒
内存限制 32 MB
讨论 统计
上一题 下一题