Ⅰ 学生成绩排序问题,用c语言。。。
建议你首先定义数据结构,两个结构体数组。
一个结构体存放学生信息,另外一个是存放选课信息。
学生成绩和选课信息数据可以通过读文件读到结构体数据,然后编写循环实现相应的功能即可。
另外建议你自己实践一下,学习编程最大的悲哀就是抄别人的程序。当然可以借鉴,但是还是要自己编写。
Ⅱ 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);
}
}
(2)成绩排序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是文件包含命令,后面跟着引号""或者尖括号<>,意思是将引号或尖括号内指定的文件包含到本程序中,成为本程序的一部分,而包含的文件通常是由系统提供的。
Ⅲ C语言 怎么对成绩排序
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
student *x=(student*)a;
student *y=(student*)b;
if(x->score[0] > y->score[0])//升序排序(从小到大) 如果>改成<,就是降序排序(从大到小)
return 1;
return 0;
}
//上面函数放在struct student下面,需要该结构
//排序方式可以灵活调整,上面我只是用第一门分数进行比较
//你也可以用其它分数进行比较,多写2个函数就行,如int cmp2(const void*a,const void*b)等等。
//排序函数
qsort(stu,STU_NUM,sizeof(stu[0]),cmp);
//stu是数组名,STU_NUM是数组元素个数,cmp就排序方式(可以替换为cmp2等等)
Ⅳ C语言编程成绩排序输出
struct stu
{char a[10];
int i;
int j;
int k;
int m;
int n;
int x;
};
int sum(struct stu p)
{int sum=p.i+p.j+p.k+p.m+p.n;
return sum;}
main()
{struct stu p[6],ac;
int l,a[6],b;
for(l=0;l<6;l++)
{scanf("%s%d%d%d%d%d",p[l].a,&p[l].i,&p[l].j,&p[l].k,&p[l].m,&p[l].n);
p[l].x=sum(p[l]);}
printf("姓名 英语 计算机原理 统计学原理 政治 C语言 总分 平均分\n");
for(l=0;l<6;l++)
{printf("%s %5d%5d%5d%5d%5d%5d%5d\n",p[l].a,p[l].i,p[l].j,p[l].k,p[l].m,p[l].n,p[l].x,p[l].x/5);}
for(l=0;l<6;l++)
for(b=0;b<6;b++)
if(p[l].x>p[b].x)
{ac=p[l];p[l]=p[b];p[b]=ac;}
printf("姓名 英语 计算机原理 统计学原理 政治 C语言 总分 平均分\n");
for(l=0;l<6;l++)
{printf("%s %5d%5d%5d%5d%5d%5d%5d\n",p[l].a,p[l].i,p[l].j,p[l].k,p[l].m,p[l].n,p[l].x,p[l].x/5);}
getch();}
Ⅳ 编写c语言程序用三个函数求10个同学的平均分及成绩排序
#include<stdio.h>
#definen10
intmain()
{
intpj(doubleb[]);
voidpx(doubleb[]);
intsc(doubleb[]);
doublea[10];
inti;
for(i=0;i<10;i++)
scanf("%lf",&a[i]);
sc(a);
return0;
}
intpj(doubleb[])
{
doublesum,pj;
inti;
for(i=0;i<n;i++)
sum+=b[i];
pj=sum/n;
returnpj;
}
voidpx(doubleb[])
{
inti,j,tem;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(b[i]<b[j])
{
tem=b[j];
b[j]=b[i];
b[i]=tem;
}
}
intsc(doubleb[])
{
doublep;
inti;
p=pj(b);
printf("平均数是%lf ",p);
px(b);
printf("排序:");
for(i=0;i<10;i++)
printf("%lf ",b[i]);
}
Ⅵ 用c语言怎么样按总成绩降序排序后显示学生的数据
冒泡和选择排序两种比较简单
举个例子 冒泡
数据在数组score[N]中
for (i=0;i<N;i++}
{
for (j=0;j<N-1;j++)
{
if (score[j]<score[j+1])
{
int temp;
temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
这样数据就从大到小排好了 然后使用循环输出学生数据就可以了
Ⅶ 这个c语言函数能不能改成排序后输出前十名成绩
信息输出在最后那个函数里吧,要改也是改那个,OutputInformation();这函数里边写的应该是信息输出吧,你把这些排序的发上来也没用啊,
Ⅷ 用c语言冒泡排序方法,对学生成绩从高到低进行排序。 拜托大神们帮忙
#include <stdio.h>
void bubble_sort(int a[], int n)
{int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
if(a[i] > a[i + 1])
{temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;}
}
int main()
{int number[10] = {95, 45, 15, 78, 84, 51, 24, 12, 38, 97};
int i,SIZE=10;
bubble_sort(number, SIZE);
for (i = 0; i < SIZE; i++)
printf("%d", number[i]);
printf("\n");
return 0;
}
Ⅸ C语言 学生成绩排序
你说的序号是指学号吗?要和姓名一一对应?
Ⅹ C语言编程程序,成绩排序并求最高低分
最简单的冒泡法:
float StudentMark[20];//20学生成绩
//赋值过程省略
float Temp;//中间变量
for(int i=0;i<20-1;i++) //冒泡法
for(int j=1;j<20-i;j++)
{
if(StudentMark[j]<StudentMark[j-1})
Temp=StudentMark[j-1]; //交换数据
StudentMark[j-1]=StudentMark[j];
StudentMark[j]=Temp;
}