2013第二周上机任务项目一(有序的结构体数组)
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:樊露露 * 完成日期:2013 年3月8日 * 版本号:v1.0 * * 输入描述:无 * 问题描述:用结构体对学生成绩排序 * 程序输出:* 问题分析: * 算法设计:略 */ #include<iostream>using namespace std;struct Score{char num[14];int cpp;int math;int english;};void sort1(Score [],int );void sort2(Score [],int );void output(Score [],int );int main(){Score score[]={{"201152501104",65,69,68},{"201152501114",94,89,63},{"201152501138",67,62,84},{"201152501204",100,65,91},{"201152501202",59,80,55},{"201152501115",92,84,60},{"201152501201",80,92,71},{"201152501145",88,56,67},{"201152501203",62,62,95},{"201152501140",80,60,86},{"201152501205",73,90,94},};int stuNum=sizeof(score)/sizeof(score[0]);//将所有同学按学号升序排序后输出sort2(score,stuNum);cout<<"按学号升序后排列为:"<<endl;output(score,stuNum);sort1(score,stuNum);cout<<"按C++降序排列后:"<<endl;output(score,stuNum);return 0;}void sort1(Score score[],int stuNum){struct Score a[1];int i,j;for(i=0;i<stuNum;i++){for(j=0;j<stuNum-1;j++)if(score[j].cpp<score[j+1].cpp){a[0]=score[j];score[j]=score[j+1];score[j+1]=a[0];}}return ;}void sort2(Score score[],int stuNum){struct Score a[1];int i,j;for(i=0;i<stuNum;i++){for(j=0;j<stuNum-1;j++)if(strcmp(score[j].num,score[j+1].num)>0){a[0]=score[j];score[j]=score[j+1];score[j+1]=a[0];}}return ;}void output(Score score[],int stuNum){int i;for(i=0;i<stuNum;i++){cout<<score[i].num<<" "<<score[i].cpp<<" "<<score[i].math<<" "<<score[i].english<<endl;}return ;}
- 1楼sxhelijian前天 21:10
- 36行struct Score *a;为会么要用指针呢?43在未给a赋值的情下,就为a指向的单元*a赋值,自然发生如图内存写的错误了。