C语言程序设计作业:四个问题如下!

某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。考试后要求:
(1)计算每个学生的总分和平均分;
(2)按总分成绩由高到低排出成绩的名次;
(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;
(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数
【提示】用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。
(1)用函数编程实现计算每个学生的总分;
(2)用函数编程实现按总分由高到低对学生成绩排序;
(3)用函数编程实现查找学号为k的学生在班级中的排名名次及相关成绩等信息,找不到时返回-1值。
(注:用C语言,而非C++作答)
急急急!哪位能帮帮忙,我感谢他,再加五十分悬赏感谢!


第一题:
void main()
{
int n,sum;

n=20;
sum=0;
sum=fun(n);
printf("%ld\n",sum);
return;
}

long fun(int n)
{
int i;
long tmp;

i=1;
while(i<=n){
tmp+=i*i;
i++;
}
return tmp;
}

第二题:
void main()
{
int n;

n=1000;
fun(n);
return;
}

void fun(int n)
{
int i,sum,tmp;

for(int i=1;i<n;i++){ //这里是找1到n之间的水仙数。当然你可以找任意区间的水仙数,只要改变下i的循环数即可。
tmp=i;
sum=0;
while(tmp>0){
sum = sum + (tmp%10)*(tmp%10);
tmp=tmp/10;
}
if(sum==i){
printf("%d\n",i)
}

}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-11-11
#include<stdio.h>
#include<string.h>
#define N 6 //定义实际参加考试的人数,我设的是30
#define M 3 //定义学号的位数,我设的是2位

int score[N][3]={{10,20,30},{40,50,60},{70,80,90},{15,25,35},{45,55,65},{75,85,95}};
int sum[N];
float aver[N];
char studentno[N][M]={"01","02","03","04","05","06"};

void jsaver()
{
int i;
for(i=0;i<N;i++)
aver[i]=(float)sum[i]/3; printf("%f\n",aver[0]);
}
void jssum()
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<3;j++)
sum[i]+=score[i][j];
}
}
void sum_px()
{
int i,j,k;int t;char s[M];
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(sum[i]<sum[j])
{
t=sum[i];
sum[i]=sum[j];
sum[j]=t;
for(k=0;k<3;k++)
{
t=score[i][k];
score[i][k]=score[j][k];
score[j][k]=t;
}
strcpy(s,studentno[i]);
strcpy(studentno[i],studentno[j]);
strcpy(studentno[j],s);
}
}
void findNO(char s[M])
{
int i;
for(i=0;i<N;i++)
if(strcmp(studentno[i],s)==0)
printf("学号为:%s,成绩排名第%3d位,数学%4d分,英语%4d分,物理%4d分,总分%4d\n",
s,i+1,score[i][0],score[i][1],score[i][2],sum[i]);
}

void main()
{
char s[M];
int i;
jssum();
sum_px();
jsaver();

printf("成绩表:\n");
printf("学号成绩排名 数学 英语 物理 总分 平均分\n");
for(i=0;i<N;i++)
printf("%s %3d %4d %4d %4d %4d %6.2f \n",studentno[i],i+1,score[i][0],score[i][1],score[i][2],sum[i],aver[i]);
printf("请输入要查询的学号:\n");
scanf("%s",s);
findNO(s);
}本回答被提问者采纳