求救,这几行程序总不按照我的想法去执行。(各位行行好,我中了冲击波,无法复制粘贴,这些都是我手打出来的)

wmakerwm 2003-08-30 01:17:12
gcc编译

#include <stdio.h>

typedef struct
{
int data[10];
int last;
}list;

int main()
{
list m;
int number=5;
int p;
int i=3;
for(p=0;p<number;p++)
{
m.data[p]=p;
}

m.last=number;

for(p=m.last;p==i;--p) //-------------关键是这里,
m.data[p]=m.data[p-1]; //-------------不知到是不是这里不对。

for(p=0;p<10;p++)
{
printf("%d\n",m.data[p]);
}
m.data[i-1]=99;
m.last=m.last+1;
for(p=0;p<10;p++)
{
printf("%d\n",m.data[p]);
}
return 0;
}

输出结果是:
0 1 2 3 4 134513248 -1073742680....(省略3个输出)
0 1 99 3 4 134513248....(省略)

我想应该是把第五个元素移到第六个位置,第四个移到第五个位置.....
我期望结果是0 1 99 2 3 4.....,也就是插入一个元素,后面的依次向后移,可结果却不是这样,不知道是哪里出了问题。
...全文
42 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
1cs1ak1 2003-08-30
  • 打赏
  • 举报
回复
呵呵 糊涂了 谢谢gole(胡说八道) 兄
确实应该是">="。
哎,丢人啊。
ehhl 2003-08-30
  • 打赏
  • 举报
回复
不懂你什么意思?
gufengduyu 2003-08-30
  • 打赏
  • 举报
回复
int main()
{
list m;
int number=5;
int p;
int i=2;//!!!!!!!
for(p=0;p<number;p++)
{
m.data[p]=p;
}

m.last=number;

for(p=m.last;p!=i;--p) //!!!!!!
m.data[p]=m.data[p-1]; //

for(p=0;p<10;p++)
{
printf("%d\n",m.data[p]);
}
m.data[i]=99;//!!!!!!
m.last=m.last+1;
for(p=0;p<10;p++)
{
printf("%d\n",m.data[p]);
}
return 0;
}
  • 打赏
  • 举报
回复
呵呵,楼上的高明,只是好像应该再加一个等号,>=;呵呵
1cs1ak1 2003-08-30
  • 打赏
  • 举报
回复
for(p=m.last;p>i;--p) //-------------关键是这里,
m.data[p]=m.data[p-1]; //-------------不知到是不是这里不对。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧