当前位置:首页 > 新闻中心 > 电气版块 > 详细内容
【C语言_小知识】struct student(结构体 存储,排序,输出
发布时间:2014/6/23  阅读次数:2293  字体大小: 【】 【】【

程序使用输入的先后顺序定义学生的名字。
将学生信息保存在结构变量数组中,
使用冒泡算法排序

学习心得:数组可以用来存储结构体变量,假设结构体有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;
                        }
                }
        }

}



运行截图

上一篇:没有了! 下一篇:【C语言_小知识】补码
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[1]
    暂无已审核评论!


惠州市胜克机电设备有限公司 版权所有

 Copyright By www.hzskjd.com