C语言倒过来循环问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 22:53:47
main()
{int a[30],i,j;
for(j=1,i=1;i<=30;i++,j+=2)
a[i]=j;
for(i=1;i<=30;i++)
{if(i%10==0) printf("\n");
printf("%d ",a[i]);}
for(i=30;i>=1;i--)
{printf("%d ",a[i]);
if(i%10==0) printf("\n");
就是最后那个循环弄不懂应该是29.28.27.....这样输出才对啊为什么我理解错误呢~~他是从上面那个最终循环的值向下循环~上面那个循环最终值是59~~~为什么最后那个循环能够直接从59向下循环~不是29 .28.27.....晕请打家教教我这个菜鸟的思想

首先说明一下,定义数据为int a[30]而又对a[30]赋值?似乎很值得商榷。
(假设边界是正确的)
第一个for循环是对数组a赋值,分别为1, 3, 5....
第二个for循环是顺序输出数组a中的值,即1, 3, 5...
第三个for循环就是把数组a中的值倒序数出来,即从a[29],a[28]...a[0],即59,....1。

个人理解是这样,不知大家有什么看法?

注意数组a[i]各项值是怎么来的 a[i]=j j+=2 所以a[i]通项是2i-1 因此倒序输出的第一项就是59 第二项57 依此类推

源程序里:
for(j=1,i=1;i<=30;i++,j+=2)
a[i]=j;

注意:j每次加了2

支持楼上,i只能从0到29
a[i]=2i+1
所以a[29]=59

所以最后输出就是
59、57、55...

第一个for循环是对数组a赋值,分别为1, 3, 5....
第二个for循环是顺序输出数组a中的值,即1, 3, 5...
第三个for循环就是把数组a中的值倒序数出来,即从a[29],a[28]...a[0],即59,....1。

这个有点简单,应该自己可以想明白的!
提醒一下:定义了数组a[30],它的下标应该是0到29!

呀,怎么用了a【30】呀,数组越界了哟,会出错的

for(j=1,i=1;i<=30;i++,j+=2)
a[i]=j;
执行以后,数组就变成了:
1 3 5 7 ....57 59,一共30个数据。
不知道你所说的不对在什么地方呀?