c语言函数成绩排序输出 用c语言排序学生成绩

c语言1)按成绩高低排序,输出排序后的成绩;2)统计并输出不及格成绩、人数;3)输出最高分、最低分?

根据题目中信息所示:仅输入一科目成绩;人数不作为参数输入;

创新互联建站是一家专注于成都网站设计、网站建设与策划设计,遂宁网站建设哪家好?创新互联建站做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:遂宁等地区。遂宁做网站价格咨询:028-86922220

现在假设:及格线为60分(题目未明确给出)

#includestdio.h

//#include cstring

//#includealgorithm

typedef struct {

int grade;

}student;

//选择排序

void selectSort(student stu[10],int n){

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

{int k=i;

for(int j=k+1;j=n;j++){

if(stu[j].gradestu[k].grade)

{k=j;

}}

int temp=stu[i].grade;

stu[i].grade=stu[k].grade;

stu[k].grade=temp;}}

//数据输出

void display(student stu[10],int n)

{

for(int j=0;jn;++j)

printf("%d ",stu[j].grade);

  printf("\n");}

//数据最大值与最小值

void poll_values(student stu[2],int n){

printf("%d %d",stu[0].grade,stu[n].grade);

printf("\n");

}

int main(){

student stu[10];

student fail[10];

student poll[2];

int n=0;//总人数

int m=0;//不及格人数

while(n10){

scanf("%d",stu[n].grade);

if(stu[n].grade0){

break;

}

++n;}

selectSort(stu,n);

//--------------------------------------

for(int i=0;in;i++)

if(stu[i].grade60){

fail[m]=stu[i];

++m;}

selectSort(fail,m);

display(stu,n);

display(fail,m);

poll[0]=stu[0];

poll[1]=stu[n-1];

display(poll,2);

//poll_values(stu,n)

return 0;

}

运行结果如下

用c语言编写从键盘输入学生的成绩,将成绩从高到低进行顺序输出,并同时输入指定学生的学号和成绩

//这里我在网上找来运行着练手的,具体原作者我忘了保存,抱歉。十分感谢他(她)的汗水。

//可以自己微调一下

//成绩排序方面,可以用平均成绩排序输出模块,按相应科目更改一下数组序号则可

//或者,再写一个科目选择,按选择中的科目引用相应的数组内容则可以实现按科目排序

#includestring.h  

#includestdio.h

/*定义学生结构体*/  

struct Student  

{  

char ID[20];  

char Name[20];  

float Mark1;  

float Mark2;

float Mark3;  

float Average;  

};  

/*声明学生数组及学生数量*/  

struct Student students[1000];  

int num=0;  

/*求平均值*/  

float Avg(struct Student stu)  

{  

return (stu.Mark1+stu.Mark2+stu.Mark3)/3;  

}  

/*通过学号返回数组下标*/  

int Student_SearchByIndex(char id[])  

{  

int i;  

for (i=0;inum;i++)  

{  

if (strcmp(students[i].ID,id)==0)  

{  

return i;  

}  

}  

return -1;  

}  

/*通过姓名返回数组下标*/  

int Student_SearchByName(char name[])  

{  

int i;  

for (i=0;inum;i++)  

{  

if (strcmp(students[i].Name,name)==0)  

{  

return i;  

}  

}  

return -1;  

}  

/*显示单条学生记录*/  

void Student_DisplaySingle(int index)  

{  

printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");  

printf("-------------------------------------------------------------\n");  

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,  

students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);  

}  

/*插入学生信息*/  

void Student_Insert()  

{  

while(1)  

{  

printf("请输入学号:");  

scanf("%s",students[num].ID);  

getchar();  

printf("请输入姓名:");  

scanf("%s",students[num].Name);  

getchar();  

printf("请输入成绩:");  

scanf("%f",students[num].Mark1);  

getchar();  

printf("请输入成绩:");  

scanf("%f",students[num].Mark2);  

getchar();  

printf("请输入成绩:");  

scanf("%f",students[num].Mark3);  

getchar();  

students[num].Average=Avg(students[num]);  

num++;  

printf("是否继续?(y/n)");  

if (getchar()=='n')  

{  

break;  

}  

}  

}  

/*修改学生信息*/  

void Student_Modify()  

{  

//float mark1,mark2,mark3;  

while(1)  

{  

char id[20];  

int index;  

printf("请输入要修改的学生的学号:");  

scanf("%s",id);  

getchar();  

index=Student_SearchByIndex(id);  

if (index==-1)  

{  

printf("学生不存在!\n");  

}  

else  

{  

printf("你要修改的学生信息为:\n");  

Student_DisplaySingle(index);  

printf("-- 请输入新值--\n");  

printf("请输入学号:");  

scanf("%s",students[index].ID);  

getchar();  

printf("请输入姓名:");  

scanf("%s",students[index].Name);  

getchar();  

printf("请输入成绩:");  

scanf("%f",students[index].Mark1);  

getchar();  

printf("请输入成绩:");  

scanf("%f",students[index].Mark2);  

getchar();  

printf("请输入成绩:");  

scanf("%f",students[index].Mark3);  

getchar();  

students[index].Average=Avg(students[index]);  

}  

printf("是否继续?(y/n)");  

if (getchar()=='n')  

{  

break;  

}  

}  

}  

/*删除学生信息*/  

void Student_Delete()  

{  

int i;  

while(1)  

{  

char id[20];  

int index;  

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

scanf("%s",id);  

getchar();  

index=Student_SearchByIndex(id);  

if (index==-1)  

{  

printf("学生不存在!\n");  

}  

else  

{  

printf("你要删除的学生信息为:\n");  

Student_DisplaySingle(index);  

printf("是否真的要删除?(y/n)");  

if (getchar()=='y')  

{  

for (i=index;inum-1;i++)  

{  

students[i]=students[i+1];//把后边的对象都向前移动  

}  

num--;  

}  

getchar();  

}  

printf("是否继续?(y/n)");  

if (getchar()=='n')  

{  

break;  

}  

}  

}  

/*按姓名查询*/  

void Student_Select()  

{  

while(1)  

{  

char name[20];  

int index;  

printf("请输入要查询的学生的姓名:");  

scanf("%s",name);  

getchar();  

index=Student_SearchByName(name);  

if (index==-1)  

{  

printf("学生不存在!\n");  

}  

else  

{  

printf("你要查询的学生信息为:\n");  

Student_DisplaySingle(index);  

}  

printf("是否继续?(y/n)");  

if (getchar()=='n')  

{  

break;  

}  

}  

}  

/*按平均值排序*/  

void Student_SortByAverage()  

{  

int i,j;  

struct Student tmp;  

for (i=0;inum;i++)  

{  

for (j=1;jnum-i;j++)  

{  

if (students[j-1].Averagestudents[j].Average)  

{  

tmp=students[j-1];  

students[j-1]=students[j];  

students[j]=tmp;  

}  

}  

}  

}  

/*显示学生信息*/  

void Student_Display()  

{  

int i;  

printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");  

printf("-------------------------------------------------------------\n");  

for (i=0;inum;i++)  

{  

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,  

students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);  

}  

}  

/*将学生信息从文件读出*/  

void IO_ReadInfo()  

{  

FILE *fp;  

int i;  

if ((fp=fopen("Database.txt","rb"))==NULL)  

{  

printf("不能打开文件!\n");  

return;  

}  

if (fread(num,sizeof(int),1,fp)!=1)  

{  

num=-1;  

}  

else  

{  

for(i=0;inum;i++)  

{  

fread(students[i],sizeof(struct Student),1,fp);  

}  

}  

fclose(fp);  

}  

/*将学生信息写入文件*/  

void IO_WriteInfo()  

{  

FILE *fp;  

int i;  

if ((fp=fopen("Database.txt","wb"))==NULL)  

{  

printf("不能打开文件!\n");  

return;  

}  

if (fwrite(num,sizeof(int),1,fp)!=1)  

{  

printf("写入文件错误!\n");  

}  

for (i=0;inum;i++)  

{  

if (fwrite(students[i],sizeof(struct Student),1,fp)!=1)  

{  

printf("写入文件错误!\n");  

}  

}      

fclose(fp);  

}  

/*主程序*/  

void main()  

{  

int choice;  

IO_ReadInfo();  

while(1)  

{  

/*主菜单*/  

printf("\n------ 学生成绩管理系统------\n");  

printf("1. 增加学生记录\n");  

printf("2. 修改学生记录\n");  

printf("3. 删除学生记录\n");  

printf("4. 按姓名查询学生记录\n");  

printf("5. 按平均成绩排序\n");  

printf("6. 退出\n");  

printf("请选择(1-6):");  

scanf("%d",choice);  

getchar();  

switch(choice)  

{  

case 1:  

Student_Insert();  

break;  

case 2:  

Student_Modify();  

break;  

case 3:  

Student_Delete();  

break;  

case 4:  

Student_Select();  

break;  

case 5:  

Student_SortByAverage();  

Student_Display();  

break;  

case 6:  

exit(0);  

break;  

}  

IO_WriteInfo();  

}  

}

c语言编程:输出成绩排名

#include stdio.h

int main()

{

int i,j,temp,a[100]={0},ranking=0,n;

printf("请输入学生数:\n");

scanf("%d",n);

printf("请输入学生成绩:\n");

for (i=0;in;i++)

{

scanf("%d",a[i]);

}

//对成绩排序

for (i=0;in;i++)

{

for (j=i+1;jn;j++)

{

if (a[i]a[j])

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

}

printf("成绩由高到低顺序排序:\n");

for (i=0;in;i++)

{

++ranking;

if ((a[i]==a[i-1]))

{

ranking=ranking-1;

}

printf("%d:%d\n",a[i],ranking);

}

printf("\n");

return 0;

}

用C语言编程:从键盘输入10个学生的成绩,由高到低排序输出成绩

你好,我们这里需要用到数组镶套使用for函数以及冒泡算法,具体的代码如下。

#include iostream

using namespace std;

int main()

{

int s [10], i, j, t;

cout "输入10个数:";

for (i = 0; i 10; i++)

{

cout "请输入第" i+1 "名学生的成绩;" endl;

cin s[i];

}

for (i = 0; i10; i++)

{

for (j = 0; j9 - i; j++)

if (s[j]s[j + 1])

{

t = s[j + 1];

s[j + 1] = s[j];

s[j] = t;

}

}

cout "成绩由高到低为;";

for (i = 0; i10; i++)

cout s[i]"\t" ;

}

以下为效果图

C语言怎么进行成绩的排序?

#includestdio.h

int main()

{

int a[10],i,j,t,k;

printf("请以次输入10个学生的成绩:");

for(i=0;i10;i++)scanf("%d",a[i]);

for(i=0;i9;i++)

{

k=i;

for(j=i;j10;j++)

if(a[j]a[k])k=j;

if(i!=k)

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

printf("由高到低排序输出成绩:\n");

for(i=0;i10;i++)

printf("%d\n",a[i]);

return 0;

}


分享文章:c语言函数成绩排序输出 用c语言排序学生成绩
转载注明:http://azwzsj.com/article/hjccji.html