allright0218 发表于 2020-3-29 19:30:21

为什么前后的数值不一样?

实现数组的插入,麻烦帮忙看一下,为什么61和68行插入的insert_num不一样了?谢谢。

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    //实现数组的插入

    double nums={2,3,4,1};
    int nums_count=sizeof(nums)/sizeof(double);
    double insert_num;
    int insert_index=0;
    //cout<<nums_count<<endl;
    cout<<"原始数组是:";
    for(int i=0;i<nums_count;i++)
    {
      cout<<nums<<setw(3);
    }

    //对数组进行排序
    double tmp;
    for(int i=0;i<nums_count;i++)
    {
      for(int j=0;j<nums_count;j++)
      {
            if(nums<nums)
            {
                tmp=nums;
                nums=nums;
                nums=tmp;
            }
      }

    }

    //排序后
    cout<<endl<<"排序后的数组是:";
    for(int i=0;i<nums_count;i++)
    {
          cout<<nums<<setw(3);
    }


    //插入:
    cout<<"   请输入要插入的数字:";
    cin>>insert_num;

    //cout<<insert_num<<"vccc"<<endl;
    insert_index=nums_count;


    //1 找到第一个比插入数字大的位置insert_index
    for (int i=0;i<nums_count; i++)
    {
      if(insert_num>nums)
      {
            insert_index=i;
            break;
      }
    }
    cout<<"插入的insert_num:"<<insert_num<<endl;                                       //问题点,第61行
    //2 从最后一位开始,将前一位的数字复制到后一位去

    for (int i=nums_count-1;i>=insert_index;i--)
    {
      nums=nums;
    }
    cout<<"插入的insert_num:"<<insert_num<<endl;                                           //问题点,第68行


    //3 将要插入的数字赋值给insert_index位置的元素
    nums=insert_num;

    //4 数组总长度+1
    nums_count++;

    //插入后
    cout<<endl<<"插入后的数组是:";
    for(int i=0;i<nums_count;i++)
    {
          cout<<nums<<setw(3);
    }

    return 0;
}

allright0218 发表于 2020-3-29 19:37:09

https://imgchr.com/i/GZklzq
页: [1]
查看完整版本: 为什么前后的数值不一样?