C语言——实例039 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中

来源:互联网 发布:知豆电动汽车多少钱 编辑:程序博客网 时间:2024/06/06 06:41

第一个程序:有bug,但没发现


/*Name: Copyright: Author: Date: 31/07/17 11:42Description: 【程序39】题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。 ?*/#include <stdio.h>int main(){int a[100],temp,i,j,n,min;int x,temp2;/*输入待排序数据*/printf("请输入待排序的数的个数:");scanf("%d",&n);printf("\n请输入%d个数:",n);for(i = 0;i < n;i++){scanf("%d",&a[i]);}printf("\n");/*排序*/ for(i = 0;i < n - 1;i++){min = i;for(j = i + 1;j < n;j++){if(a[min] > a[j]) {min = j;}}temp = a[i];a[i] = a[min];a[min] = temp;}/*输出排序*/ printf("从小到大排序后的%d个数为:\n",n);for(i = 0;i < n;i++){printf("%-5d",a[i]);}printf("\n\n");/*插入*/while(printf("请输入插入数据:") && scanf("%d",&x) != EOF) {printf("\n");n++;if(x >= a[n - 2]){a[n - 1] = x;printf("从小到大排序后的%d个数为:\n",n);for(i = 0;i < n;i++){printf("%-5d",a[i]);}printf("\n\n");}else{for(i = 0;i < n - 2;i++){if(x < a[i]){temp = a[i];a[i] = x;for(j = i + 1;j < n;j++){temp2 = a[j];a[j] = temp;temp = temp2;}break;}}printf("从小到大排序后的%d个数为:\n",n);for(i = 0;i < n;i++){printf("%-5d",a[i]);}printf("\n\n");} }return 0;}


运行结果:



第二个程序:没有仔细测试

/*Name: Copyright: Author: Date: 31/07/17 11:42Description: 【程序39】题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。 ?*/#include <stdio.h>#include<stdlib.h>int cmp(const void *a,const void *b){return (*(int *)a-(*(int *)b));//从小到大 }int main(){int a[100],temp,i,j,n,min;int x,temp2;/*输入待排序数据*/printf("请输入待排序的数的个数:");scanf("%d",&n);printf("\n请输入%d个数:",n);for(i = 0;i < n;i++){scanf("%d",&a[i]);}printf("\n");/*排序*/ qsort(a,n,sizeof(int),cmp);/*输出排序*/ printf("从小到大排序后的%d个数为:\n",n);for(i = 0;i < n;i++){printf("%-5d",a[i]);}printf("\n\n");/*插入*/printf("请输入插入数据:");scanf("%d",&x);a[n] = x;qsort(a,n + 1,sizeof(int),cmp);printf("\n从小到大排序后的%d个数为:\n",n + 1);for(i = 0;i < n + 1;i++){printf("%-5d",a[i]);}printf("\n\n");return 0;}


阅读全文
0 0
原创粉丝点击