| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 566 人关注过本帖
标题:求助,代码理解问题!
只看楼主 加入收藏
kimteahee
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-8-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
求助,代码理解问题!
#include <stdio.h>
main()
{
char c,stmp,array[80];
int i=0,j;
while((c=getchar())!='\n')
array[i++]=c;
array[i]='\0';
for(j=i-1;j>=i/2;j--)
{
stmp=array[j];
array[j]=array[i-1-j];
array[i-1-j]=stmp;
}
for(i=0;array[i]!='\0';i++) printf("%c",array[i]);
printf("\n");
}
这段代码:
for(j=i-1;j>=i/2;j--)
{
stmp=array[j];
array[j]=array[i-1-j];
array[i-1-j]=stmp;
}
是如何实现倒置的,不太理解,望高手解答!
搜索更多相关主题的帖子: 代码 
2009-08-07 12:06
宣_仲达
Rank: 2
来 自:广东工业大学
等 级:论坛游民
帖 子:46
专家分:51
注 册:2009-8-3
收藏
得分:0 
你的代码里面赋值语句是这句:   array[i++]=c;
那么最后的数组元素被赋值后i仍然还要加一才结束。
你将80改成5或者6自己带进去看看就清楚了~~~

人不知而不愠,不亦君子乎?
2009-08-07 12:15
machill
Rank: 2
等 级:论坛游民
帖 子:23
专家分:35
注 册:2008-12-23
收藏
得分:10 
for(j=i-1;j>=i/2;j--)
{
stmp=array[j];         
array[j]=array[i-1-j];
array[i-1-j]=stmp;
}
例子:
for(j=4-1;j>4/2;j--)
{
array[]='abc'
stmp=c
stmp=array[3];
array[3]=array[0];
array[0]=atmp;
}
2009-08-07 12:21
machill
Rank: 2
等 级:论坛游民
帖 子:23
专家分:35
注 册:2008-12-23
收藏
得分:0 
回复 2楼 宣_仲达
程序没错,当然要再加1了,后面还有array[i]='\0'
2009-08-07 12:24
宣_仲达
Rank: 2
来 自:广东工业大学
等 级:论坛游民
帖 子:46
专家分:51
注 册:2009-8-3
收藏
得分:0 
回复 4楼 mach我是说你可以把array设置到只有5个元素,然后自己画出图来观察就可以明白了,呵呵~~~

人不知而不愠,不亦君子乎?
2009-08-07 12:34
machill
Rank: 2
等 级:论坛游民
帖 子:23
专家分:35
注 册:2008-12-23
收藏
得分:0 
回复 5楼 宣_仲达
不好意思,看错了
2009-08-07 12:40
谁是王者
Rank: 2
等 级:论坛游民
帖 子:211
专家分:92
注 册:2009-3-3
收藏
得分:10 
自己画图会很容易明白的。。。。假设一个字符串,,然后看程序一步步来,有点耐心就可以 。。
for(j=i-1;j>=i/2;j--)
这步中的j=i-1是先让j为最后一个元素,然后再一步步往前退到中间位置就和前面的倒置过来了。。
如第一次循环array[j]=array[i-1-j];
这步就是最后一元素和一个元素进行交换,,后面的j--就是再一步步往前来,前面的(i-1-j)随着j的减小在增大就是在往后退。一直到他们相遇就置换完了。。
2009-08-07 12:46
Mo诫
Rank: 4
等 级:业余侠客
帖 子:80
专家分:223
注 册:2009-7-29
收藏
得分:0 
回复 6楼 machill

顶你。。
a,b,sum
sum=a,
a=b,
b=sum

这是最基本的元素交换位置。。。楼主再结合6楼的解释就该懂了吧
2009-08-07 13:12
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:0 
会调试就在机子上单步走一遍,不会调试就在纸上演算一遍,诚如2楼兄弟所言,记得数据量设小一点。
2009-08-07 16:08
快速回复:求助,代码理解问题!
数据加载中...
 
   



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

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