对10个整数按由大到小排序

xiaoxiao2021-02-28  107

先有思路后有代码:

思路:在主函数中定义一个数组用来存放10个整数,定义int * 型指针变量p指向a[0]。定义函数sort使数组a中的元素按由大到小排序。在主函数中调用sort函数,用指针变量p作实参,sort函数的形参用数组名,用选择排序法进行排序。

撸码:

#include "stdafx.h" #include "stdlib.h" int main() { void sort(int x[], int n); int i, *p, a[10]; p = a; printf("Please enter 10 integer number:"); for ( i = 0; i < 10; i++) { scanf(" %d ",p++); } p = a; sort(p, 10); for (p = a, i = 0; i < 10; i++) { printf("%d", *p); p++; } printf("\n"); system("pause"); return 0; } //选择排序法 void sort(int x[], int n) { int i, j, k, t; for ( i = 0; i < n-1; i++) { k = i; for ( j = i+1; j < n; j++) { if (x[j]>x[k]) { k = j;//记录下最大值的位置 } } if (k!=i) { t = x[i]; x[i] = x[k]; x[k] = t; } } }

运行结果:

当然排序函数也可以改为指针形式,这时sort函数声明要改为:

sort(int *x,int n)

其他不改,程序运行结果不变。

可以看到,即使在函数sort中将x定义为指针变量,在函数中仍可用x[i]和x[j]这样的形式表示数组元素,它就是x+i和x+j所指的数组元素。

上面的sort等价于:

void sort(int *x, int n) { int i, j, k, t; for ( i = 0; i < n-1; i++) { k = i; for ( j = i+1; j < n; j++) { if (*(x+j)>*(x+k)) { k = j; } } if (k != i) { t = *(x + i); *(x + i) = *(x + k); *(x + k) = t; } } }
转载请注明原文地址: https://www.6miu.com/read-27520.html

最新回复(0)