注册 登录
编程论坛 C++教室

数组入门的一个好程序

壮志在我胸 发布于 2009-09-24 22:34, 1241 次点击
#include"stdio.h"
void main()
{
    int data[60],i,x;
    for(i=0;i<10;i++)
        scanf(" %d",&data[i]);
    for(i=0;i<10;i++)
        printf(" %d",data[i]);
    for(i=9;i<=5;i--)
        data[i+1]=data[i];
    data[5]=x;
    printf("请输入一个整数:");
    scanf("%d",&data[5]);
    for(i=0;i<=10;i++)
        printf(" %d",data[i]);
这个程序可以完成向数组中插入一个数据的事件,但是数组中最后一个数据怎么显示为乱码呢?
19 回复
#2
f23782009-09-24 22:41
话说你没有初始化x,x的值很不确定啊
#3
壮志在我胸2009-09-25 08:16
我试了,好像不是这里的事。
#4
forclwy2009-09-25 10:02
for(i=9;i<=5;i--) 是这里的问题吧
把i<=5改为 i>=5 试下呢

#5
qlc002009-09-25 12:07
数组越界了,所以最后显示一个乱码。因为以前已经有10个元素,现在有增加一个。
#6
壮志在我胸2009-09-25 20:14
回复 4楼 forclwy
不是吧,这里应该没错
#7
壮志在我胸2009-09-25 20:17
数组越界?能给我详细解释一下吗?因为我也注意这个问题了,所以我定义数组的时候,把数组定义的很大啊(data[60])
#8
shl3052009-09-25 22:01
以下是引用forclwy在2009-9-25 10:02:33的发言:

for(i=9;i<=5;i--) 是这里的问题吧
把i<=5改为 i>=5 试下呢
应该是这个问题
#9
编我的2009-09-26 00:18
2楼跟4楼说的都是本程序存在的问题。
要插入数据得知道要插入什么数据,就是要对x进行赋值。要将数据插入到某个位置(你的程序中是插入到数组的第6个位置i>=5),先把这个位置以及后面的数据都往后移,在插入该数据。
所以
#include <stdio.h>
void main()
{
    int data[60],i,x;
    for(i=0;i<10;i++)
        scanf(" %d",&data[i]);
    for(i=0;i<10;i++)
        printf(" %d",data[i]);
    for(i=9;i>=5;i--)
        data[i+1]=data[i];
    printf("请输入一个整数:");
    scanf("%d",&x);
    data[5]=x;
    for(i=0;i<=10;i++)
        printf(" %d",data[i]);
}
#10
yxb00012009-09-26 02:24
#include"stdio.h"
void main()
{
    int data[60],i,x;
    for(i=0;i<10;i++)
        scanf(" %d",&data[i]);
    for(i=0;i<10;i++)
        printf(" %d",data[i]);
    for(i=9;i<=5;i--)
        data[i+1]=data[i];
    data[5]=x;
    printf("请输入一个整数:");
    scanf("%d",&data[5]);
    for(i=0;i<=10;i++)
        printf(" %d",data[i]);
}
只定义10元素,而后面有11个元素。红色处改为下面即可


for(i=0;i<=10;i++)
#11
muzishu2009-09-26 19:22
最后你输出了11数字呀,改为:for(i=0;i<10,i++)
#12
newCpp2009-09-27 05:33
会不会是越界了啊
#13
小兰012009-09-29 11:13
其实数组在scanf()中使用不用&符号的,去掉,这才是关键错在.我觉得
#14
无水人家2009-09-29 11:44
数组大小为60,不是数组越界,x要赋值,并且for中x<=5,x>=5的话就没有办法进入循环。。。
#15
dzhg2009-09-29 15:07
以下是引用壮志在我胸在2009-9-24 22:34:45的发言:

#include"stdio.h"
void main()
{
    int data[60],i,x;
    for(i=0;i<10;i++)
        scanf(" %d",&data);
    for(i=0;i<10;i++)
        printf(" %d",data);
    for(i=9;i<=5;i--)
        data=data;
    d ...


第三个for循环没有执行过,所以data[10]是没有值的,所以输出来的是乱码.
#16
guowu1232009-09-29 22:03
最后那个:for(i=0;i<=10,i++)
   改为:  for(i=0;i<10,i++)
#17
a26960262009-10-01 22:28
以下是引用forclwy在2009-9-25 10:02:33的发言:

for(i=9;i<=5;i--) 是这里的问题吧
把i<=5改为 i>=5 试下呢
是啊  支持
#18
壮志在我胸2009-10-09 19:03
回复 8楼 shl305
谢谢这位仁兄
#19
pywepe2009-10-11 20:20
回复 楼主 壮志在我胸
为什么你每次都用一个让人看来像好东西的标题呢,但内容却....

不好不好
#20
壮志在我胸2009-10-25 12:22
回复 19楼 pywepe
不是内容不好,而是你自己没有看到心里,其实每个伟大的成就都是从改正小小的错误开始的!
1