修改fun2函数,实现 1,将数组a中大于-20的元素,依次存放到数组b中 2,将数组b中的元素按照从小到大的
顺序存放到数组c中,3,函数返回b中元素的个数我补充一下主要是对数组进行排序的地方错了,但我不知道怎么改#include<stdio.h>intfun2(inta[],i...
顺序存放到数组c中,
3,函数返回b中元素的个数
我补充一下主要是对数组进行排序的地方错了,但我不知道怎么改
#include <stdio.h>
int fun2(int a[],int n,int b[],int c[])
{/**/int m,i,j,t,q;
for(i=0;i<n;i++){
if(a[i]>-20){b[j]=a[i];j++;q=j;}}
m=q;
for(i=0;i<m;i++)
for(j=i+1;j<m;j++)
if(b[i]>b[j]){t=b[j];b[j]=b[i];b[i]=t;}
return q; /**/
}
void main()
{ int n = 10, i, nb;
int aa[10] = {12, -10, -31, -18, -15, 50, 17, 15, -20, 20};
int bb[10], cc[10];
printf("There are %2d elements in aa.\n", n);
printf("They are: ");
for(i=0; i<n; i++) printf("%6d", aa[i]);
printf("\n");
nb = fun2(aa, n, bb, cc);
printf("Elements in bb are: ");
for (i=0; i<nb; i++) printf("%6d", bb[i]);
printf("\n");
printf("Elements in cc are: ");
for(i=0; i<nb; i++) printf("%6d", cc[i]);
printf("\n");
printf("There are %2d elements in bb.\n", nb);
} 展开
3,函数返回b中元素的个数
我补充一下主要是对数组进行排序的地方错了,但我不知道怎么改
#include <stdio.h>
int fun2(int a[],int n,int b[],int c[])
{/**/int m,i,j,t,q;
for(i=0;i<n;i++){
if(a[i]>-20){b[j]=a[i];j++;q=j;}}
m=q;
for(i=0;i<m;i++)
for(j=i+1;j<m;j++)
if(b[i]>b[j]){t=b[j];b[j]=b[i];b[i]=t;}
return q; /**/
}
void main()
{ int n = 10, i, nb;
int aa[10] = {12, -10, -31, -18, -15, 50, 17, 15, -20, 20};
int bb[10], cc[10];
printf("There are %2d elements in aa.\n", n);
printf("They are: ");
for(i=0; i<n; i++) printf("%6d", aa[i]);
printf("\n");
nb = fun2(aa, n, bb, cc);
printf("Elements in bb are: ");
for (i=0; i<nb; i++) printf("%6d", bb[i]);
printf("\n");
printf("Elements in cc are: ");
for(i=0; i<nb; i++) printf("%6d", cc[i]);
printf("\n");
printf("There are %2d elements in bb.\n", nb);
} 展开
展开全部
你的排序没有任何问题。问题有2——
fun2中的
for(i=0;i<n;i++){
if(a[i]>-20){b[j]=a[i];
j++;
q=j;
}
}
中,b[j]=a[i]表达式中的j还没有初始化就使用了,出大错。把for(i=0;i<n;i++)改成for(j=i=0;i<n;i++)以纠正。
没有对C[]赋值,却要输出其内容,所以错。在fun2中的for(i=0;i<m;i++)循环里增加一句为c[]赋值语句纠正,改如下:
for(i=0;i<m;i++){
for(j=i+1;j<m;j++)
if(b[i]>b[j]){
t=b[j];
b[j]=b[i];
b[i]=t;
}
c[i]=b[i];//增加这一句
}
展开全部
#include <stdio.h>
int fun2(int a[],int n,int b[],int c[])
{/**/int m,i,j,t,q;
for(i=0,j=0;i<n;i++){ //j要初始化
if(a[i]>-20){b[j]=a[i];j++;q=j;}}
m=q;
for(i=0;i<m;i++)c[i]=b[i]; //将b数组赋值给c数组
for(i=0;i<m;i++)
for(j=i+1;j<m;j++)
if(c[i]>c[j]){t=c[j];c[j]=c[i];c[i]=t;} //对c数组排序,b数组不用排序了
return q; /**/
}
void main()
{ int nn = 10, i, nb;
int aa[10] = {12, -10, -31, -18, -15, 50, 17, 15, -20, 20};
int bb[10], cc[10];
printf("There are %2d elements in aa.\n", nn);
printf("They are: ");
for(i=0; i<nn; i++) printf("%6d", aa[i]);
printf("\n");
nb = fun2(aa, nn, bb, cc);
printf("Elements in bb are: ");
for (i=0; i<nb; i++) printf("%6d", bb[i]);
printf("\n");
printf("Elements in cc are: ");
for(i=0; i<nb; i++) printf("%6d", cc[i]);
printf("\n");
printf("There are %2d elements in bb.\n", nb);
}
int fun2(int a[],int n,int b[],int c[])
{/**/int m,i,j,t,q;
for(i=0,j=0;i<n;i++){ //j要初始化
if(a[i]>-20){b[j]=a[i];j++;q=j;}}
m=q;
for(i=0;i<m;i++)c[i]=b[i]; //将b数组赋值给c数组
for(i=0;i<m;i++)
for(j=i+1;j<m;j++)
if(c[i]>c[j]){t=c[j];c[j]=c[i];c[i]=t;} //对c数组排序,b数组不用排序了
return q; /**/
}
void main()
{ int nn = 10, i, nb;
int aa[10] = {12, -10, -31, -18, -15, 50, 17, 15, -20, 20};
int bb[10], cc[10];
printf("There are %2d elements in aa.\n", nn);
printf("They are: ");
for(i=0; i<nn; i++) printf("%6d", aa[i]);
printf("\n");
nb = fun2(aa, nn, bb, cc);
printf("Elements in bb are: ");
for (i=0; i<nb; i++) printf("%6d", bb[i]);
printf("\n");
printf("Elements in cc are: ");
for(i=0; i<nb; i++) printf("%6d", cc[i]);
printf("\n");
printf("There are %2d elements in bb.\n", nb);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
排序那里不是冒泡排序吗,好像没问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询