数组排序问题

chenchenchenliu 2009-05-09 10:16:58
一个结构体,包括数据成员:一维数组array[n],(存放n个学生的成绩)num变量(记录学生的学号)
要求:
将此n个学生的成绩进行升序排列,并分别输出其学号和成绩(同样按升序顺序依次输出)
谢谢啦先!!!
...全文
179 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaaa3105563 2009-05-10
  • 打赏
  • 举报
回复
看不懂认真看···
s1418252 2009-05-10
  • 打赏
  • 举报
回复
就是有点小问题,分配空间的时候是否分配成功做下判断好点,对于指针的使用做下判断就比较好了。
pengzhixi 2009-05-10
  • 打赏
  • 举报
回复
用stl中的算法就OK了吧
strive0 2009-05-10
  • 打赏
  • 举报
回复
stl 啊,学习学习。。。
cnStreamlet 2009-05-09
  • 打赏
  • 举报
回复
呃,楼上写快了,没考虑周全,应该用multimap
cnStreamlet 2009-05-09
  • 打赏
  • 举报
回复
num 里元素什么类型?暂当 num_type 了



#include <map>
#include <iostream>
using namespace std;

map<int, num_type> scores;

for (int i = 0; i < n; ++i)
{
scores.insert(make_pair(array[i], num[i]));
}

for (map<int, num_type>::iterator i = scores::begin(); i != scores.end(); ++i)
{
cout << i->second << ":" << i->first << endl;
}

lingyin55 2009-05-09
  • 打赏
  • 举报
回复
另外,用c++的话可以考虑用stl标准模板来实现,这样就更简单了。
你可以去看看stl的东西。

[Quote=引用 4 楼 chenchenchenliu 的回复:]
谢谢谢谢,但最好用C++风格来编那就更是感激不尽了
[/Quote]
lingyin55 2009-05-09
  • 打赏
  • 举报
回复
其实都差不多,这里只是用了malloc,c++你最多改成new,这种东西,
只是给个参考,还是自己多动手编编吧,编了有问题再讨论,这样比较有收获

[Quote=引用 4 楼 chenchenchenliu 的回复:]
谢谢谢谢,但最好用C++风格来编那就更是感激不尽了
[/Quote]
chenchenchenliu 2009-05-09
  • 打赏
  • 举报
回复
谢谢谢谢,但最好用C++风格来编那就更是感激不尽了
adventurelw 2009-05-09
  • 打赏
  • 举报
回复
看不懂,干嘛用一个数组存储成绩而把学号分开。。。。。。
用一个pair<int, int>一一对应多好啊
再随便存储到什么数组或容器中,sort排序添加第三个参数,比较函数对象。
lingyin55 2009-05-09
  • 打赏
  • 举报
回复
main函数需要加上返回类型int,其余的功能就是几个信息和打印,楼主自己动动手添加吧。
lingyin55 2009-05-09
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<stdlib.h>

int *inputScore(int); //函数功能:创建一个能容纳size个整数的动态数组,然后从键盘读取size个学生的成绩存储到数组中。
void sort(int*,int); //函数功能:对array指向的数组进行排序。
void printScore(int*,int); //函数功能:打印array指向的数组元素。

main()
{
int size;
int *array=NULL;

//读入学生人数,赋给size
printf("请输入学生人数:\n");
scanf("%d",&size);

//读取每个同学的成绩
printf("请输入这%d个学生的成绩:\n",size);
array=inputScore(size);

//对成绩进行排序
sort(array,size);
printf("从高到低,这%d个学生的成绩为:\n",size);

//打印出成绩
printScore(array,size);

//释放动态数组
free(array);

system("pause");
return 0;
}

/*函数功能:创建一个能容纳size个整数的动态数组,然后从键盘读取size个学生的成绩存储到数组中。
函数参数说明:size:动态数组的长度;
函数返回值:指向动态数组第一个元素的指针。*/
int *inputScore(int size)
{
int * array;
int i;

//申请动态数组的空间,再进行读取成绩
array=(int *)malloc(sizeof(int)*size);;
for(i=0;i<=size-1;i++){
scanf("%d",array+i);
}
return array; //返回动态数组的首地址
}

/*函数功能:对array指向的数组进行排序。
函数参数说明:array:指向待排序的数组的第一个元素的指针;size:数组元素的个数。*/
void sort(int * array,int size)
{
int i,pass,hold;

//用泡沫排序法对数组进行排序
for(pass=1;pass<=size-1;pass++){
for(i=0;i<=size-2;i++){
if(*(array+i)<*(array+i+1)){
hold=*(array+i);
*(array+i)=*(array+i+1);
*(array+i+1)=hold;
}
}
}
}

/*函数功能:打印array指向的数组元素。
函数参数说明:array:指向待排序的数组的第一个元素的指针;size:数组元素的个数。*/
void printScore(int * array,int size)
{
int i;

//逐个打印数组中的元素
for(i=0;i<=size-1;i++){
printf("%d ",*array);
array++;
}
printf("\n");
}



http://hi.baidu.com/amethyst_zijing/blog/item/3902cd11d3e0eb10b8127b6b.html

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧