#include <iostream.h>
void func(int *);
void main()
{
int data[8];
int i;
cout < <"\nenter 8 is number:";
for(i=0;i <8;i++)
cin>>data[i];
func(data);
cout < <"\norder by enter:";
for(i=0;i <8;i++)
cout < <data[i] < <",";
cout < <endl;
}
void func(int *s)
{
int i,j;
int work;
for(i=0;i <8;i++)
for(j=1;j <8;j++)
if(*(s+i) <*(s+j))
{
work=*(s+i);
*(s+i)=*(s+j);
*(s+i)=work;
}
}
为什么不排序?哪里出错了吗?各位帮帮忙,谢谢了!
答案:2 悬赏:50 手机版
解决时间 2021-05-01 22:59
- 提问者网友:火车头
- 2021-04-30 23:55
最佳答案
- 五星知识达人网友:等灯
- 2021-05-01 01:26
一些细微的错误
帮你改出来了 错的地方也些了注释
如果满意我的回答 记得选个满意答案哦
#include <iostream.h>
void func(int *);
void main()
{
int data[8];
int i;
cout<<"\nenter 8 is number:";
for(i=0;i <8;i++)
cin>>data[i];
func(data);
cout <<"\norder by enter:";
for(i=0;i <8;i++)
cout <<data[i] <<",";
cout <<endl;
}
void func(int *s)
{
int i,j;
int work;
for(i=0;i <7;i++)
for(j=i+1;j <8;j++) //这里j的初始值错了
if(*(s+i) <*(s+j))
{
work=*(s+i);
*(s+i)=*(s+j);
*(s+j)=work; //这里是s+j 不是s+i
}
}
全部回答
- 1楼网友:躲不过心动
- 2021-05-01 02:01
在fun函数中的排序:
void func(int *s) { int i,j; int work; for(i=0;i<8;i++) for(j=i;j<8;j++) if(*(s+i) < *(s+j)) { work=*(s+i); *(s+i)=*(s+j); *(s+j)=work; //中间变量应该赋值给*(s+j). 你给*(s+i)了. } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯