请帮我看看哪里错了?

gongqiang1 2011-08-15 12:46:42
int a[]={1,2,3,4,5,6,7,8,9,0}, i;


for(i = 10; i < 0; i++)

a[i] = i;
//printf("% d\n",a[i]);

for(i = 9 ; i > 0; i--)

printf("% d\n",a[i]);
...全文
148 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 menxiazougou 的回复:]
很明显你第一行定义的数组a[]只有1、2、3、4、5、6、7、8、9、0这10个元素。
而数组角标是从0开始的,所以你定义的数组是a[0]=1、a[1]=2、a[2]=3、a[3]=4、……a[9]=0这十个元素,就是数组a[]的最大角标是9,也就是最后一个元素是a[9]。
而你那个for循环确从i=10开始,明显错了,根本没有a[10]这个元素!!!
[/Quote]
a[10]很可能和i在内存中占用同一个地址。
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
简单调调 2011-08-17
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0};
for(int i = 0; i < 10; i++) //正向输出
{
cout<<a[i]<<'\t';
}
cout<<endl; //换行,逆向输出
for(int i = 9 ; i >= 0; i--)
{
cout<<a[i]<<'\t';
}
cout<<endl;
}

代码比较乱,空行 缩进都不规范,必须练啊~我也在学习中
gongqiang1 2011-08-17
  • 打赏
  • 举报
回复
帮我写一个完整的逆向输出!
小木 2011-08-17
  • 打赏
  • 举报
回复
for(i = 10; i < 0; i++)
-> for(i=0; i<10; i++)

for(i = 9 ; i > 0; i--)
-> for(i = 9; i >= 0; i--)
刚开始学程序吧,没事,慢慢来
wangbingyujava 2011-08-17
  • 打赏
  • 举报
回复
不知道你 想说什么? 逻辑表达能力也太差了点...
xiaoyucong 2011-08-17
  • 打赏
  • 举报
回复
“for(i = 10; i < 0; i++)” 首先 i不能为10,因为数组 a 已定义为0-9共10个元素,所以逆向输出从9开始,其次i要大于0。
zxd0914gmail 2011-08-17
  • 打赏
  • 举报
回复
数组越界啊
for(i=10;i>0;++i)
a[10-i] = i;
Alexander 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 luciferisnotsatan 的回复:]

for(i = 10; i < 0; i++)
这要加到溢出了才会结束。在那之前估计就访问违规了。
[/Quote]
这里会执行到么?
第一轮就不满足条件跳出了说。
朝生暮死 2011-08-17
  • 打赏
  • 举报
回复
很明显你第一行定义的数组a[]只有1、2、3、4、5、6、7、8、9、0这10个元素。
而数组角标是从0开始的,所以你定义的数组是a[0]=1、a[1]=2、a[2]=3、a[3]=4、……a[9]=0这十个元素,就是数组a[]的最大角标是9,也就是最后一个元素是a[9]。
而你那个for循环确从i=10开始,明显错了,根本没有a[10]这个元素!!!
gongqiang1 2011-08-17
  • 打赏
  • 举报
回复
逆向输出!!
暮雨晨舟 2011-08-16
  • 打赏
  • 举报
回复
不知道这个程序想要表达什么意思或者实现什么功能
赵4老师 2011-08-16
  • 打赏
  • 举报
回复
单步调试和设断点调试是程序员必须掌握的技能之一。
luckymini 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wlcbh 的回复:]
for(i = 10; i < 0; i++)
楼主是否写错了?
[/Quote]

楼主需要什么程序啊?
seuer126 2011-08-16
  • 打赏
  • 举报
回复
LZ写的什么程序啊,看不懂啊
l369294289 2011-08-16
  • 打赏
  • 举报
回复
for(i = 10; i < 0; i++) //i=10,i<0开始就不成立,循环就不会执行

a[i] = i;


所以,这两排是多余的,程序只执行了
for(i = 9 ; i > 0; i--)

printf("% d\n",a[i]);
运行结果是0 9 8 7 6 5 4 3 2
至善者善之敌 2011-08-16
  • 打赏
  • 举报
回复
for(i = 10; i < 0; i++)

恩,可以结贴了
yht8708 2011-08-16
  • 打赏
  • 举报
回复
数组应用超界
AnYidan 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 luciferisnotsatan 的回复:]
for(i = 10; i < 0; i++)
这要加到溢出了才会结束。在那之前估计就访问违规了。
[/Quote]
++
ForestDB 2011-08-15
  • 打赏
  • 举报
回复
for(i = 10; i < 0; i++)
for(i = 9 ; i > 0; i--)
iambic 2011-08-15
  • 打赏
  • 举报
回复
某人去见大夫,进门就说:“大夫,我有病啊”。
大夫问:“你有什么病啊?”
“我有病啊。”
“你有什么症状啊?”
“我有病啊”
“……”
“你到底会不会看?”
“……”
于是患者无满意答案结贴了。
加载更多回复(8)

69,371

社区成员

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

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