先来看看以下代码,这是其他博友的思路,这代码看似没有问题,其实存在很大的BUG,当插入的目标比str[0]更小的时候就会出错。相信仔细的人就很容易发现问题。

#include<stdio.h>
int main()
{int i,num;int str[]={1,3,4,5,6,7,8,9,10,89,100};int len=sizeof(str)/sizeof(str[0]);scanf("%d",&num);for(i=len-1;i>=0;i--){if(str[i]>num){str[i+1]=str[i];}else{str[i+1]=num;break;}}for(i=0;i<len+1;i++)printf("%d ",str[i]);return 0;
}

程序的优化:

#include<stdio.h>
int main()
{int i,num;int str[]={1,3,4,5,6,7,8,9,10,89,100};int len=sizeof(str)/sizeof(str[0]);scanf("%d",&num);for(i=len;i>0&&str[i-1]>num;i--){str[i]=str[i-1];} str[i]=num;for(i=0;i<len+1;i++)printf("%d ",str[i]);return 0;
}

优化后的程序就不会出现以上的BUG了。

以下是另一种思路:

#include<stdio.h>
int main()
{//定义数组长度,记住,数组定义长度一定要比预先设定的长度至少加一int i,num;int str[]={1,3,4,5,6,7,8,9,10,89,100};int len=sizeof(str)/sizeof(str[0]);int length=len+1;//插入后总长度scanf("%d",&num);for(i=0;i<len;i++){if(num<=str[i])//找到插入位置 {for( ;len>i;len--){str[len]=str[len-1];//把之后的数往后挪移一位 }str[i]=num;//把目标插入 break;}else if(num>str[len-1]){//如果插入目标大于数组中所有数,则此时直接插入到最后 str[len]=num;break;}}for(i=0;i<length;i++)//输出插入后数组 {printf("%d ",str[i]);}return 0;
}

已有一个排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中相关推荐

  1. C语言学习之有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中

    有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中 #include <stdio.h> void main(){int a[11]={25,32,65,74,84,9 ...

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

    有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中 思路:先定义一个数组,留出一个位置,给输入的那个数一个地方.然后分两种情况: 1:输入的数比最大的数小,两两交换位置,直到大于相 ...

  3. 4.19 C语言练习(已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中)

    [练习] 题目要求:已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中. 输入:第一行,原始数列. 第二行,需要插入的数字. 输出:排序后的数列例如:输入:1 7 8 ...

  4. 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。

    题目描述 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中. 输入 第一行,原始数列. 第二行,需要插入的数字. 输出 排序后的数列 样例输入 1 7 8 17 23 2 ...

  5. ACMNO.20 C语言-插入队列 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。 输入 第一行,原始数列。 第二行,需要插入的数字。

    题目描述 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中. 输入 第一行,原始数列. 第二行,需要插入的数字. 输出 排序后的数列 样例输入 1 7 8 17 23 2 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. MAYA 2022基础入门学习教程
  2. 一文掌握异常检测的实用方法 | 技术实践
  3. python之Scrapy框架的第一个爬虫
  4. 可能用到的C# WinForm技术小结
  5. 五天带你学完《计算机网络》·第二天·数据链路层
  6. JVM调优:常见垃圾回收器组合
  7. 语义分割损失函数系列(1):交叉熵损失函数
  8. LeetCode 249. 移位字符串分组(哈希)
  9. Team Foundation Server 2010 安装、部署与配置(六):创建 Team Project .
  10. 小微型计算机2018北大核心,2018年全国北大中文核心期刊目录
  11. C++向函数传递数组
  12. Windows 10 全新界面来了:焕然一新!
  13. win10系统安装jdk8全过程
  14. IEEE 会议论文的参考文献
  15. 如何画一个对话气泡框(css实现)
  16. signature=9b2caa13f2468eba05d2d57d9a88606d,【音响聚焦】顶级Hi-End音响发烧器材介绍(功放篇)...
  17. 单片机c语言小波阈值降噪,一种基于改进阈值函数的小波阈值降噪算法
  18. java经典源码_java经典源代码
  19. 64位先行进位加法器的原理
  20. dns检测工具命令总结

热门文章

  1. padstack editor制作过孔
  2. BRC4工具1.2.2入门教程学习
  3. python石头剪刀布游戏代码输入格式随机数种子设置为0_Python模拟石头剪刀
  4. 编译原理逆波兰式实验java_【实验三】—— 逆波兰式生成实验报告
  5. 【清华夏令营2016模拟5.31】图森破
  6. H5页面投票怎么制作
  7. mixamo骨骼_Mixamo——在线三维人物角色骨骼自动绑定,上千动作库直接生成人物动画...
  8. 斐波那契数列(入门c语言)
  9. 三维场景注记的配置相关(学习记录)
  10. linux 编辑模式使用sed,sed命令的用法和vim编辑器的使用