修改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);
}
展开
 我来答
White_MouseYBZ
推荐于2017-12-16 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6389万
展开全部

你的排序没有任何问题。问题有2——

  1. 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++)以纠正。

  2. 没有对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];//增加这一句

    }

疯花倔呆
2013-06-01 · 超过21用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:66.2万
展开全部
#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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8112784
2013-06-01 · TA获得超过163个赞
知道答主
回答量:147
采纳率:0%
帮助的人:123万
展开全部
排序那里不是冒泡排序吗,好像没问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式