永发信息网

c++自定函数冒泡排数问题

答案:5  悬赏:20  手机版
解决时间 2021-08-18 19:18
  • 提问者网友:呐年旧曙光
  • 2021-08-18 16:27

#include<iostream.h>
int fun(int b[])
{
int i,j,t;
for(i=1;i<=9;i++)
for(j=1;j<=9;j++)
if(b[j]>b[j+1])
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
return b[];
}
main()
{
int a[11],b;
for(b=1;b<11;b++)
cin>>a[b];
fun(a);
for(b=1;b<=10;b++)
cout<<a[b]<<" ";
}

帮忙改一下,老是错误

最佳答案
  • 五星知识达人网友:洎扰庸人
  • 2021-08-18 17:52
#include<iostream.h>
void fun(int b[]) //对数组的操作在实现时是指针操作,不需要另外的返回值了
{
int i,j,t;
for(i=0;i<9;i++)
for(j=10;j>i;j--) //每趟冒泡是从上一次确定的数后开始的,也就是从i到末尾,而不是从1开始
if(b[j]>b[j-1])
{
t=b[j];
b[j]=b[j-1];
b[j-1]=t;
}
return ;
}
void main()
{
int a[11],b;
for(b=0;b<10;b++) //这里角标弄错,11长度的数组下标从0~10而不是从1~11
cin>>a[b];
fun(a);
for(b=0;b<10;b++)
cout<<a[b]<<" ";
}
全部回答
  • 1楼网友:过活
  • 2021-08-18 21:46

#include<iostream>

using namespace std; void fun(int b[]) { int i,j,t; for(i=1;i<=10;i++) for(j=1;j<=10-i;j++) if(b[i]>b[j]) { t=b[i]; b[i]=b[j]; b[j]=t; } } int main() { int a[11],b; for(b=1;b<11;b++) cin>>a[b]; fun(a); for(b=1;b<=10;b++) cout<<a[b]<<" ";

return 0;

}

  • 2楼网友:你哪知我潦倒为你
  • 2021-08-18 21:17
#include<iostream.h> void fun(int *b) { int i,j,t; for(i=1;i<=9;i++) for(j=1;j<=9;j++) if(b[j]>b[j+1]) { t=b[j]; b[j]=b[j+1]; b[j+1]=t; } } main() { int a[11],b; for(b=1;b<11;b++) cin>>a[b]; fun(a); for(b=1;b<=10;b++) cout<<a[b]<<" "; } 首先,函数fun()的返回值不应该是Int,你想将fun(a)运算后的数组b【】返回,但是你想过没,其实你只要对数组a的地址间进行运算会非常方便。而且int fun()只能一次返回一个值,所以非要用的话,要多次调用!很麻烦的。还不明白的话,在空间留言~~
  • 3楼网友:等灯
  • 2021-08-18 20:09

你直接说题目吧,你的思路太紊乱了,你不知道数组下标第一个是0,比如a[0],然后你子函数里是9*9的2维数组,你主函数里的数组数又超过了9个,而且函数之间的数组引用要用指针来完成,指针可以是*p形式,也可以是a[0]形式,但不能直接引用整个数组

  • 4楼网友:迷人又混蛋
  • 2021-08-18 19:09

#include<iostream.h> void fun(int b[]) //函数中数组b是通过指针传递进来. 所以不需要再将b返回了.返回类型可以用void { int i,j,t; for(i=1;i<=9;i++) for(j=1;j<=9;j++) if(b[j]>b[j+1]) { t=b[j]; b[j]=b[j+1]; b[j+1]=t; }

//return b[]; //不需要返回. } main() { int a[11],b; for(b=1;b<11;b++) cin>>a[b]; fun(a); for(b=1;b<=10;b++) cout<<a[b]<<" "; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯