题目:

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

源代码:

#include <stdio.h>
#define ROW 7
int 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 6
void 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 6
void 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(已有一个排号序的数组,要求输入一个数后,按原来的排序规律将它插入数组中)相关推荐

  1. 有一个已排好序的数组,要求输入一个数后,按原来排序规律将他插入数组。

    #include<stdio.h> #include<math.h> #include<string.h> int main() {     int a[11]; ...

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

    代码: #include <stdio.h> #define N 11 int main(){//原数组是升序int a[N]={1,4,6,9,13,16,19,28,40,100};i ...

  3. c语言:“有一个已排好序的数组,要求输入一个数后,按原来的规律将它插入数组中” 的程序分析及详细代码

    先来分析思路: 已经排好序的数组,有两种情况,一种是顺序,一种是逆序,由于该数组是自己给出的,所以我们不妨将该数组的顺序设为顺序. 1.我们需要创建一个顺序数组(a[ ]),创建时要注意,我们要确保数 ...

  4. C语言编程>第三周 ⑥ 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    例题:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 代码如下: /*程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个 ...

  5. C++经典算法题-有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    1. 题目 题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 2. 分析 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次 ...

  6. Python 练习实例100-39,有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    原题地址:https://www.runoob.com/python/python-100-examples.html 题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 程 ...

  7. 有一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中。——C与C++实现

    题目:一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中.(本例中输入的是一个升序的数组) 程序分析: (1)判断输入的数是否大于数组中最后一个元素,如果成立,将输入的数插入数组的末尾 ...

  8. Python Challenge-39 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    #题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. #!/usr/bin/python 3 # -*- coding: UTF-8 -*- #两种方法_Author_ = ...

  9. python练习39:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    #有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. a=2 list1=[1,3,5,6,8] i=0 #if elif 和else语句用来判断列表原来的排序规律,递减.递增还是 ...

最新文章

  1. 【CNN基础】常见的loss函数及其实现(一)——TV Loss
  2. 13.while循环
  3. 全球及中国汽车空调冷凝器行业发展前景规模及投资战略决策报告2022-2027年
  4. hadoop3.2.0集群搭建的一些坑!
  5. Longest X 贪心,滑动窗口,前缀和(400)
  6. viewport实现html页面动态缩放/meta viewport/viewport
  7. Linux帮助信息获取
  8. Tensorflow框架:InceptionV3网络概念及实现
  9. JavaScript历史与ECMAScript
  10. HTTP安全随想,第一指导原则:不要相信任何用户的输入[]
  11. Do Now 一个让你静心学习的APP——团队博客
  12. Mybatis简单数据库查询
  13. Linux手动配置虚拟机网络的两种方式
  14. 1、《java就业培训教程》-张孝祥
  15. openGauss社区成立QA SIG
  16. 自己做网站有哪些方法呢?方法分享
  17. c语言解决约瑟夫问题,C语言解决约瑟夫问题详解的代码
  18. 三、神奇的自然常数e之“自然”兄弟
  19. PowerShell批量部署Hyper-V Windows虚机
  20. 如何取消windows xp开机时的登录界面

热门文章

  1. 2017年网易有道校园招聘内推笔试
  2. 什么是非抢占式和抢占式调度方式?抢占式调度方法和非抢占式调度方法有哪些?
  3. android studio 打开pdf,从Android Studio中的手机浏览pdf
  4. android 通讯录界面设计带字母,android仿微信联系人索引列表功能
  5. 英雄联盟服务器维护中启动游戏失败,英雄联盟无法进入游戏,详细教您英雄联盟进不了游戏怎么办...
  6. 苹果手机系统更新信号无服务器,苹果手机服务中心,新买的苹果手机居然无信号...
  7. 北京大数据挖掘培训,能从事那些领域?
  8. gephi mysql_使用Gephi分析论坛社交关系网络
  9. Java面试题汇总大全(重点)
  10. 使用PS3手柄在PC玩Unity3D游戏