c++自定函数冒泡排数问题
解决时间 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]<<" ";
}
全部回答
#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()只能一次返回一个值,所以非要用的话,要多次调用!很麻烦的。还不明白的话,在空间留言~~
你直接说题目吧,你的思路太紊乱了,你不知道数组下标第一个是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]<<" ";
}
我要举报
大家都在看
推荐资讯