| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 484 人关注过本帖
标题:,关于排序,请高手给我解释下这个程序,不明白
只看楼主 加入收藏
花房姑娘
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-12-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
,关于排序,请高手给我解释下这个程序,不明白
通过指针变量来对已排序的数组中的元素进行排序,要求:奇数序号的放在数组的前面,偶数序号的放在数组的后面。例如:a[4]={1,2,3,4,5,6},排列后为:a[4]={1,3,5,2,4,6}。

#include<stdio.h>
void paixu(int*p1,int *p2,int n)
{
    int i;
    for(i=0;i<n;i++)
        if(i%2==0)
            *(p2++)=*(p1+i);
        for(i=0;i<n;i++)
            if(i%2!=0)
                *(p2++)=*(p1+i); [color=#00FF00]//我不懂为什么这两句一样的,这样为什么就可以把奇数序号的排到前面来

}
[/color]
void main()
{
    int a[10],b[10];
    int j,*x=NULL,*y=NULL;
    x=a;y=b;
    for(j=0;j<10;j++)
        scanf("%d",x++);
    x=a;
    paixu(x,y,10);
    for(j=0;j<10;j++)
        printf("%5d",*(y++));
}
搜索更多相关主题的帖子: include 元素 
2015-01-03 01:07
巧若拙
Rank: 4
来 自:宁波余姚
等 级:业余侠客
威 望:1
帖 子:159
专家分:273
注 册:2014-8-24
收藏
得分:10 
因为c语言数组的下标从0开始,故if(i%2==0)表示*(p1+i)对应的元素是奇数序号的元素,反之则是偶数序号的元素。
注意:*(p2++)=*(p1+i);语句中p2在不断后移,而p1却始终指向数组的首地址。
2015-01-03 11:10
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:10 
程序代码:
#include<stdio.h>
void paixu(int *p1, int *p2, int n) {
    int i;

    for(i = 0; i < n; i++) {
        if(i % 2 == 0) { //能被2整除的都是奇数序号的数组元素
            *p2++ = *(p1 + i); //*p2++ = ... 先对*p2赋值 再对p2自增
        }
    }

    //上一个循环结束后 所有来源数组的奇数序号的元素已被赋值到新数组前半部分
    for(i = 0; i < n; i++) {
        if(i % 2 != 0) { //不能被2整除的都是偶数序号的数组元素
            *p2++ = *(p1 + i); //此时的p2已经是上个循环结束后p2自增后的值 而不是函数接受的最初实参值
        }
    }
}

int main(void) {
    int j, a[10] = {0}, b[10] = {0};

    for(j = 0; j < 10; j++)
        scanf("%d", &a[j]);

    paixu(a, b, 10);

    for(j = 0; j < 10; j++)
        printf("%5d", b[j]);

    printf("\n");
    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-01-03 12:08
花房姑娘
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-12-25
收藏
得分:0 
回复 3楼 longwu9t
谢谢
2015-01-04 15:41
快速回复:,关于排序,请高手给我解释下这个程序,不明白
数据加载中...
 
   



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

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