| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1825 人关注过本帖
标题:指针循环问题
取消只看楼主 加入收藏
sange
Rank: 2
等 级:论坛游民
帖 子:12
专家分:26
注 册:2011-3-8
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:1 
指针循环问题
#include"stdio.h"
 void move(int array[20],int n,int m)
{
    int *p,array_end;
    array_end=*(array+n-1);
    for(p=array+n-1;p>array;p--)
        *p=*(p-1);
    *array=array_end;
    m--;
    if(m>0)move(array,n,m);


}

main()
{   
    int number[20],n,m,i;
    printf("How many numbers?");
    scanf("%d",&n);
    printf("input %d numbers :\n",n);
    for(i=0;i<n;i++)
        scanf("%d",&number[i]);
    printf("How mang places do you want to move?");
    scanf("%d",&m);
    move(number,n,m);
    printf("Now,they are:\n");
    for(i=0;i<n;i++)
        printf("%4d",number[i]);
}
解释move函数的作用:move是实现所有的元素循环后移m次,
比如:
1、2、3、4、5;循环后移2次:
第一次:
array_end=5;
执行这个后为:
for(p=array+n-1;p>array;p--)
 *p=*(p-1);
1、1、2、3、4
执行: *array=array_end; 后:
5、1、2、3、4
第二次:4、5、1、2、3、
这是网上解释的,有些不明白的是执行for语句后array_end已经是4了,array_end=4的值已经覆盖了原有的值5,怎么赋值给array[0]成了5,请高手指教,谢谢。
搜索更多相关主题的帖子: void include numbers 
2011-04-07 15:43
sange
Rank: 2
等 级:论坛游民
帖 子:12
专家分:26
注 册:2011-3-8
收藏
得分:0 
谢谢,黑侠大哥。
2011-04-07 15:53
快速回复:指针循环问题
数据加载中...
 
   



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

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