c语言——结构体数组——学生成绩表

 例题详解:

1.

在主函数中定义结构体数组,struct student stutable[10];

struct student {
	int stunum;//学号
	char name[20];//姓名
	float examscore;//考试成绩
	float labscore;//实验成绩
	float totalmark;//总评成绩
};

输入如下十个学生的成绩数据,每个学生信息包括 学号 、姓名 、考试成绩 ,实验成绩。同时计算每个学生的总评成绩( =考试成绩*60% + 实验成绩*40%)并保存至每个结构体的totalmark。

71250	张三	95	82
69753	李四	88	86
12254	王五	87	88
61256	张六	73	85
30258	孙七	25	88
11260	柯八	82	76
33262	谢九	91	85
29263	叶十	80	75
22483	陈一	80	76
71525	王二	71	88

2.

在主函数中定义一个结构体指针数组,struct student  *parrray[10] ; 使其每一个指针指向上述结构体数组中的一个元素; 按总评成绩从高到低的顺序,对指针数组parray进行排序,按总评成绩从高到低的顺序输出排序之后的全部学生成绩。


	struct student *parray[10],*t;

int main() {
	int i,j;
	struct student stutable[10],*p;
	struct student *parray[10],*t;
	for(p=stutable,i=0; pstunum,p->name,&p->examscore,&p->labscore);//输入数据
		p->totalmark=p->examscore*0.6+p->labscore*0.4;//计算总评
		parray[i]=p;//指针数组初始化
	}
	//冒泡排序,比较总评,交换指针
	for(i=0; i<9; i++) {
		for(j=0; j<9-i; j++) {
			if(parray[j]->totalmarktotalmark) {
				t=parray[j];
				parray[j]=parray[j+1];
				parray[j+1]=t;
			}
		}
	}//排序
	for(i=0; i<10; i++) {
		printf("%d\t%s\t%.2f\t%.2f\t%.2f\n",parray[i]->stunum,parray[i]->name,
		       parray[i]->examscore,parray[i]->labscore,parray[i]->totalmark);
	}//输出信息
}

输入重定向结果:c语言——结构体数组——学生成绩表_第1张图片

你可能感兴趣的:(指针,链表,大作业,c语言,算法,链表,指针)