作者freddy (lkking)
看板C_and_CPP
标题[讨论] 用指标排序?
时间Sat May 9 11:27:08 2020
如题,小弟最近刚学c++(学到指标阵列这边),刚刚在用指标排序数字时,有点问题
题目如下:
有多笔测资以EOF为结束
第一行有一个正整数n(1<=n<=1000),代表有几个数字要排
第二行有n个可以用int储存的正整数
例如:
6
7 9 0 4 1 8
8
1 9 9 0 0 9 2 8
我的码:
#include <iostream>
#include <cstdlib>
using namespace std;
int *ptr,i,p,index;
void fc(int);
int main(void)
{
while(scanf("%d",&i)!=EOF){
ptr=(int*)malloc(i*4);
fc(i);
free(ptr);
}
return 0;
}
void fc(int p){
int j,k,stay;
for(index=0;index<p;index++,ptr++){
cin>>*ptr;
}
ptr-=p;
for(j=0;j<p;j++){
for(k=0;k<(p-1);k++){
if(*(ptr+k)>*(ptr+k+1)){
stay=*(ptr+k);
*(ptr+k)=*(ptr+k+1);
*(ptr+k+1)=stay;
}
}
p--;
}
p=i;
for(index=0;index<p;index++,ptr++){
cout<<*ptr;
}
}
问题如下:
1. main()的return值是一堆数字
2.读完第一笔测资就结束了
小弟第一次在c++版发问,排版稍乱还请见谅。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.167.52.127 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1588994830.A.F7F.html
1F:→ Lipraxde: 你在输出看到的是你用 cout 输出的结果,并不是 main 05/09 14:06
2F:→ Lipraxde: 回传的值。fc 最後在输出排序结果後没有把 ptr 扣回去 05/09 14:06
3F:→ Lipraxde: ,所以在 free 的时候出问题,导致程式没继续跑。 05/09 14:06
4F:→ Lipraxde: 你可以先从「想清楚 fc 要做啥、需要哪些参数?」开始 05/09 14:06
5F:→ Lipraxde: 改善这只程式 05/09 14:06