精华内容
下载资源
问答
  • 根据结构体数组中某一数据项对结构体数组排序

    万次阅读 多人点赞 2018-08-17 17:46:06
    /* ...*All rights reserved. ...*问题描述:输入结构体数组,并根据结构体中的某一数据项整个结构体数组进行排序 *输入描述:; *程序输出: */ #include<stdio.h> #include<string.h> struc...
    /*
    *copyright(c) 2018,HH
    *All rights reserved.
    *作 者:HH
    *完成日期:2018年8月17日
    *版本号:v1.0
    *
    *问题描述:输入结构体数组,并根据结构体中的某一数据项对整个结构体数组进行排序
    *输入描述:;
    *程序输出:
    */
    
    
    #include<stdio.h>
    #include<string.h>
    
    struct student
    {
        int num;
        char name[20];
        int cpp;
        int math;
        int english;
        int grade;
        double average;
    };
    struct student per[6];
    struct student test;
    
    int main()
    {
        int n,m;
        printf("请输入需要统计信息的学生个数:\n");
        scanf("%d",&m);
        printf("请依次输入该%d名学生的信息\n",m);
        for(n=0;n<m;n++)
        {
            printf("请输入第%d个学生学号:\n",n+1);
            scanf("%d",&per[n].num);
            printf("请输入第%d个学生姓名:\n",n+1);
            scanf("%s",&per[n].name);
            printf("请输入第%d个学生C语言成绩:\n",n+1);
            scanf("%d",&per[n].cpp);
            printf("请输入第%d个学生数学成绩:\n",n+1);
            scanf("%d",&per[n].math);
            printf("请输入第%d个学生英语成绩:\n",n+1);
            scanf("%d",&per[n].english);
            per[n].grade=per[n].math+per[n].cpp+per[n].english;
            printf("第%d个学生的总成绩是%d:\n",n+1,per[n].grade);
            per[n].average=per[n].grade/3;
            printf("第%d个学生的平均成绩是%f:\n",n+1,per[n].average);
        }
        int i,j;
        for(i=0;i<m;i++)
        {
           for(j=0;j<m-i-1;j++)//此处很重要
            {
                if(per[j].cpp<per[j+1].cpp)//根据单一数据项,对整个结构体进行排序
                {
                    test=per[j+1];//结构体允许整体赋值
                    per[j+1]=per[j];
                    per[j]=test;
                }
            }
        }
        printf("该%d名学生按照C语言成绩的排序分别是:\n",m);
        for(i=0;i<m;i++)
        {
            printf("c语言第%d名的信息如下:\n",i+1);
            printf("%d %s\n",per[i].num,per[i].name);
            printf("%d %d %d %d %f\n",per[i].cpp,per[i].math,per[i].english,per[i].grade,per[i].average);
        }
        return 0;
    }
    
    
    
    
    
    

    展开全文
  • 在按照某一成分对结构体进行排序时,其基本思路和数组排序一样,可以利用指针进行简化,也可以直接利用结构体名进行排序,如下实例,是利用平均分数对学生这一结构体进行排序的1、定义结构体struct student//定义...

    在按照某一成分对结构体进行排序时,其基本思路和数组排序一样,可以利用指针进行简化,也可以直接利用结构体名进行排序,如下实例,是利用平均分数对学生这一结构体进行排序的

    1、定义结构体

    struct student//定义结构体 
    {
    	int num;
    	char name[10];
    	int score[3];
    	float ave;
     }stu[5];

    2、输入数据

    int i,j,sum,t;
    	FILE *fp;
    	struct student p,temp,re[6];
    	for(i=0;i<5;i++)//结构体赋值 
    	{
    		printf("输入第%d条记录\n",i+1);
    		scanf("%d,%s",&stu[i].num,stu[i].name);
    		printf("请输入三门课成绩\n");
    		scanf("%d,%d,%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
    		sum=0;
    		sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
    		stu[i].ave=sum/3.0;
    	}

    3、排序

    for(i=0;i<4;i++)//文件排序 
        for(j=i+1;j<5;j++)
        if(stu[i].ave>stu[j].ave)
       	{
        	temp=stu[i];
        	stu[i]=stu[j];
        	stu[j]=temp;
    	}		
    	if((fp=fopen("stu_sort.txt","w"))==NULL)
    	{
    		printf("cannot open stud.txt\n");
    		exit(0);
    	}
    	for(i=0;i<5;i++)
     	fwrite(&stu[i],sizeof(struct student),1,fp);	
        fclose(fp);	
    	if((fp=fopen("stu_sort.txt","r"))==NULL)
    	{
    		printf("cannot open stud.txt\n");
    		exit(0);
    	}
    		for(i=0;i<5;i++)
    	{
    		fread(&stu[i],sizeof(struct student),1,fp);	
            printf("%d,%s,%d,%d,%d,%6.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave);
    	}	
        fclose(fp);

    展开全文
  • 数组排序(从小到大,从大到小) 结构体排序(数字参数从大到小…字符串为参数 字典序…) 代码示例:(直接复制运行对比结果看源码) /* sort 排序函数 可以调用 自定义 参数cmp sort(a,a+10,cmp); */ #include<...

    sort(); 位于C++

    头文件 #include中

    数组排序(从小到大,从大到小)

    结构体排序(数字参数从大到小…字符串为参数 字典序…)

    代码示例:(直接复制运行对比结果看源码)

    /*
    sort 排序函数 
    可以调用 自定义 参数cmp
    sort(a,a+10,cmp); 
    */
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct node
    {
    	int sum;
        int num; 
    	char s[10];
    } str[10];
    
    int cmp_2(node a, node b){
    	if(a.sum!=b.sum)
    	return a.sum>b.sum;
    	else
    	return a.num>b.num;
    	//二级 cmp 
    }
    
    int cmpn1(node a,node b)
    {
    	return a.sum>b.sum;
    }
    int cmpn2(node a,node b)
    {
    	return a.s>b.s;
    }
    int cmp(int a,int b)
    {
    	return a>b;
    }
    
    int main()
    {
    	freopen("a22.txt","w",stdout);
    	int a[100]= {1,3,6,9,4,2,3,6,7,10};
    //一共10个
    	cout<<"a数组最初状态\n"<<endl;
    	for(int i=0; i<10; i++)
    		cout<<a[i]<<endl;
    //需要排序首位置加上需排序的位长
    	cout<<"默认是从大到小排序\n"<<endl;
    	sort(a,a+10);
    	for(int i=0; i<10; i++)
    		cout<<a[i]<<endl;
    	cout<<endl;
    	cout<<"引入cmp()从大到小\n"<<endl;
    	sort(a,a+10,cmp);
    	for(int i=0; i<10; i++)
    		cout<<a[i]<<endl;
    	cout<<endl;
    //	结构体赋值
    	for(int i=0; i<10; i++)
    	{
    		str[i].sum=i;
    		str[i].s[0]='a'+i;
    	}
    	cout<<"以sum为参数 调用cmp1进行从大到小\n"<<endl;
    	sort(str,str+10,cmpn1);
    	for(int i=0; i<10; i++)
    		cout<<str[i].sum<<endl;
    	cout<<endl;
    	cout<<"经过sum作为参数排序后,字符串目前状态\n"<<endl;
    	for(int i=0; i<10; i++)
    		cout<<str[i].s<<endl;
    	cout<<endl;
    	cout<<"以s为参数 调用cmp2进行字典序\n"<<endl;
    	sort(str,str+10,cmpn2);
    	for(int i=0; i<10; i++)
    		cout<<str[i].s<<endl;
    	cout<<endl;
    
    	return 0;
    }
    
    
    展开全文
  • 比如说 我有个结构体数组里面每个元素是 struct a{ int cat; string train; double plane; float tree;}; 然后首先按cat从小到大排,然后train从大到小,接着plane大到小,最后tree 小到大.我已经写了个...
  • sort函数对结构体数组排序 #include<iostream> #include<algorithm> using namespace std; struct st { int a1; int b1; }arr[100]; //首先 &是取地址运算符 在cmp 把结构体地址赋值给了 x ,y...

    sort函数对结构体数组排序

    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct st
    {
    	int a1;
    	int b1;
    }arr[100];
    //首先 &是取地址运算符   在cmp中 把结构体的地址赋值给了 x ,y ;
    //x对应sort函数的第一个参数,y 对应sort函数的第二个参数  
    // x.b1 与  y.b1 就确定了  排序的元素和大小顺序
    bool  cmp(const st &x, const st &y)
    {
    	return x.b1<y.b1;//从小到大排<,若要从大到小排则>
    }
    int main()
    {
    	int i;
    	for (i=0;i<3;i++)
    	  cin>>arr[i].a1>>arr[i].b1;//对结构体进行输入 
    	  sort(arr,arr+3,cmp);
    	for (i=0;i<3;i++)
    	  cout<<arr[i].a1<<" "<<arr[i].b1<<endl;
    }
    
    展开全文
  • 函数fun功能是从形参filename所指文件读取学生数据,并按照学号从小到大排序后,再用二进制方式白排序学生数据输出到filename所指文件覆盖原来内容。 #include #define N 5 typedef struct ...
  • qsort对结构体数组进行排序时,可以根据结构体元素中任意某个成员进行比较之后,如果要交换则会连带结构体中其他成员一起进行整体结构体元素交换所以感觉真是万能排序接口只进行对结构体的一级排序 ...
  • c++对结构体数组排序

    千次阅读 2017-01-26 16:23:40
    结构体中某个成员进行排序,下面代码以成员b1为升序的排序 代码: #include #include using namespace std; struct st { int a1; int b1; }arr[100]; bool cmp(const st &x, const st &y) { return x.b1 } ...
  • 有一组学生数据,每个数据含有三门课成绩,请按成绩总和从高到低这组数据进行排序。 编写函数calc求出每名学生的总分。 编写函数sort按每名学生的总分从高到低... 函数sortp指针所指的结构体数组的学生数据按总分
  • 结构体数组排序

    千次阅读 2013-09-30 10:22:27
    对结构体数组排除时,首先确定需要排序数组的关键字,并且在排序过程中不是交换关键字的顺序,而是应该交换这个结构的地址,从而使得结构体中的每项能够对应的改变;其中对应的代码如下: #include #include ...
  • 结构体中某个成员进行排序,下面代码以成员b1为升序的排序 代码: #include<iostream> #include<algorithm> using namespace std; struct st { int a1; int b1; }arr[100]; ...
  • 之前发过,有讲到过对结构体字符串进行排序的,除了手写之外,便想到用C/C++中的qsort来对结构体数组中的字符串进行排序。但是推广到sort时,想了好久也没想明白,看看网上这样帖也比较少,其实还是很好...
  • 6-3 结构体数组按总分排序 (10 分)

    万次阅读 2018-12-16 19:39:36
    6-3 结构体数组按总分排序 (10 分) 有一组学生数据,每个数据含有三门课成绩,请按成绩总和从高到低这组数据进行排序。 编写函数calc求出每名学生总分。 编写函数sort按每名学生总分从高到低这组数据...
  • C++sort()给结构体数组排序

    万次阅读 2016-11-20 17:04:12
    对结构体数组排序时,首先确定排序数组的关键字,并且在排序过程不是交换关键字的顺序,而是交换这个结构的地址,从而使结构体数组有序。 #include using namespace std; #include typedef struct Test { int...
  • 一、自定义结构体中的变量是 int 、usigned int 等类型时 有如下三种方法 #include "stdafx.h" #include #include #include #include using namespace std; //for_each 谓词,为了输出不同对象, ...
  • //基本思想是:先从文件读取那20个数放入字符数组中,然后再字符数组进行操作 #include<stdio.h> #include<stdlib.h> #include<string.h> #define M 5 struct ST{ cha...
  • 考研初试成绩公布后需要m个学生成绩进行排序,筛选出可以进入复试前n名学生。排序规则为首先按照总分排序,总分相同则按英语单科成绩排序,总分和英语成绩也相同时考号小者排在前面。现给出这m个学生考研...
  • 有序的结构体数组

    千次阅读 2013-03-11 11:48:24
    /* * 程序版权和版本声明部分 ...* All rightsreserved. * 文件名称:score.cpp * 作 者: 邱学伟 * 完成日期:2013 年 3 月 11 日 ...* 问题描述:将学生成绩信息存储在结构体数组中对结构体排序并输出 * 输出:按C+
  • std::sort()函数功能很强大,且可以类,结构体等元素进行排序。首先来看看std中的快速排序算法sort使用方法:template void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );...
  • 因为他是第一次用链表,表述成了链表排序真好用,当时我说的是用结构体数组应该更好一些吧,数组的排序要比链表快吧(回头查了一下链表的插入排序与数组的冒泡排序或快速排序 的对比)。我却劝别人用,但自己还没用...
  • 结构体数组计算

    2013-03-13 22:17:02
    * 文件名称:score.cpp * 作 者: 王俊* 完成日期:2013 年3 月12 日 * 版本号: v1.0 * 输入描述:已经在程序初始化 * 问题描述:将学生成绩信息存储在结构体数组中对结构体排序并输出 * 输出:按C++降序和按...
  • go语言slice()不仅仅可以int类型的数组进行排序,还可以struct类型的数组进行排序排序函数如下1.Slice() 不稳定排序2. SliceStable() 稳定排序3.SliceIsSorted() 判断是否已排序结构体定义如下,我们完全可以...
  • 2-1 有序的结构体数组

    2013-03-13 22:05:12
    /* * 程序版权和版本声明部分 ...* All rightsreserved. * 文件名称:shuzu .cpp * 作 者: 孙红蕾 * 完成日期:2013年03月13日 ...* 问题描述: 将学生成绩信息储存在结构体数组中对结构体排序并输出 */ #includ
  • C++第2周项目1——有序的结构体数组

    千次阅读 2013-03-09 16:35:49
    课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8635385【项目1-有序...编程序,要求对结构体排序并输出。请完成函数
  • /* * 程序版权和版本声明部分 ...* All rightsreserved. * 文件名称:score.cpp * 作 者:胡颖 * 完成日期:2013 年3 月13 日 ...* 问题描述:将学生成绩信息存储在结构体数组中对结构体排序并输出 *

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 366
精华内容 146
关键字:

对结构体中数组的排序