动态内存分配输入整数并对其排序输出
2014-09-14 09:37
225 查看
#include<stdio.h> #include<stdlib.h> int compare_integers(void const *a, void const *b) { register int const *pa = a; register int const *pb = b; return *pa > *pb ? 1 :(*pa < *pb ? -1 : 0); } int main(void) { int *array; int n_values; int i; printf("How many values are there?"); if(scanf("%d", &n_values) != 1 || n_values <=0){ printf("Illegal number of values.\n"); exit(EXIT_FAILURE); } array = malloc(n_values * sizeof(int)); if(array == NULL){ printf("Can't get memory for that many values.\n"); exit(EXIT_FAILURE); } for(i=0; i<n_values; i++){ printf("?"); if(scanf("%d", array+i) != 1){ printf("Error reading value #%d\n", i); free(array); exit(EXIT_FAILURE); } } qsort(array, n_values, sizeof(int), compare_integers); for(i=0;i<n_values;i++){ printf("%d\n", array[i]); } return EXIT_SUCCESS; }
相关文章推荐
- C和指针之动态内存分配之输入很多整数进行排序
- //问题:将n个数从小到大排序如果n是奇数输出正中间的数,如果n是偶数,输出中间的两个数(用动态内存分配的方法)
- 输入N,在屏幕上打印出N X N 的矩阵,使用动态内存分配 int ** num
- 输入10个整型整数,用起泡法对这10个数排序,并该由小到大顺序在屏幕上输出
- 华为机试题:输入一组大于等于0的整数,从小到大排序输出,输出有连续数时,只输出连续数的最小和最大值
- 华为机试题:输入一组大于等于0的整数,从小到大排序输出,输出有连续数时,只输出连续数的最小和最大值
- 华为机试题:输入一组大于等于0的整数,从小到大排序输出,输出有连续数时,只输出连续数的最小和最大值
- 二:输入10个整数,将它们从大到小排序后输出。
- 三个数排序。要求输入三个整数,按逗号隔开,把它们从小到大排列,输出结果用空格隔开。
- 华为机试题:输入一组大于等于0的整数,从小到大排序输出,输出有连续数时,只输出连续数的最小和最大值
- c语言经典的排序函数swap():输入的两个整数按大小顺序输出。
- 输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。
- 华为机试题:输入一组大于等于0的整数,从小到大排序输出,输出有连续数时,只输出连续数的最小和最大值
- c#快速排序算法,输入整数,输出排序结果。
- 输入10个整型整数,用选择法对这10个数排序,并该由大到小顺序在屏幕上输出。
- 编写一个函数,从标准输入读取一列整数,把这些值存储于一个动态分配的数组中并返回这个数组。函数通过观察EOF判断输入列表是否结束。数组的第一个数是数组包含的值的个数,他的后面就是这些整数值。
- 排序,求几个最值问题,输入n个整数,输出其中最小的k个元素。
- 华为机试题:输入一组大于等于0的整数,从小到大排序输出,输出有连续数时,只输出连续数的最小和最大值
- 华为机试题:输入一组大于等于0的整数,从小到大排序输出,输出有连续数时,只输出连续数的最小和最大值
- 华为机试题:输入一组大于等于0的整数,从小到大排序输出,输出有连续数时,只输出连续数的最小和最大值