400字范文,内容丰富有趣,生活中的好帮手!
400字范文 > C语言-数组和指针-11(已有一个排号序的数组 要求输入一个数后 按原来的排序规律将

C语言-数组和指针-11(已有一个排号序的数组 要求输入一个数后 按原来的排序规律将

时间:2021-06-06 19:30:57

相关推荐

C语言-数组和指针-11(已有一个排号序的数组 要求输入一个数后 按原来的排序规律将

题目:

已有一个排号序的数组,要求输入一个数后,按原来的排序规律将它插入数组中

源代码:

#include <stdio.h>#define ROW 7int main(){int array[ROW] = {1,2,3,5,6,7};int num,sta=0;printf("请选择排序(由大到小: 1 由小到大: 0): ");scanf("%d",&sta);printf("请选择需要插入的数字: ");scanf("%d",&num);printf("排序前数组元素: \n");for(int x = 0;x < ROW-1;x++) printf("%d ",array[x]);printf("\n");for(int i = 0; i< ROW;i++){if(0 == sta){if(num < array[i]){for(int j = ROW-1;j > i;j--){array[j] = array[j-1];array[j-1] = array[j-2];}array[i] = num;break;}}if(1 == sta){if(num > array[i]){for(int j = ROW-1;j > i;j--){int tmp;array[j] = array[j-1];array[j-1] = array[j-2];}break;}}}printf("排序后数组元素: \n");for(int x = 0; x < ROW;x++) printf("%d ",array[x]);}

演示效果:

程序改进1:

插入后按选择顺序进行排序

源代码:

#include <stdio.h>#define ROW 6void big_to_little(int * array,int row);void little_to_big(int * array,int row);int main(){int array[ROW] = {1,2,3,5,6,7,0};int num,sta=0;printf("请选择排序(由大到小: 1 由小到大: 0): ");scanf("%d",&sta);printf("请选择需要插入的数字: ");scanf("%d",&num);printf("排序前数组元素: \n");for(int x = 0;x < ROW-1;x++) printf("%d ",array[x]);printf("\n");for(int i = 0; i< ROW;i++){if(0 == sta){little_to_big(array,ROW);if(num < array[i]){for(int j = ROW-1;j > i;j--){array[j] = array[j-1];array[j-1] = array[j-2];}array[i] = num;break;}}if(1 == sta){big_to_little(array,ROW);if(num > array[i]){for(int j = ROW-1;j > i;j--){array[j] = array[j-1];array[j-1] = array[j-2];}array[i] = num;break;}}}printf("排序后数组元素: \n");for(int x = 0; x < ROW;x++) printf("%d ",array[x]);Return 0;}void big_to_little(int * array,int row){for(int i = row-1;i >= 0;i--){for(int j = 0;j < i - 1;j++){int tmp = 0;if(array[j] < array[j+1]){tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;}}}}void little_to_big(int * array,int row){int start;for(int x = 0;x < row;x++){if(array[x] != 0) continue;;start = x;break;}for(int i = start;i >= 0;i--){for(int j = 0;j < i - 1;j++){int tmp = 0;if(array[j] > array[j+1]){tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;}}}}

演示效果:

程序改进2:

允许用户输入数值数值

源代码:

#include <stdio.h>#define ROW 6void big_to_little(int * array,int row);void little_to_big(int * array,int row);void array_input(int * array,int row);int main(){int array[ROW];int num,sta=0;array_input(array,ROW-1);printf("请选择排序(由大到小: 1 由小到大: 0): ");scanf("%d",&sta);printf("请选择需要插入的数字: ");scanf("%d",&num);printf("排序前数组元素: \n");for(int x = 0;x < ROW-1;x++) printf("%d ",array[x]);printf("\n");for(int i = 0; i< ROW;i++){if(0 == sta){little_to_big(array,ROW);if(num < array[i]){for(int j = ROW-1;j > i;j--){array[j] = array[j-1];array[j-1] = array[j-2];}array[i] = num;break;}}if(1 == sta){big_to_little(array,ROW);if(num > array[i]){for(int j = ROW-1;j > i;j--){array[j] = array[j-1];array[j-1] = array[j-2];}array[i] = num;break;}}}printf("排序后数组元素: \n");for(int x = 0; x < ROW;x++) printf("%d ",array[x]);Return 0;}void big_to_little(int * array,int row){for(int i = row-1;i >= 0;i--){for(int j = 0;j < i - 1;j++){int tmp = 0;if(array[j] < array[j+1]){tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;}}}}void little_to_big(int * array,int row){int start;for(int x = 0;x < row;x++){if(array[x] != 0) continue;;start = x;break;}for(int i = start;i >= 0;i--){for(int j = 0;j < i - 1;j++){int tmp = 0;if(array[j] > array[j+1]){tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;}}}}void array_input(int * array,int row){int sta;printf("请输入 %d 个数给到数组: ",row);for(int i = 0;i < row;i++){input:{sta = scanf("%d",array+i);if(sta != 1){printf("输入数值错误请重新输入: ");getchar();goto input;}}}}

演示效果:

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

C语言-数组和指针-11(已有一个排号序的数组 要求输入一个数后 按原来的排序规律将它插入数组中)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。