为什么程序运行不出结果?a==3时的插入结果好像也不对,请问怎么改?

为什么程序运行不出结果?a==3时的插入结果好像也不对,请问怎么改?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
using namespace std; 
int a;
int shuzu[5];
void display()
{
    cout<<"******************************************************"<<endl;
    cout<<"\t\t1--插入数据"<<endl;
    cout<<"\t\t2--显示所有数据"<<endl;
    cout<<"\t\t3--在指定位置处插入数据"<<endl;
    cout<<"\t\t4--查询能被3整除的数据"<<endl;
    cout<<"\t\t0--退出"<<endl;
    cout<<"******************************************************"<<endl;
    cout<<"请输入对应的数字进行操作:";
    cin>>a;
}
void showData(int a[], int length) {
    for (int i = 0; i < length; i++) {
        cout<<a[i]<<"     ";
    }
    cout<<endl;
}
void input()
{
    for (int i=0;i<5;i++)
        {
            cout<<"请输入第"<<(i+1)<<"个数据:"<<endl;
            int num;
            cin>>num;
            shuzu[i]=num;
        }
    cout<<"数组元素为:"<<endl;
    showData(shuzu, sizeof(shuzu) / sizeof(shuzu[0]));
}
void insert()
{
    cout<<"请输入要插入的数据:"<<endl;
    int num1;
    cin>>num1;
    cout<<"请输入要插入数据的位置:"<<endl;
    int num2;
    cin>>num2;
    int l=(sizeof(shuzu) / sizeof(shuzu[0]))-1;
    for (int i=l;i>num2;i--)
    {
        shuzu[i+1]=shuzu[i];
    }
    shuzu[i]=num1;
    showData(shuzu, sizeof(shuzu) / sizeof(shuzu[0])); 
             
}
int main()
{
    display();
    for(int i=1;i<-1;)
    {
        if(a==1)
        {
            input();
            display();
            continue;
        }
        if(a==2)
        {
            cout<<"数组元素为:"<<endl;
            showData(shuzu, sizeof(shuzu) / sizeof(shuzu[0])); 
            display();
            continue;
        }
        if(a==3)
        {
            insert();
            display();
            continue;
        }
        if(a==4)
        {
            cout<<"退出程序"<<endl;
            break;
        }
    }
 
    return 0;
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
imooc_澈 2018-05-07 01:46:25

定义长度为5,那么最初可以输入4个值,留一个位置做插入一个数据的功能,参考代码如下:

http://img1.sycdn.imooc.com//climg/5aef3f660001461b03760231.jpg

祝学习愉快~

  • 提问者 Michelleqyh #1
    定义长度为5,最初输入4个值的话,输出结果在最后会多出个0,这样就不对了,因为用户并没有输入0
    2018-05-07 10:16:15
  • Tender10 回复 提问者 Michelleqyh #2
    在进行数组查询的时候,可以进行一个判断啊,遍历数组的时候,加一个if判断,判断数组的最后一位是否为0,如果是就不输出即可。
    2018-05-07 10:47:27
  • 提问者 Michelleqyh 回复 Tender10 #3
    你这个方法不行,如果用户自己输入的一个数就是0呢
    2018-05-07 10:57:40
imooc_澈 2018-05-06 17:44:05

您好,循环条件有问题,i<-1,无法进入循环,正确代码参考如下:

http://img1.sycdn.imooc.com//climg/5aeece480001cf7404380417.jpg

如果解决了你的问题,请采纳,祝学习愉快~

  • 提问者 Michelleqyh #1
    请问已经定义了shuzu[5],插入一个数字的代码怎么写?
    2018-05-06 21:40:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
C++零基础入门 热门编程语言 二级考试必备
  • 参与学习       529    人
  • 提交作业       110    份
  • 解答问题       593    个

无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码