这是我自己写的,肯定不是最好的,但是已经能够满足你的要求了,后面附有注释,若有不懂的话请留言。
#include<stdio.h>
#include<stdlib.h>
#define
N
1024
typedef
struct
node
{
int
sno/*这里分别是学号(便于最后列表时统计),四门课的分数,总分,平均分*/
int
course1
int
course2
int
course3
int
course4
int
aver
}student
void
main()
{
int
i,j,number
int
total1,total2,total3,total4
total1=total2=total3=total4=0/*total指的是四门课程的平均分*/
student
st[N],temp
printf("Please
input
the
student's
number:")/*确定学生人数*/
scanf("%d",&number)
if(number>1024)
{
printf("The
number
is
too
large!\n")
exit(0)
}
for(i=0i<numberi++)/*进行成绩输入*/
{
printf("Please
input
the
%dth
student's
sno:",i+1)
scanf("%d",&st[i].sno)
printf("Please
input
the
%d's
student's
course1:",st[i].sno)
scanf("%d",&st[i].course1)
printf("Please
input
the
%d's
student's
course2:",st[i].sno)
scanf("%d",&st[i].course2)
printf("Please
input
the
%d's
student's
course3:",st[i].sno)
scanf("%d",&st[i].course3)
printf("Please
input
the
%d's
student's
course4:",st[i].sno)
scanf("%d",&st[i].course4)
st[i].aver=(st[i].course1+st[i].course2+st[i].course3+st[i].course4)/4
}
for(i=0i<numberi++)/*输出每个学生的平均分*/
printf("The
%d's
student's
aver-score
is:%d\n",st[i].sno,st[i].aver)
for(i=0i<numberi++)/*输出每科目平均分*/
{
total1+=st[i].course1
total2+=st[i].course2
total3+=st[i].course3
total4+=st[i].course4
}
total1/=number
total2/=number
total3/=number
total4/=number
printf("The
averscore
of
course1
is:%d\n",total1)
printf("The
averscore
of
course2
is:%d\n",total2)
printf("The
averscore
of
course3
is:%d\n",total3)
printf("The
averscore
of
course4
is:%d\n",total4)
for(i=0i<number-1i++)/*进行冒泡排序*/
for(j=i+1j<numberj++)
if(st[i].aver<st[j].aver)
{
temp=st[i]
st[i]=st[j]
st[j]=temp
}
printf("The
list
of
the
student's
course:\n")
printf("==========\n")/*列表公布成绩*/
for(i=0i<numberi++)
{
printf("%d.",i+1)
printf("%dth
student:%d\n",st[i].sno,st[i].aver)
}
}
上级运行成功,希望对你有所帮助!
祝你的成绩步步高升!
#include<stdio.h>void main(){
int i,j,score[10],count=0,temp,sum=0
double avg
for(i=0i<10i++){ //输入10个学生的成绩,并求着10个学生的成绩总和
printf("请输入第%d个学生的成绩:",(i+1))
scanf("%d",&score[i])
sum+=score[i]
}
avg=sum*1.0/10 //求着这10个学生成绩的平均值
for(i=0i<10i++){ //统计小于平均分的学生人数
if(score[i]<avg){
count++
}
}
for(i=0i<10i++){ //使用冒泡排序对这10个学生的成绩逆序排序
for(j=0j<9-ij++){
if(score[j]<score[j+1]){
temp=score[j]
score[j]=score[j+1]
score[j+1]=temp
}
}
}
printf("最高成绩:%d分,平均成绩:%.2f分,低于平均成绩的人数是:%d人!\n",score[0],avg,count)
}
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#define N 2//学生人数
#define M 4//课程数
struct student
{
char name[20]
float score[M]
float average
}
struct student temp
float average(float score[M])//求平均分
{
int i
float sum=0
for(i=0i<Mi++)
sum+=score[i]
return sum/M
}
void sort(struct student st[])//排序
{
int i,j
for(i=0i<Ni++)
{ temp=st[i]
for(j=ij<Nj++)
{
if(st[j].average>temp.average)
{
st[i]=st[j]
st[j]=temp
}
}
}
}
void output_mingci(struct student st[])//输出名次
{
int i
for(i=0i<Ni++)
printf("%s\t第%d名\n",st[i].name,i+1)
}
void output_data(struct student st[])//输出信息
{
int i,j
printf("姓名\t英语\t数学\t政治\t历史\t平均分\n")
for(i=0i<Ni++)
{ printf("%s\t",st[i].name)
for(j=0j<Mj++)
printf("%.2f\t",st[i].score[j])
printf("%.2f\n",st[i].average)
}
}
void input_data(struct student st[])//输入数据
{
int i,j
for(i=0i<Ni++)
{
printf("请输入学生的姓名:")
scanf("%s",st[i].name)
printf("请输入学生各门功课的成绩:")
for(j=0j<Mj++)
scanf("%f",&st[i].score[j])
st[i].average=average(st[i].score)
}
}
int main()
{ int i
struct student st[N]
printf("\t\t\t\t学生成绩统计系统\n")
input_data(st)
sort(st)
output_mingci(st)
output_data(st)
system("PAUSE")
return 0
}
/*编译系统是DEV-CPP,2008.12.18*/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)