精华内容
下载资源
问答
  • 2022-03-20 14:26:16
    void calc(struct student *p,int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            p[i].sum=0;
            for(int j=0;j<3;j++)
            {
                p[i].sum+=p[i].score[j];
            }
            
        }
    }
    void sort(struct student *p,int n)
    {
        struct student ad;
        int i,j;
        for(i=0;i<n;i++)
        {
            for(j=i+1;j<n+1;j++)
            {
            
                if(p[i].sum<p[j].sum)
                {
                    ad=p[i];
                    p[i]=p[j];
                    p[j]=ad;
                }
            }
            
        }
    }
    

    有一组学生数据,每个数据中含有三门课成绩,请按成绩总和从高到低对这组数据进行排序。 编写函数calc求出每名学生的总分。 编写函数sort按每名学生的总分从高到低对这组数据进行排序

    函数接口定义:

    void calc(struct student *p,int n); void sort(struct student *p,int n);

    其中 pn 都是用户传入的参数。 函数calc求出p指针所指的结构体数组中 n 名学生各自的总分。 函数sort对p指针所指的结构体数组的学生数据按总分降序排序。

    裁判测试程序样例:

    #include <stdio.h>
    struct student                    
    {
    int num;
    char name[15];
    float score[3];
    float sum;
    };
    void calc(struct student *p,int n);     
    void sort(struct student *p,int n);
    int main()
    {
    struct student stu[5];
    int i,j;
    float f;
    for(i=0;i<5;i++)
    {
        scanf("%d%s",&stu[i].num,stu[i].name);
        for(j=0;j<3;j++)
        { 
            scanf("%f",&f);
            stu[i].score[j]=f;
        }
    }
    calc(stu,5);
    sort(stu,5);
    for(i=0;i<5;i++)
    {
        printf("%5d%15s",stu[i].num,stu[i].name);
        printf("  %.1f  %.1f  %.1f  %.1f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].sum);
    }
    return 0;
    
    
    /* 请在这里填写答案 */
    
    
    

    输入样例:

    1 zhang 89 87 85
    2 liu  92 98 96
    3 li 74 71 72
    4 xion 95 98 99
    5 liu 99 100 100
    

    输出样例:

        5            liu  99.0  100.0  100.0  299.0
        4           xion  95.0  98.0  99.0  292.0
        2            liu  92.0  98.0  96.0  286.0
        1          zhang  89.0  87.0  85.0  261.0
        3             li  74.0  71.0  72.0  217.0

     代码:

    void calc(struct student *p,int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            p[i].sum=0;
            for(int j=0;j<3;j++)
            {
                p[i].sum+=p[i].score[j];
            }
            
        }
    }
    void sort(struct student *p,int n)
    {
        struct student ad;
        int i,j;
        for(i=0;i<n;i++)
        {
            for(j=i+1;j<n+1;j++)
            {
            
                if(p[i].sum<p[j].sum)
                {
                    ad=p[i];
                    p[i]=p[j];
                    p[j]=ad;
                }
            }
            
        }
    }
    

    更多相关内容
  • 6-12 结构体数组按总分排序

    千次阅读 2021-01-13 21:33:02
    有一组学生数据,每个数据中含有三门课成绩,请按成绩总和从高到低对这组数据进行排序。 编写函数calc求出每名学生的总分。 编写函数sort按每名学生的总分从高到低对这组数据进行排序 函数接口定义: void calc...

    有一组学生数据,每个数据中含有三门课成绩,请按成绩总和从高到低对这组数据进行排序。 编写函数calc求出每名学生的总分。 编写函数sort按每名学生的总分从高到低对这组数据进行排序

    函数接口定义:

    void calc(struct student *p,int n);     
    void sort(struct student *p,int n);
    

    其中 p 和 n 都是用户传入的参数。 函数calc求出p指针所指的结构体数组中 n 名学生各自的总分。 函数sort对p指针所指的结构体数组的学生数据按总分降序排序。

    裁判测试程序样例:

    #include <stdio.h>
    struct student                    
    {
    int num;
    char name[15];
    float score[3];
    float sum;
    };
    void calc(struct student *p,int n);     
    void sort(struct student *p,int n);
    int main()
    {
    struct student stu[5];
    int i,j;
    float f;
    for(i=0;i<5;i++)
    {
        scanf("%d%s",&stu[i].num,stu[i].name);
        for(j=0;j<3;j++)
        { 
            scanf("%f",&f);
            stu[i].score[j]=f;
        }
    }
    calc(stu,5);
    sort(stu,5);
    for(i=0;i<5;i++)
    {
        printf("%5d%15s",stu[i].num,stu[i].name);
        printf("  %.1f  %.1f  %.1f  %.1f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].sum);
    }
    return 0;
    
    
    /* 请在这里填写答案 */
    

    输入样例:

    1 zhang 89 87 85
    2 liu  92 98 96
    3 li 74 71 72
    4 xion 95 98 99
    5 liu 99 100 100
    

    输出样例:

        5            liu  99.0  100.0  100.0  299.0
        4           xion  95.0  98.0  99.0  292.0
        2            liu  92.0  98.0  96.0  286.0
        1          zhang  89.0  87.0  85.0  261.0
        3             li  74.0  71.0  72.0  217.0
    

    示例:

    void calc(struct student *p,int n)
    {
        for(int i=0; i<n; i++)
        {
            p[i].sum = p[i].score[0] + p[i].score[1] + p[i].score[2];
        }
    }
    
    void sort(struct student *p,int n)
    {
        struct student a;
    
        for(int i=0; i<n; i++)
        {
            for(int j = i; j<n; j++)
            {
                if(p[i].sum < p[j].sum)
                {
                    a = p[i];
                    p[i] = p[j];
                    p[j] = a;
                }
            }
        }
    }
    
    展开全文
  • 使用结构体数组排序

    千次阅读 2020-11-05 22:06:48
    案例描述:使用一个学生结构体班级中的学生按照成绩来使用冒泡排序排序输出 [ 分析:步骤 ] 1、创建一个学生结构体 struct Student //学生结构体 { int age; int score; string name; }; 2、创建一个学生...

    案例描述:使用一个学生结构体,将班级中的学生按照成绩来使用冒泡排序法排序输出
    [ 分析:步骤 ]
    1、创建一个学生结构体

    struct Student  //学生结构体
    {
    	int age;
    	int score;
    	string name;
    
    };
    

    2、创建一个学生结构体数组,并赋值

    	Student sdu[10] = {  //学生的信息
    		{18,95,"Student_A"},
    		{18,65,"Student_B"},
    		{18,78,"Student_C"},
    		{18,62,"Student_D"},
    		{18,76,"Student_E"},
    		{18,83,"Student_F"},
    		{18,90,"Student_G"},
    		{18,80,"Student_H"},
    		{18,91,"Student_I"},
    		{18,95,"Student_J"}
    
    	};
    

    3、以学生的分数进行排序

    void bubblesore(Student sdu[10],int len) //冒泡排序法
    {
    	for (int i = 0; i < len; i++)
    	{
    		for (int j = 0; j < len - i - 1; j++)
    		{
    			if (sdu[j].score < sdu[j + 1].score)
    			{
    				//分数交换
    				int temp_score= sdu[j].score;
    				sdu[j].score = sdu[j + 1].score;
    				sdu[j + 1].score = temp_score;
    				//年龄交换
    				int temp_age = sdu[j].age;
    				sdu[j].age = sdu[j+1].age;
    				sdu[j + 1].age = temp_age;
    				//名字交换
    				string temp_name = sdu[j].name;
    				sdu[j].name = sdu[j + 1].name;
    				sdu[j + 1].name = temp_name;
    			}
    		}
    	}
    }
    

    4、打印排序之后的学生名次

    void printfInfo(Student *sdu, int len)//输出结构体信息
    {
    	for (int i = 0; i < len; i++)
    	{
    		cout << "第" << i + 1 << "名是:" << sdu[i].name << "成绩为: " << sdu[i].score << endl; 
    	}
    }
    

    结果:
    使用冒泡排序法之后的打印输出
    在冒泡排序法中可以使用一个学生的结果体直接进行一个数据交换

    Student temp = sdu[j];
    sdu[j] = sdu[j + 1];
    sdu[j + 1] = temp;
    
    展开全文
  • 结构体数组排序学生成绩问题)

    千次阅读 多人点赞 2019-11-23 12:40:05
    分析:本题的突破点在冒泡法对结构体数组排序,其实同整型数组排序一样。首先看普通的冒泡 排序: 代码如下: #include <stdio.h> #define N 5 struct Student{ char name[10]; long stuNo; ...

    需求:有一个学生结构体变量,有姓名,学号,成绩。让用户输出N个学成的信息,用冒泡法对这n个学生的成绩排序后输出。

    分析:本题的突破点在冒泡法对结构体数组排序,其实同整型数组排序一样。首先看普通的冒泡 排序:

    代码如下:

    #include <stdio.h>
    #define N 5
    
    struct Student{
    	char name[10];
    	long stuNo;
    	int grade;
    };
    void DubbleSort(struct Student stu[]){
    	for(int i = 0; i < N-1 ; i++){
    		for(int j = 0; j < N-i-1 ;j++){
    			if(stu[j].grade<stu[j+1].grade){    //比较成绩的大小
    				struct Student temp = stu[j+1];    //成绩大的交换所在的数组元素
    				stu[j+1] = stu[j];
    				stu[j] = temp;
    			}
    		}
    	}
    
    }
    int main(){
    	struct Student stu[N];
    	int i;
    	for(i = 0 ;i<N;i++){
    		printf("请输入第%d个学生的信息:\n",i+1);
    		scanf("%s%ld%d",stu[i].name,&stu[i].stuNo,&stu[i].grade);
    	}
    	DubbleSort(stu);
    	for(i = 0;i<N;i++){
    		
    		printf("排名第%d学生的名字:%s 学号:%ld 成绩:%d\n",i+1,stu[i].name,stu[i].stuNo,stu[i].grade);
    	
    	}
    
    }

    运行效果:

    展开全文
  • include<stdio.h> include<stdlib.h> include<assert.h> include<malloc.h> 1.第一种定义结构体的方法 struct student ...2.第二种定义结构体的方法 typedef struct student { ch...
  • 结构体数组排序学生信息 按成绩排序 )

    万次阅读 多人点赞 2017-08-26 21:27:07
    name:学生信息结构体 按总分排序 (降序) */ #include int main() { int i,j; typedef struct{ int grade; int age; char name[10];/*其他信息就不列举了*/ }Student;  Student temp; Student student[3]={/*...
  • 【C语言】结构体数组学生成绩排序 #include<stdio.h> struct student { double xuehao; char xingming[100]; int nian,yue,ri; }s1[100]; void paixu(struct student s1[],int n) { struct student...
  • 6-2 综合成绩排名-结构体二 (100 分) 众所周知,计算机院要对申请转入计算机大类的学生进行考核,考核方式包括机试和面试。学生综合成绩采取百分制,其中50%由机试成绩核算,另50%由学生已获得的加权成绩核算。综合...
  • 有一组学生数据,每个数据中含有三门课成绩,请按成绩总和从高到低对这组数据进行排序。 编写函数calc求出每名学生的总分。 编写函数sort按每名学生的总分从高到低对这组数据进行排序 函数接口定义: void ...
  • 根据结构体数组中某一数据项对结构体数组排序

    万次阅读 多人点赞 2018-08-17 17:46:06
    /* ...*All rights reserved. ...*问题描述:输入结构体数组,并根据结构体中的某一数据项对整个结构体数组进行排序 *输入描述:; *程序输出: */ #include<stdio.h> #include<string.h> struc...
  • 代码区 #include<stdio.h> struct Student { int num; char name[100]; float score;...}stu[2]={{140,"jack",70},{118,"jennry",100}};... //因为只有同类型的结构体变量次啊能互换 const int n=2; in...
  • 成绩排名用结构体数组解决,结果输出第一列是名次,注意并列情况;第二列是学号,第三列是成绩
  • } 输出结果: li yang he he li yang zhu li he yang zhang the result is: li:3 yang:3 he:3 Press any key to continue 几个学生成绩按照高低顺序输出 //按照成绩高低输出学生信息 #include struct Person{ ...
  • 从终端输入每个人的信息,然后按照分数从高到低排序信息打印到终端上。#include typedef struct //一个结构体代表一个人 { char name[15]; int id; int age; int score; }stu; void input_
  • #include <stdio.h>... printf("学生成绩排序\n"); struct student { char name[10]; int id; int score; int stuspace; }; struct student students[10]; struct student...
  • PTA:6-3 成绩排序

    千次阅读 2021-12-16 10:10:37
    定义函数处理结构体数组,按成绩从高到低降序排列。 函数接口定义: struct stu { int num; char name[20]; int score; }; void fun ( struct stu *p, int n ); p是结构体数组的起始地址,n是结构体单元个...
  • 建立结构数组,从键盘录入10个同学的信息,然后对这10个同学按成绩从高到低的顺序排序,然后在屏幕上输出排序后的所有学生记录并写入文件中。假设本问题中,学生成绩一定为[0,100]之间的正整数。要求使用选择排序...
  • 小憨总结:结构体按照某一项数据的大小进行排序时,需要交换的是结构体,而不是某一项 #include <stdio.h> struct Student { int num; char name[20]; float score; }; int main() { struct Student stu[5...
  • //基本思想是:先从文件中读取那20个数放入字符数组中,然后再对字符数组进行操作 #include<stdio.h> #include<stdlib.h> #include<string.h> #define M 5 struct ST{ cha...
  • 学生记录由姓名和成绩组成,在主函数中循环输入4名学生的数据并用结构体数组存储,请编写函数StructSort,按分数的高低降序排列输出学生的姓名和分数。 要求: 使用结构体: struct Student { char name[10...
  • 定义一个学生结构体,含学号(一维字符数组)、姓名、成绩(整型)。从键盘输入n(n&amp;amp;amp;amp;amp;lt;20),再输入n个学生的信息,按学生成绩从小到大顺序输出学生信息。 Input 输入一个n,接着输入n个...
  • 结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统。(1) 录入每个学生的学号、姓名和各科考试成绩。(2) 计算每门课程的总分和平均分。(3) 计算每个学生的总分和平均分。(4) 按每个学生的总...
  • 使用选择法进行排序,代码: #include using namespace std; struct Students { int num; char name[20]; char sex; int score; }; int main() { struct Students su[5
  • 结构体成绩进行排名

    千次阅读 2021-11-19 20:13:31
    期末考试结束后要对同学们的考试成绩进行排序,张老师已经计算好了每一位同学的总成绩。请编写程序,输入每位同学的总成绩并输出一个按成绩高低排列的名次表。 该问题中,在成绩排序的同时,需要相应的学号和姓名...
  • //用结构体数组完成:有5个学生(包括学号,姓名,成绩),要求按照成绩高低输出学生信息#include struct Stu{int num;char name[20];int score;};int main(){int i,j;struct Stu student[5]={{317,"han",89},{318,"hu...
  • 题目:有n个学生的信息(包括学号、姓名、成绩),要求按照成绩高低顺序输出各学生成绩。 要实现下面的功能: 话不多说!直接代码见真知! 第一步:定义和声明 //声明结构体类型 struct student { ...
  • 满意答案dkfjike5h92019.06.06采纳率:46%等级:12已帮助:6616人注意输入数据时的形式。#includestruct person{int xuehao;char name[20];char sex;...printf("一共有多少学生;");scanf("%d",&am...
  • 尝试在这个结构数组上使用qsort,我得到了奇怪的结果....我从文件构造一个access_data指针数组,使它们按到达时间排序,但我需要稍后按扇区对它们进行排序,所以我有以下内容:int compare_data(const void* ...
  • 这些信息,我们每个学生的这些信息组合起来,利用Struct声明一个结构体它的信息作为其成员变量。 然后我们根据它的排序要求编写进行计较规则的方法,取名cmp()。再调用系统的sort函数即可(需要加声明:#...
  • (C语言)利用结构体数组制作学生成绩管理系统

    万次阅读 多人点赞 2017-07-05 13:11:51
    结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统。 (1) 录入每个学生的学号、姓名和各科考试成绩。 (2) 计算每门课程的总分和平均分。 (3) 计算每个学生的总分和平均分。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 993
精华内容 397
关键字:

6-2 结构体数组排序-根据成绩高低将学生记录排序