菜鸟请教:c语言 函数为什么会调用不成功?
自己写了一个对数组元素排序的小程序,编译链接没有错误,但是就是出了来结果,debug过很多回,但是找不出原因,请教原因!!!#include<stdio.h>voidre...
自己写了一个对数组元素排序的小程序,编译链接没有错误,但是就是出了来结果,debug过很多回,但是找不出原因,请教原因!!!
#include <stdio.h>
void rest(int a[],int n)
{
int temp,j=0,i,k;
for(i=0,k=n-1;i<=k;)
{
if(a[i]>0)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
k--;
}
else if(a[i]=0)
i++;
else if(a[i]<0)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
j++;
i++;
}
}
}
int b[]={8,4,0,1,6,0,5};
void main()
{
int i;
printf("The arry before rest is:\n");
for(i=0;i<7;i++)
printf("%4d",b[i]);
rest(b,7);
printf("\nThe arry after rest is:\n");
for(i=0;i<7;i++)
{
printf("%4d",b[i]);
}
} 展开
#include <stdio.h>
void rest(int a[],int n)
{
int temp,j=0,i,k;
for(i=0,k=n-1;i<=k;)
{
if(a[i]>0)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
k--;
}
else if(a[i]=0)
i++;
else if(a[i]<0)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
j++;
i++;
}
}
}
int b[]={8,4,0,1,6,0,5};
void main()
{
int i;
printf("The arry before rest is:\n");
for(i=0;i<7;i++)
printf("%4d",b[i]);
rest(b,7);
printf("\nThe arry after rest is:\n");
for(i=0;i<7;i++)
{
printf("%4d",b[i]);
}
} 展开
4个回答
展开全部
我表示很不理解啊,直接写从小到大排列不就是负数在左边,0在中间,正数在右边吗?
冒泡排序法,快速排序,插入排序……
也可以直接调用函数qsort也行
void sort(int *p,int n) {
int i,j;
for(i=0;i<n-1;i++) {
int leap=1;
for(j=0;j<n-1-i;j++) {
if(p[j]>p[j+1])
{int temp=p[j];p[j]=p[j+1];p[j+1]=temp;leap=0;}
}
if(leap) return;
}
}
不知道写错没
冒泡排序法,快速排序,插入排序……
也可以直接调用函数qsort也行
void sort(int *p,int n) {
int i,j;
for(i=0;i<n-1;i++) {
int leap=1;
for(j=0;j<n-1-i;j++) {
if(p[j]>p[j+1])
{int temp=p[j];p[j]=p[j+1];p[j+1]=temp;leap=0;}
}
if(leap) return;
}
}
不知道写错没
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-29
展开全部
我也刚刚学C语言 也不太懂 如果说的不对 见谅哈 是不是rest函数里面i的变量没有发生变化啊 i一直都是0吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
else if(a[i]=0) 中的a[i] = 0改为a[i] == 0;
追问
对一个一维数组进行排序(不是按大小,而是按正负数),即0在中间,负数在前面,正数在后面,
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看错问题。。 罪过罪过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询