c语言五个学生成绩排序
『壹』 c语言程序设计 学生成绩排序系统
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define MAX 200
void dis_menu();
void load_score();
void sort_english();
void sort_math();
void sort_c();
void sort_num();
void display();
typedef struct
{
char name[20];
int num;
float math;
float english;
float c;
}Stu;
Stu stu[MAX];
int num=0;
bool tag=true;
bool Tag=false;
void main()
{
dis_menu();
}
void dis_menu()
{
int i=0;
char ch;
do{
printf("******** *欢迎使用学生成绩排序系统* ********** ******\n");
printf("****** ****输入要进行的操作****** ******* ***** *\n");
printf("**** ******1:按数学成绩排序********** **** ***** **\n");
printf("** ********2: 按英语成绩排序***** * ***** ***\n");
printf("* *********3:按C语言成绩排序***** * ************ **\n");
printf("*** *******4:按学生学号排序****** ***** ***** *\n");
printf("***** *****5:载入学生成绩**** ********* *****\n");
printf("******* ***0:退出系统********* ************** ***\n");
fflush(stdin);
scanf("%d",&i);
switch(i)
{
case 1:
if(!Tag) { printf("先载入学生成绩!\n"); break; }
sort_math();
printf("是否打印排序后学生成绩:(Y or N)\n");
fflush(stdin);
ch=getchar();
switch(ch)
{
case 'Y':
case 'y':
display();
break;
default:break;
}
break;
case 2:
if(!Tag) { printf("先载入学生成绩!\n"); break; }
sort_english();
printf("是否打印排序后学生成绩:(Y or N)\n");
fflush(stdin);
ch=getchar();
switch(ch)
{
case 'Y':
case 'y':
display();
break;
default:break;
}
break;
case 3:
if(!Tag) { printf("先载入学生成绩!\n"); break; }
sort_c();
printf("是否打印排序后学生成绩:(Y or N)\n");
fflush(stdin);
ch=getchar();
switch(ch)
{
case 'Y':
case 'y':
display();
break;
default:break;
}
break;
case 4:
if(!Tag) { printf("先载入学生成绩!\n"); break; }
sort_num();
printf("是否打印排序后学生成绩:(Y or N)\n");
fflush(stdin);
ch=getchar();
switch(ch)
{
case 'Y':
case 'y':
tag=false;
display();
break;
default:break;
}
break;
case 5:
load_score();
Tag=true;
printf("是否打印载入后的学生成绩:(Y or N)\n");
fflush(stdin);
ch=getchar();
switch(ch)
{
case 'Y':
case 'y':
tag=false;
display();
break;
default:break;
}
break;
default:
printf("感谢使用本系统!\n");
system("exit");
exit(0);
}
printf("是否继续?(Y or N)\n");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='Y'||ch=='y');
}
void load_score()
{
int i;
printf("输入学生人数\n");
scanf("%d",&num);
printf("学生学号 姓名 数学成绩 英语成绩 C语言成绩 \n");
for(i=0;i<MAX&&i<num;i++)
scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,&stu[i].c);
if(i>MAX)
printf("输入人数有误!");
}
void display()
{
int i=0;
if(tag)
{
printf("名次\t学号\t姓名\t数学\t英语\tC语言\n");
for(i=0;i<num;i++)
printf("%d\t%d\t%s\t%.2f\t%.2f\t%.2f\n",i+1,stu[i].num,stu[i].name,stu[i].math,stu[i].english,stu[i].c);
}
else
{
printf("学号\t姓名\t数学\t英语\tC语言\n");
for(;i<num;i++)
printf("%d\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,stu[i].c);
}
}
void sort_math()
{
int i,j;
Stu temp;
for(i=1;i<num;i++)
for(j=1;j<=num-i;j++)
{
if(stu[j-1].math<=stu[j].math)
{
temp=stu[j-1];
stu[j-1]=stu[j];
stu[j]=temp;
}
}
printf("排序完成!\n");
}
void sort_english()
{
int i,j;
Stu temp;
for(i=1;i<num;i++)
for(j=1;j<=num-i;j++)
{
if(stu[j-1].english<=stu[j].english)
{
temp=stu[j-1];
stu[j-1]=stu[j];
stu[j]=temp;
}
}
printf("排序完成!\n");
}
void sort_c()
{
int i,j;
Stu temp;
for(i=1;i<num;i++)
for(j=1;j<=num-i;j++)
{
if(stu[j-1].c<=stu[j].c)
{
temp=stu[j-1];
stu[j-1]=stu[j];
stu[j]=temp;
}
}
printf("排序完成!\n");
}
void sort_num()
{
int i,j;
Stu temp;
for(i=1;i<num;i++)
for(j=1;j<=num-i;j++)
{
if(stu[j-1].num>=stu[j].num)
{
temp=stu[j-1];
stu[j-1]=stu[j];
stu[j]=temp;
}
}
printf("排序完成!\n");
}
刚写的,希望对你有用,考试顺利!
『贰』 c语言题目,已知5个学生4门成绩,求出平均成绩并且排序
#include<iostream>
using namespace std;
void main()
{
int i,j,sum,t;
int a[5][5]={{78,82,93,74},{91,82,72,76},{67,89,90,65},{77,88,99,89},{78,89,99,76}}; //5*5够用了
printf("\n");
for (i=0;i<5;i++)
{ sum=0;
for(j=0;j<4;j++) //加前4个成绩
sum+=a[i][j];
a[i][4]=sum/4;}//平均值除4!存在下标为4的元素内;
for(int k=0;k<5;k++)// 加了层循环回 参看答起泡法
for(i=0;i<5-k;i++)
if(a[i][4]<a[i+1][4])//条件移到循环外了
for(j=0;j<5;j++)
{t=a[i][j];a[i][j]=a[i+1][j];a[i+1][j]=t;}
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf("%8d",a[i][j]);
printf("\n");}
}
『叁』 【C语言】输入学生姓名和成绩排序
这种一般都是要用到结构体的,不用结构体很难讲名字和成绩这种数据一一对应起来。内
结构体容都是设置一种结构,这个结构中可以放置各个类型的数据,比如说一个人是一个结构体,那么名字,身高,体重,性别,等等都可以作为结构体里的数据。然后用这个结构体来初始化一些人,比如说小明,你将小明的身高,体重,性别等等初始化赋值给这个结构体,就可以使用 . 这个运算符号来调用结构体里成员数据。比如说 小明.姓名 的值就是小明。
根据你的提问,具体代码如下:
首先定义一个结构体的定义:
typedef struct Student
{
char name[20]; //名字
int grade; //成绩
}
初始化各个实例:
struct Student Jack, Tom, Tim;
将各个成员赋值:
Jack.name[20] = Jack;
Jack.grade = 63;
以此类推。
排序的具体方法也不难,自己看看书吧。
使用结构体的好处就是将一组与一个事物相关的数值放在一起,统一的管理和调用。
『肆』 C语言~输入5个学生的学号,成绩,按成绩排序(升序),查找90分以上的
代码:
#include<stdio.h>
struct student
{
int num,score[3],age;
char name[20];
float aver;
}stu[1000];
main()
{
int i,j,n;
struct student temp;
/*注意:变量temp的类型与数组stu的元素类型为相同结构体的时候,才可交换两个结构体数组元素,所以此处需要定义temp的类型*/
printf("请输入学生人数: ");
scanf("%d",&n);
printf("请按顺序输入名字、学号、年龄、分数: ");
for(i=0;i<n;i++)
{
scanf("%s",&stu<i>.name);
scanf("%d",&stu<i>.num);
scanf("%d",&stu<i>.age);
for(j=0;j<3;j++)
scanf("%d",&stu<i>.score[j]);
}
for(i=0;i<n;i++)
{int sum=0;
for(j=0;j<3;j++)
sum+=stu<i>.score[j];
stu<i>.aver=sum/3.0;
}
for(i=0;i<n-1;i++)/*利用冒泡排序法按平均分高低排序*/
{for(j=0;j<n-i-1;j++)
{
if(stu[j].aver>stu[j+1].aver)
{temp=stu[j];/*此处交换的应当是数组元素,而不是平均分*/
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
printf("学生信息如下(姓名、学号、年龄、成绩、平均分): ");
for(i=0;i<n;i++)
{
printf("%s%d%d",stu<i>.name,stu<i>.num,stu<i>.age);
for(j=0;j<3;j++)
printf("%d",stu<i>.score[j]);
printf("%.2f ",stu<i>.aver);
}
}
(4)c语言五个学生成绩排序扩展阅读:
头文件#include<stdio.h>中
stdio.h是stand input&output的缩写,意思是标准输入输出头文件。凡是用到标准输入输出函数,就要调用该头文件。
查看stdio.h目录下包含哪些函数:主要有文件访问、二进制输入/输出、格式化和非格式化输入/输出、文件定位、错误处理、文件操作等。
具体打开自己的VS安装目录,找到include文件夹,打开include夹下面的stdio.h文件即可查看
(C:Program Files(x86)Microsoft Visual Studio 14.-1.1.10include)
常用标准输入输出函数:
scanf()从屏幕格式输入
printf()格式输出到屏幕
getchar()从屏幕得到一个字符
putchar()字符输出到屏幕
gets()从屏幕得到一个字符串
puts()字符串输出到屏幕
fscanf()从磁盘格式输入
fprintf()格式输出到磁盘
fgetc()从磁盘得到一个字符
fputc()字符输出到磁盘
fgets()从磁盘得到一个字符串
fputs()字符串输出到磁盘
#号是预处理语句,表明在编译之前预先进行处理。
.h是header file的缩写,表面这是一个头文件。
include是文件包含命令,后面跟着引号""或者尖括号<>,意思是将引号或尖括号内指定的文件包含到本程序中,成为本程序的一部分,而包含的文件通常是由系统提供的。
『伍』 将5名学生的成绩从高到低排序c语言
#include<stdio.h>
int main()
{
int a[30],i,j,t,k;
printf("请以来次输入源30个学生的成绩:");
for(i=0;i<30;i++)scanf("%d",&a[i]);
for(i=0;i<29;i++)
{
k=i;
for(j=i;j<30;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;i<30;i++)
printf("%d\n",a[i]);
return 0;
}
『陆』 c语言 学生成绩排序
结构体还没学到,
我说个大概构思,希望能采纳
让第一个分别和第二个,第三个....比较,如果第一个小于后面的
,则互换
for(i
=
0;
i
<
学生个数;
i++)
{
for(j
=
1;
j
<
学生个数;j++)
{
if(成绩[i]
<
成绩[j])
score
=
成绩[i];
成绩[i]
=
成绩[j];
成绩[j]
=
score;
}
}
『柒』 5个学生4门成绩求平均分并从大到小排序(C语言编程)
#include < stdio.h >
struct stu{
char name[10];
float score[5];
}stu1[5];
int main()
{
void sort(struct stu* ss);
int i,j,sum;
for(i = 0; i < 5; i++){
printf("%s\n","请输入姓名:");
scanf("%s",stu1[i].name);
printf("%s\n","请分别输入成绩:");
for(j = 0; j < 4; j++){
scanf("%d",&stu1[i].score[j]);
sum+=stu1[i].score[j];
}
stu1[i].score[5] = sum/4;
}
sort(stu1);
printf("%s","平均成绩从高到底是:");
for( i = 0; i < 5; i++){
printf("%s %d\t",stu1[i].name,stu1[i].score[5]);
}
return 0;
}
void sort(struct stu* ss)
{
int i ,j,q,temp;
for ( i = 0; i < 4; i++){
q = i;
for( j = i+1; j<5; j++){
if( stu1[q].score[5] < stu1[j].score[5])
q = j;
}
if( q != i){
temp = stu1[i].score[5];
stu1[i].score[5] = stu1[q].score[5];
stu1[q].score[5] = temp;
}
}
}
『捌』 C语言编程:任意输入5个学生成绩,对其进行排序,按照从小到大的顺序输出!
先定义一个int型数组,然后给数组赋值,在接下来用冒泡排序法就OK啦。
『玖』 C语言的学生成绩排序问题
#include <stdio.h>
#include <stdlib.h>
int main() {
struct student {
int num;
float scores;
};
student *stu = new student;
float insert = 0, temp = 0;
int i = 0;
for (; insert != -1; i++) {
printf("请输入学生成绩(结束输入-1):");
scanf("%f", &insert);
stu[i].num = i + 1;
stu[i].scores = insert;
}
for (int m = 0; m < i - 2; m++) {
for (int n = 0; n < i - 2; n++) {
temp = stu[n].scores;
if (temp < stu[n + 1].scores) {
stu[n].scores = stu[n + 1].scores;
stu[n + 1].scores = temp;
temp = stu[n].num;
stu[n].num = stu[n+1].num;
stu[n+1].num = (int)temp;
}
}
}
for (int j = 0 ; j < i - 1 ; j++){
printf("%s%d%s\t%s%d\t%s%.2f\n","第",j+1,"名:","号数:",stu[j].num,"成绩:",stu[j].scores);
}
system("PAUSE");
return 0;
}
『拾』 C语言编程:输入五个人的名字和成绩,根据成绩从小到大排序输出名字和成绩,和总成绩
又是这个问题
#include<stdio.h>
#include<stdlib.h>
#defineN5
structstudent
{
charname[10];
floatscore;
};
intmain()
{
studentstu[N];
floatsum=0.0;
floatt_score[N];
inti;
intj;
floattemp;
printf("输入学生名字成绩,例如:小明90 ");
for(i=0;i<N;++i)
{
scanf("%s",stu[i].name);
scanf("%f",&stu[i].score);
t_score[i]=stu[i].score;
sum+=stu[i].score;
}
for(i=0;i<N-1;++i)
{
for(j=i+1;j<N;++j)
{
if(t_score[i]>t_score[j])
{
temp=t_score[i];
t_score[i]=t_score[j];
t_score[j]=temp;
}
}
}
printf("按成绩从小到大排序: ");
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
if(t_score[i]==stu[j].score)
{
printf("%s%0.2f ",stu[j].name,stu[j].score);
}
}
}
printf("成绩总和:%0.2f ",sum);
return0;
}