| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1058 人关注过本帖
标题:[求助]一道有关循环和数组的程序不太明白.希望得到帮助.
只看楼主 加入收藏
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
 问题点数:0 回复次数:11 
[求助]一道有关循环和数组的程序不太明白.希望得到帮助.
当从键盘输入18时,下面的程序的运行结果是
main()
{ int x,y,i,a[8],,j,u;
scanf("%d",&x);
y=x; i=0;
do
{ u=y/2
a[i]=y%2;
i++;y=u;
} while(y>=1);
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
}
答案是10010


do
{ u=y/2
a[i]=y%2;
i++;y=u;
} while(y>=1);
这几步程序我还勉强能理解,就是u=18/2=9
然后a[0]=0,因为9/2余数是0,然后i变成1,y变成9/2
以此类推,得出a[1]=1,a[2]=1,a[3]=1,
然后就不知道怎么办了?
搜索更多相关主题的帖子: 键盘 
2006-10-04 20:02
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
y=18;
1.u=y/2=9;a[0]=18%2=0;y=9;(y>=1)
2.u=y/2=4;a[1]=9%2=1;y=4;(y>=1)
3.u=y/2=2;a[2]=4%2=0;y=2;(y>=1)
4.u=y/2=1;a[3]=2%2=0;y=1(y>=1)
5.u=y/2=0;a[4]=1%2=1;y=0(y<1)
结束循环此时的i==5
输出a[i-1]---a[0]则是10010

倚天照海花无数,流水高山心自知。
2006-10-04 20:27
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
1.u=y/2=9;a[0]=18%2=0;y=9;(y>=1)
2.u=y/2=4;a[1]=9%2=1;y=4;(y>=1)
关于第2步,9/2=4.5,因为是整型,所以就默认为4了,对不对?
2006-10-04 20:37
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
对.也说不上是默认了./运算的结果你就理解为整除成的商,而%的结果就认为是余数.

倚天照海花无数,流水高山心自知。
2006-10-04 20:54
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
再请教一道题目
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},i,k;
k=a[8];
for(i=8;i>=3;i--)
a[i+1]=a[i];
a[3]=k;
for(i=0;i<10:i+=2)
printf("%d",a[i]);
运行结果是13468

a[8]是9,所以k=9
a[9]=a[8]推出a[9]=9
然后是a[8]=a[7]
之后我推不下去了
2006-10-04 22:26
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
数组交换的过程,交换之前保存了a[8]=9的值
i的范围是[3,8]

a[8]的值给a[9]
a[7]的值给a[8]
a[6]的值给a[7]
a[5]的值给a[6]
a[4]的值给a[5]
a[3]的值给a[4]
此时的序列为:
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
1 2 3 4 4 5 6 7 8 10

然后a[3]=k即a[3]=9
把上述序列的a[3]=4换成a[3]=9就行了
然后从格两个以输出不就是
1 3 4 6 8

unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-04 22:40
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用inku在2006-10-4 22:26:09的发言:
再请教一道题目
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},i,k;
k=a[8];
for(i=8;i>=3;i--)
a[i+1]=a[i];
//1 2 3 3 4 5 6 7 8 9
a[3]=k;
//1 2 3 9 4 5 6 7 8 9
for(i=0;i<10:i+=2)
printf("%d",a[i]);
运行结果是13468

a[8]是9,所以k=9
a[9]=a[8]推出a[9]=9
然后是a[8]=a[7]
之后我推不下去了


倚天照海花无数,流水高山心自知。
2006-10-04 23:11
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用unicorn在2006-10-4 22:40:06的发言:
数组交换的过程,交换之前保存了a[8]=9的值
i的范围是[3,8]

a[8]的值给a[9]
a[7]的值给a[8]
a[6]的值给a[7]
a[5]的值给a[6]
a[4]的值给a[5]
a[3]的值给a[4]
此时的序列为:
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
1 2 3 4 4 5 6 7 8 10

然后a[3]=k即a[3]=9
把上述序列的a[3]=4换成a[3]=9就行了
然后从格两个以输出不就是
1 3 4 6 8

这下豁然开朗了,谢谢!

2006-10-04 23:12
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用inku在2006-10-4 23:12:20的发言:

这下豁然开朗了,谢谢!

不觉得他的是错误的吗?

main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},i,k;
k=a[8];
for(i=8;i>=3;i--)
a[i+1]=a[i];
a[3]=k;
for(i=0;i<10;i++)
printf("%d ",a[i]);
getch();
}

1 2 3 9 4 5 6 7 8 9

[此贴子已经被作者于2006-10-4 23:42:37编辑过]


倚天照海花无数,流水高山心自知。
2006-10-04 23:42
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
以下是引用nuciewth在2006-10-4 23:42:09的发言:

不觉得他的是错误的吗?

main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},i,k;
k=a[8];
for(i=8;i>=3;i--)
a[i+1]=a[i];
a[3]=k;
for(i=0;i<10;i++ )
printf("%d ",a[i]);
getch();
}

1 2 3 9 4 5 6 7 8 9



你题看错了

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


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-05 10:27
快速回复:[求助]一道有关循环和数组的程序不太明白.希望得到帮助.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015306 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved