程序写的不是很规范,希望大家多多指正。
在编这个程序的过程中,编译运行把自己的电脑整死了一次,任何操作都无效了,从那以后我就确认无误小心翼翼的编完了这个“学生成绩录入、排序系统”。里面包含的知识有结构体的使用、结构体指针变量的引用、动态内存的分配、冒泡排序的算法。
这是我第一次自己编写的稍大一点的程序,咱还处于菜鸟阶段,希望各位牛人看到小弟的程序之后多给指点、批评,小弟会虚心接受,并给以修正从而完善自我。以下是程序代码。
/*
2011年9月17日17:39:15
目的:做一个简单的学生成绩录入、排序、输出的系统
*/
#include<stdio.h>
#include<malloc.h>
//定义结构体类型
struct student
{
char name[100];
int number;
float score;
};
//函数功能:实现对学生信息的录入,学生的个数可自己设定
void inputdata(struct student *q,int len)
{
int i;
printf("请依次输入学生的姓名、编号和成绩(中间以空格分隔):\n");
for(i = 0;i < len;i++)
scanf("%s %d %f",&q[i].name,&q[i].number,&q[i].score);
}
//sort函数功能:根据学生的成绩排序,实现从低到高的排序
void sort(struct student *q,int len)
{
int i,j;
struct student t;
for(i = 0;i < len;i++)
{
for(j = 0;j < len-1-i;j++)
{
if(q[j].score>q[j+1].score)
{
t = q[j];
q[j] = q[j+1];
q[j+1] = t;
}
}
}
}
//outputdata函数功能:实现对排序之后的学生信息的输出
void outputdata(struct student *r,int len)
{
int m;
printf("排序由低到高的顺序为:\n");
for(m = 0;m < len;m++)
printf("%s的编号是%d,对应的成绩是:%f\n",r[m].name,r[m].number,r[m].score);
}
//主函数
int main(void)
{
int val;
printf("请输入您要录入学生的成绩的人数:");
scanf("%d",&val);
struct student * p=(struct student *)malloc(val*sizeof(struct student));
inputdata(p,val); //录入数据
sort(p,val); //把数据进行排序
outputdata(p,val); //输出数据
return 0;
}