惠州市胜克机电设备有限公司 版权所有
Copyright By www.hzskjd.com |
程序使用输入的先后顺序定义学生的名字。
将学生信息保存在结构变量数组中,使用冒泡算法排序
学习心得:数组可以用来存储结构体变量,假设结构体有3个成员,如果用数组来存储的话,数组的每个元素又分为3个成员。
操作元素的成员:数组名[元素].成员名
// 164_结构体11_综合应用_学生管理系统(存储,排序,输出.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "malloc.h"
#include "string.h"
//定义数据结构
struct student
{
int age;
float score;
int NO;
};
//定义结构变量 pArr
struct student *pArr;
//函数声明
void input(int );
void output(int );
void maopaosheng(struct student * paRr, int i);
void maopaojiang(struct student * paRr, int i);
//主函数
int _tmain(int argc, _TCHAR* argv[])
{
int len,xuanze;
printf("请输入学生个数:\n");
printf("学生数(len)=");
scanf_s("%d",&len);
//动态构建一维数组
pArr = (struct student *) malloc (len * sizeof(struct student));
input(len); //输入数据
while(1)
{
printf("\n*****请选择数据处理类型:********\n\t1为降序排序\t其他 数字 为升序排序\n");
scanf_s("%d",&xuanze);
if(xuanze==1) //如果选择 为1,则调用 降序 函数
maopaojiang(pArr, len);
else //不 为1,则调用 升序 函数
maopaosheng(pArr, len);
output(len);
}
while(1);
return 0;
}
void input(int len1)
{
int i;
for(i=0;i<len1;i++)
{
printf ("******请输入第%d个学生信息:******\n",i+1);
pArr.NO = (i+1);
printf("年龄(age)=");
scanf_s("%d",&pArr.age);
printf("成绩(score)=");
scanf_s("%f",&pArr.score);
}
}
void output(int len2)
{
int i;
printf("********************************\n");
for(i=0;i<len2;i++)
{
printf ("学生%d:",pArr.NO);
printf("\t年龄(age)=%d", pArr.age);
printf("\t成绩(score)%f", pArr.score);
printf("\n");
}
}
void maopaojiang(struct student * paRr, int i)
{
int j,k;
struct student t;
for(j=0;j<i-1;j++)
{
for(k=0;k<i-1-j;k++)
{
if(paRr[k].score<paRr[k+1].score)
{
t= paRr[k];
paRr[k] = paRr[k+1];
paRr[k+1] = t;
}
}
}
}
void maopaosheng(struct student * paRr, int i)
{
int j,k;
struct student t;
for(j=0;j<i-1;j++)
{
for(k=0;k<i-1-j;k++)
{
if(paRr[k].score>paRr[k+1].score)
{
t= paRr[k];
paRr[k] = paRr[k+1];
paRr[k+1] = t;
}
}
}
}
运行截图
惠州市胜克机电设备有限公司 版权所有
Copyright By www.hzskjd.com |