输入多个数以求第k大的数
以下是使用C语言实现的完整代码:
#include <stdio.h> int main() { int a[10000]; int n, temp, i, k, j; printf("请输入你要输入的数的个数n:\n"); scanf("%d", &n); for(i = 0; i < n; i++) { printf("a[%d]=", i); scanf("%d", &a[i]); } // 冒泡排序,按升序排列 for(i = 0; i < n; i++) { for(j = i + 1; j < n; j++) { if(a[j] < a[i]) { temp = a[j]; a[j] = a[i]; a[i] = temp; } } } printf("请输入你要的到第几小/大的数K:\n"); scanf("%d", &k); printf("第%d大的数为%d\n", k, a[k-1]); printf("第%d小的数为%d\n", k, a[n-k]); return 0; }C语言函数:找出数组中k个数的最大值
注意:代码中不应使用头文件#include <stdio.h>或#include <math.h>,并且外部函数定义需避免重复覆盖问题。
C语言选择法排序:输入n个整数并按升序输出
代码如下:
//#include "stdafx.h" // vc++6.0加上这一行. #include <stdio.h> #include <stdlib.h> int main(void) { int n, x[20], i, j, k; while(1) { printf("Input n (int n <= 20)...\n"); if(scanf("%d", &n), n == 0) break; for(i = 0; i < n; scanf("%d", x + i++)); printf("\nAfter sorting as follows:\n"); for(i = 0; i < n; i++) { for(k = i, j = k + 1; j < n; j++) if(x[k] > x[j]) k = j; if(k != i) { int temp = x[k]; x[k] = x[i]; x[i] = temp; } printf(i < n - 1 ? "%d " : "%d\n", x[i]); } } return 0; }
暂无评论
发表评论