结构体数组]用结构数组建立一张班级成绩单,包括每个学生的学号、姓名、成绩(C语言)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

题目:

[实验案例2:结构体数组]

用结构数组建立一张班级成绩单,包括每个学生的学号、姓名、成绩。用函数编程实现下列功能:

1. 输入每个学生的各项信息;

2. 输出每个学生的各项信息;

3. 按照学生的成绩项进行降序排序。

[实验指导]

先定义结构体,再定义输入函数、排序函数和显示函数。用主函数分别调用这些函数。

代码:

/* 用结构数组定义输入、排序和输出每个学生的信息,文件名sy9_2.c */
#include <stdio.h>
#define N 3

struct Stu {
	    long id;                  /* 学生编号*/
	    char name[20];           /* 名称 */
	    float score;              /* 成绩 */
};

void input( struct Stu *p ,int n);
void sort( struct Stu *p ,int n);
void display( struct Stu *p ,int n);
int main( )
{
	  printf("请输入3个学生的信息:\n") ;
	  struct Stu info[N];
	  input(info,N);             /*结构体数组名作为实参 */
	  display( &info[0] ,N); 
	  sort(info,N);
	  display(info,N);
      return 0;
}

void input(struct Stu *p,int n)    /*输入结构体数组各元素的成员的值 */
{	  int i;
	  float temp;
	  for(i=0;i<n;i++)
{
	      printf("请输入编号:");
		  scanf("%ld", &p[i].id );
		  printf("请输入姓名:");
		  scanf("%s", (p+i)->name );
		  printf("请输入成绩:");
		  scanf("%f", &temp); 
		  (*(p+i)).score =temp; 
		  printf("\n");
	  }
}

void sort(struct Stu *p,int n)      /*对成绩用选择法进行降序排序 */
{	    int i,j;    
struct Stu t;
	    for(i=0;i<n-1;i++)
		    for(j=i+1;j<n;j++)
			    if((p+i)->score<(p+j)->score){
				    t=*(p+i);
				    *(p+i)=*(p+j);
				    *(p+j)=t;
		}
}

void display(struct Stu *p,int n)     /*显示结构体数组元素的成员的值 */
{
	  int i;
	  for(i=0;i<n;i++)
{
		  printf("编号为:%ld\t", (*(p+i)).id );
		  printf("姓名为:%s\t", (p+i)->name );
		  printf("成绩为:%.2f\n", p[i].score );
	  }
}

结果:


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了结构体数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷酷滴Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值