精华内容
下载资源
问答
  • 2010-08-27 回答#includevoid main(){int Cj[5],Xh[5]...printf("请输入5个学生的平均成绩\n\n");/*========== 输入==================*/for(i=0;i<5;i++){printf("学号输入:");scanf("%d",&Xh[i]);printf("...

    2010-08-27 回答

    #include

    void main()

    {

    int Cj[5],Xh[5],i,j,t,m;

    printf("\n");

    printf("请输入5个学生的平均成绩\n\n");

    /*========== 输入==================*/

    for(i=0;i<5;i++)

    {

    printf("学号输入:");

    scanf("%d",&Xh[i]);

    printf("   成绩输入:");

    scanf("%d",&Cj[i]);

    printf("\n");

    }

    /*=========== 排序=================*/

    for(i=0;i<4;i++)

    {

    for(j=0;j<4-i;j++)

    {

    if(Cj[j]

    {

    t=Cj[j];

    Cj[j]=Cj[j+1];

    Cj[j+1]=t;

    m=Xh[j];

    Xh[j]=Xh[j+1];

    Xh[j+1]=m; //你就写错这一句

    }

    }

    }

    printf("成绩从高到低排序如下:\n");

    printf("学号\t成绩\n");

    for(i=0;i<5;i++)

    {

    printf("%d\t%d\n",Xh[i],Cj[i]);

    }

    }

    追问:

    谢谢你啊。

    如果要在添加一组数据呢

    怎么弄啊

    是不是要goto语句啊

    追答:

    如果学生人数确定,比如你这里的5位学生,就在数组长度里定义。如果学生人数不定,你可以定义一个变量n来表示学生人数,由用户自己输入

    追问:

    刚开始只有五位。

    但是如果在这个基础上在添加呢。

    该怎么写?

    追答:

    数组长度一旦确定,就不能更改,你要在这个基础山添加的话只能再定义各变量来存放新学生的学号成绩等。

    追问:

    那又如何再进行排序呢

    有两组数据啊/?

    追答:

    什么两组数据?

    你现在是五个学生,就是五组数据嘛,每组数据包括学号和成绩。

    展开全文
  • 数组成绩排序

    2020-03-06 23:06:11
    #include #define STUD 30 #define...//此函数主要用于向 } } 结果就这样得出来了,数组可能是比较严谨的线性存储了,排序的过程算得上是简明易懂, 诶,今天表白,被一个女孩子拒绝了。认真的敲代码,代码越想越清晰。
    #include<stdio.h>
    #define STUD 30
    #define COURSE 3
    int Input(long num[],int score[][COURSE]);//顾名思义,就是输入各种参数而已,
    void Total(int SCORE[][COURSE],int sum[],float aver[],int n);
    void Print(long num[],int score[][COURSE],int sum[],float aver[],int n);
    int main(void)
    {
        int n,score[STUD][COURSE],sum[STUD];//此处已经考虑到了数组的长度,已经被限定了
        long num[STUD];
        float aver[STUD];
        n=Input(num,score);//n被传回了主函数中
        Total(score,sum,aver,n);
        Print(num,score,sum,aver,n);
        return 0;
    }
    int Input(long num[],int score[][COURSE])//命名首先要直观,Input顾名思义就是直观上的输入意思
    {
        int i,j,n;
        scanf("%d",&n);//限制输入几个学生
        for(i=0;i<n;i++)//循环输入学号和成绩
        {
            scanf("%ld",&num[i]);//输入第i个学生的的学号
            for(j=0;j<COURSE;j++)
            {
                scanf("%d",&score[i][j]);//输入第i个学生第j门课成绩,显然由这两项,足以构成一个二维平面
            }
        }
        return n;//返回值是一个int,因而未采用void
    }
    void Total(int score[][COURSE],int sum[],float aver[],int n)//此步骤可以归类为运算
    {
        int i,j;
        for(i=0;i<n;i++)
        {
        sum[i]=0;//确保每个数组都被初始化了一遍
        for(j=0;j<COURSE;j++)
        {
            sum[i]=score[i][j]+sum[i];//用循环的方法,把三门课得乘机加上来
        }
        aver[i]=(float)sum[i]/COURSE;//加完顺便得出average
        }
    }
    //整体无返回值,有的只有构造进去值的sum和average
    void Print(long num[],int score[][COURSE],int sum[],float aver[],int n)//结尾输出到屏幕上,就是这一步了
    {
        int i,j;
        char c[STUD];//每个学生判定一个等级,要牢牢记住
        printf("Result:\n");
        for(i=0;i<n;i++)
        {
            c[i]='Y';//后面的值有把前面的值取代的优势
            printf("%4ld  ",num[i]);//输出学号
            //循环的过程
            for(j=0;j<COURSE;j++)
            {
                printf("%4d  ",score[i][j]);
                if(score[i][j]<90)//注意这个否定的逻辑叫做一否全否,只要三次中了一次,必定会凉凉
                    c[i]='N';
            }
            //小循环执行完以后要看大循环,要有按照步骤来的看齐意识
            printf("%5d  %6.1f  %c\n",sum[i],aver[i],c[i]);//此函数主要用于向
        }
    }
    

    在这里插入图片描述结果就这样得出来了,数组可能是比较严谨的线性存储了,排序的过程算得上是简明易懂, 诶,今天表白,被一个女孩子拒绝了。认真的敲代码,代码越想越清晰。

    展开全文
  • //学生成绩 } Node ; void Sort ( Node * * chart , int n ) ; //从大到小排序 int main ( void ) { int n , i ; Node * chart [ 50 ] ; printf ( "请输入班级人数:\n" ) ; scanf ( "%...

    在这里插入图片描述

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Node
    {
    	char Name[15];//学生姓名
    	int Score;//学生成绩
    }Node;
    
    void Sort(Node **chart,int n);//从大到小排序
    int main(void)
    {
    	int n,i;
    	Node *chart[50];
    	printf("请输入班级人数:\n");
    	scanf("%d",&n);//班级人数
    	putchar('\n');
    	if(n>50)//检测溢出
    	{
    		printf("ERROR!!\n");
    		return 1;
    	}
    
    	for(i=0;i<n;i++)
    	{
    		chart[i]=(Node *)malloc(sizeof(Node));
    		scanf("%s",chart[i]->Name);
    		scanf("%d",&chart[i]->Score);
    	}
    
    	Sort(chart,n);//调用排序函数
    	putchar('\n');
    	for(i=0;i<n;i++)//输出结果
    	{
    		printf("%15s\t",chart[i]->Name);
    		printf("%5d",chart[i]->Score);
    		putchar('\n');
    	}
    
    	return 0;
    }
    
    void Sort(Node **chart,int n)//从大到小排序
    {
    	int i,j;
    	Node *p;
    	for(i=0;i<n;i++)
    		for(j=i+1;j<n;j++)
    			if(chart[i]->Score<chart[j]->Score)
    			{
    				p=chart[i];
    				chart[i]=chart[j];
    				chart[j]=p;
    			}
    }
    

    在这里插入图片描述

    展开全文
  • C语言-结构体数组
  • 实验 7 数组 --学生成绩管理系统 V1.0 实验目的 熟悉一维数组编程 掌握排序查找统计分析等常用方法 实验题目 某班有最多不超过 30 人具体人数由键盘输入参加某门课程 的考试用一维数组 编程实现如下学生成绩管理 1....
  • #include#include/*简化学生信息,只保留学号,姓名,成绩实现所有功能*///学生结构体typedef struct {char id[32];char name[32];double score;}Stu, *PStu;//由学生数组学生数目组成的组的结构体typedef struct {...

    #include

    #include

    /*

    简化学生信息,只保留学号,姓名,成绩

    实现所有功能

    */

    //学生结构体

    typedef struct {

    char id[32];

    char name[32];

    double score;

    }Stu, *PStu;

    //由学生数组和学生数目组成的组的结构体

    typedef struct {

    Stu stus[100];//默认一个组最多有100个学生

    int count;

    }Group, *PGroup;

    //函数使用指针传递,效率高

    void addStu(PGroup pg);

    void showStu(PStu ps);

    void showGroup(PGroup pg);

    void delStu(PGroup pg);

    void findStuById(PGroup pg);

    void sortByScore(PGroup pg);

    int getStuIndex(PGroup pg, char id[]);

    void sortById(PGroup p);

    int main() {

    printf("班级信息管理2.0版\n");

    Group g;

    g.count = 0;//初始化含有0个学生

    Stu t1 = { "2160500100","张三",60 };

    Stu t2 = { "2160500101","李四",50 };

    Stu t3 = { "2160500102","王五",80 };

    g.stus[g.count] = t1;

    g.count++;

    g.stus[g.count] = t2;

    g.count++;

    g.stus[g.count] = t3;

    g.count++;

    //填充三个默认数据

    //在外面定义变量作用范围大

    char id[32];

    while (1) {

    printf("1,添加学生 2,删除学生 3,查找学生 4,按成绩排序 5,按学号排序 6,输出 7,退出\n");

    int n;

    scanf("%d", &n);

    switch (n) {

    case 1:

    addStu(&g);

    break;

    case 2:

    delStu(&g);

    break;

    case 3:

    findStuById(&g);

    break;

    case 4:

    sortByScore(&g);

    printf("按成绩排序成功\n");

    break;

    case 5:

    sortById(&g);

    printf("按学号排序成功\n");

    break;

    case 6:

    showGroup(&g);

    break;

    case 7:

    return 0;

    default:

    printf("请输入有效指令\n");

    break;

    }

    printf("\n");

    }

    return 0;

    }

    //传入学生指针,显示该学生的信息

    void showStu(PStu ps) {

    printf("%s\t%s\t%.3lf\n", ps->id, ps->name, ps->score);

    }

    //传入小组指针,依次显示小组中学生信息

    void showGroup(PGroup pg) {

    int i, n = pg->count;

    if (n == 0) {

    printf("该小组没有学生\n");

    } else {

    printf("该小组共有 %d 名学生\n学号\t\t姓名\t成绩\n", n);

    for (i = 0; i < n; i++)

    showStu(&(pg->stus[i]));

    }

    }

    void addStu(PGroup pg) {

    if (pg->count == 100) {

    printf("该小组人数已满\n");

    } else {

    printf("请依次输入学生信息(空格隔开):学号 姓名 成绩\n");

    PStu ps = &pg->stus[pg->count];

    Stu ts = { "","",0 };

    scanf("%s %s %lf", ts.id, ts.name, &ts.score);

    if (getStuIndex(pg, ts.id) >= 0) {

    printf("已经存在学号为 %s 的学生了\n", ts.id);

    } else {

    *ps = ts;

    pg->count++;

    printf("添加成功\n");

    }

    }

    }

    void delStu(PGroup pg) {

    if (pg->count == 0) {

    printf("该小组中没有学生\n");

    } else {

    printf("请输入要删除学生的学号:");

    char id[100];

    scanf("%s", id);

    int i = getStuIndex(pg, id);

    if (i < 0) {

    printf("没有学号为 %s 的学生\n", id);

    } else {

    if (i == pg->count) {

    pg->count--;

    } else {

    for (; i < pg->count - 1; i++)

    pg->stus[i] = pg->stus[i + 1];

    pg->count--;

    }

    printf("删除成功\n");

    }

    }

    }

    int getStuIndex(PGroup pg, char id[]) {

    int i, n = pg->count;

    for (i = 0; i < n; i++) {

    if (!strcmp(pg->stus[i].id, id)) {

    return i;

    }

    }

    return -1;

    }

    void findStuById(PGroup pg) {

    char id[100];

    printf("请输入要查找学生的学号:");

    scanf("%s", id);

    int i = getStuIndex(pg, id);

    if (i < 0) {

    printf("没有学号为 %s 的学生\n", id);

    } else {

    showStu(&pg->stus[i]);

    }

    }

    void sortByScore(PGroup p) {

    int i, j, n = p->count;

    if (n == 0) {

    printf("该小组中没有学生\n");

    } else {

    for (i = 0; i < n; i++) {

    for (j = i; j < n; j++) {

    if (p->stus[i].score > p->stus[j].score) {

    Stu tstu = { "" };

    tstu = p->stus[i];

    p->stus[i] = p->stus[j];

    p->stus[j] = tstu;

    }

    }

    }

    }

    }

    void sortById(PGroup p) {

    int i, j, n = p->count;

    if (n == 0) {

    printf("该小组中没有学生\n");

    } else {

    for (i = 0; i < n; i++) {

    for (j = i; j < n; j++) {

    if (strcmp(p->stus[i].id, p->stus[j].id) == 1) {

    Stu tstu = { "" };

    tstu = p->stus[i];

    p->stus[i] = p->stus[j];

    p->stus[j] = tstu;

    }

    }

    }

    }

    }

    809ed4303abb27a746677b94b7021b28.png

    展开全文
  • 两个程序都是学生成绩管理系统 一个为简易的,只有添加成绩和排序输出功能,另一个添加、删除、修改、排序、文件存取等功能
  • 用二维数组记录学生成绩排序

    千次阅读 2020-05-01 20:57:19
    五一老师布置的Java作业时用一个二维数组记录学生成绩并对这个数组依据成绩进行排序。 我做了两种方法,各有优缺点。 冒泡法排序 public static void main(String[] args){ int[][] x =new int[40][2]; for (int...
  • Arrays.Sort 可以自定义排序规则 Arrays.sort(score,new Comparator<int []>() { public int compare(int []o1,int []o2) { ...给出n个学生的成绩,将这些学生成绩排序,排序规则:总分高的在...
  • 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息 提示: 1) 生成随机数:Math.random(),返回值类型double; 2) 四舍五入取整:Math.round(double d),返回值类型long。 package Test...
  • 上次做了一个学生管理系统,但由于能力问题无法实现按成绩降序排序,前几天重新复习了下字符串然后诞生了个想法:或许我可以用字符串处理函数解决上次留下来的问题?? 我太蒻了暂时只会这个 问题描述 将有限的学生...
  • //在控制台中输入学生的学号,语文,数学,英语成绩;然后输出各科成绩,平均成绩 //和总成绩 Console.WriteLine("总学生数:"); int num = Convert.ToInt32... //通过学生总数简历一个二维数组 ...
  • 结构体数组排序 (学生信息 按成绩排序

    万次阅读 多人点赞 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]={/*...
  • 结构体数组排序学生成绩问题)

    千次阅读 多人点赞 2019-11-23 12:40:05
    让用户输出N个学成的信息,用冒泡法对这n个学生成绩排序后输出。 分析:本题的突破点在冒泡法对结构体数组排序,其实同整型数组排序一样。首先看普通的冒泡 排序: 代码如下: #include <stdio.h> #...
  • 需要我们通过程序的方式来对成绩从高到低来排序学生成绩如下:88,52,67,93,87(各个同学的成绩不相等)方法一:list = [88,52,67,93,87] #将这5个学生的成绩存入列表或者数组rank = [1,1,1,...
  • C语言《二维数组和选择排序》.ppt二维数组 上次课程回顾 1.一维数组的定义,初始化 2.冒泡排序算法 本次课内容 掌握二维数组的定义、初始化掌握二维数组的定义、初始化 掌握二维数组的存储及应用掌握二维数组的存储及...
  • 需求 按照需求实现功能
  • //学⽣生结构体数组,按成绩排序、按年 龄排序,按名字排序...如何实现? typedef struct student {  char name[20];  //注意类型不可为 char * name  否则为常亮 即不可改变   int age;   float score; }...
  • 问题描述:学生成绩排序。输入n(n<50)个学生的成绩排名,按照学生平均成绩从高到低输出他们的信息源代码:/*学生成绩排序*//*输入n(n<50)个学生的成绩排名,按照学生平均成绩从高到低输出他们的信息*/#...
  • /**************************************************.../* 本程序是对动态内存、动态数组、结构体、函数的综合应用。 */ /************************************************************************/ #include #i
  • C语言程序设计-第六章学生成绩的-数组讲义项目实现 1 一维数组的定义 1 一维数组的定义 数组定义的几点说明 数组的类型实际上是指数组元素的取值类型。 数组名的命名规则应符合标识符的命名规则。 数组名不能与其它...
  • //使用交换排序法,利用指针和数组学生成绩进行升序排序 #include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;cmath&gt; #...
  • C语言成绩数组排序

    2020-12-26 19:09:23
    子函数中对30个成绩排序; #include<stdio.h> #define N 30 int main() { int ans[N],i; int fac(int ans[]); for(i=0; i<N; i++) scanf("%d",&ans[i]); fac(ans); for(i=0; i<N; i++) ...
  • C4_一维数组、字符数组数组排序

    千次阅读 2014-10-25 11:35:57
    数组:相同数据类型的成员(元素)组成的
  •  使用数组实现10名学生成绩录入,并输出这10名学生成绩的  最高分  最低分  平均分  按照分数从大到小排序  思考:  如何实现从小到大排序?  如果学院有5个班,每个班30人,如何处理?  求...
  • 【问题描述】从键盘输入某班学生某门课的成绩(每班人数最多不超过40人),当输入为负值时,表示输入结束,试用冒泡法编程将分数按从高到低顺序进行排序并输出。 【输入形式】任意输入一组正整数,输入负值时,表示...
  • 3.数组 3.1.数组的概念 数组的概念:用于保存相同数据类型的多个变量的集合 3.2.使用数组的步骤 //1声明数组 数据类型[] 数组名称; 或 数据类型 数组名称[]; 一般通用第一种 int[] nums; //2分配空间用于确定...
  • 用一维数组存储学号和成绩,然后,按成绩排序输出。 输入描述: 输入第一行包括一个整数N(1<=N<=100),代表学生的个数。 接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。 输出描述:...
  • Matlab:多个数组实现结构体排序

    千次阅读 2018-08-13 17:15:05
    排完序之后他们的相对顺序是不能变的,譬如说,原来数组A中的排序前的第1个元素排序后变成了第5个元素,那么我的数组B中的第1个元素也要变成第5个元素,也就是说,其他的数组的元素要根据某一个数组排序之后的结果而...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,363
精华内容 8,145
关键字:

数组学生成绩排序