C语言将数组重新排序,奇数在前,偶数在后,求解

这是我写的程序,不知道哪有问题,老是出现停止工作,而且输出的1变成了一长串数字#include<stdio.h>voidoddseven(intax[],intn){in... 这是我写的程序,不知道哪有问题,老是出现停止工作,而且输出的1变成了一长串数字#include<stdio.h>
void oddseven(int ax[],int n){
int * p=NULL,* pe=NULL;
for(p=ax+0;p<=ax+n-1;p++){
if((* p)%2==0){
* (p+n)=* p;
* p=-1;
}
}
for(p=ax+0;p<=ax+(2*n)-1;p++){
pe=p+1;
while(pe<=ax+2*n-1){
pe++;
}
* p= * pe;
* pe=-1;
}
return;
}
void main(){
int a[20]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
int i,j;
printf("请输入十个整数\n");
for(i=0;i<=9;i++){
scanf("%d",&a[i]);
}
oddseven(a,10);
for(j=0;j<=9;j++){
printf("%d,",a[j]);
}
printf("\n");
}

求高手解答
展开
 我来答
ycsxm
推荐于2017-12-15 · TA获得超过3.3万个赞
知道大有可为答主
回答量:1.4万
采纳率:0%
帮助的人:7976万
展开全部
没几个人能看懂别人的程序的。
我最痛苦就是看别人的程序,
让我编这我肯的。
bool isSwap(int a,int b) // 是否要交换
{
if (a %2==0 || b%2 !=0)
return(true); // 前偶,后奇,要交换
if (a %2!=0 || b%2 ==0)
return(false); // 前奇,后偶,不交换
return (a>b); // 同奇同偶,前大后小,要交换
}
void swap(int * a,int * b) // 交换 *a,*b
{
int t=*a;
*a=*b;
*b=t;
}
void oddSort(int d[],int n) // 特殊冒泡排序 ,奇数优先在前
{ int i,j;
for ( i=0;i<n-1;i++)
for ( j=i+1,j<n;j++)
if (isSwap(d[i],d[j])) // 符合交换
swap(&d[i],&d[j]); // 交换
}
你程序中再调用一个上面的子程序就OK了,很短很清晰
hlcyjbcgsyzxg
2011-11-26 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3784
采纳率:0%
帮助的人:1469万
展开全部
while(pe<=ax+2*n-1){
pe++;
}
这句之后pe已经跑到a[20]的位置了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式