一道C语言编程题目急求解!!!!
(1)编程处理某班30个学生、4门功课的成绩,它们是数学、物理、英语和计算机,按学号依次输入学生的学号、姓名和4门功课的成绩。要求以清晰的格式从高分到低分的顺序打印平均分...
(1) 编程处理某班30个学生、4门功课的成绩,它们是数学、物理、英语和计算机,按学号依次输入学生的学号、姓名和4门功课的成绩。要求以清晰的格式从高分到低分的顺序打印平均分高于全班总平均分的男生的成绩单(要求:输入、输出、计算和排序分别用函数实现,主程序调用这些函数。且不得使用全局变量)。
#include<stdio.h>
#include<string.h>
#define N 30
void main()
{
void ke_input(int number[N],float score[N][4],char name[N][10]);
float ke_aver(float score[N][4]);
void arrange(float score[N][4],char name[N][10]);
void ke_output(float zero,int number[N],float score[N][4],char name[N][10]);
float avero;
float score1[N][4];
int number1[N];
char name1[N][10];
printf(" No. name math physic english computer\n");
ke_input(number1,score1,name1);
arrange(score1,name1);
avero=ke_aver(score1);
ke_output(avero,number1,score1, name1);
}
void ke_input(int number[N],float score[N][4],char name[N][10])
{
int i;
for(i=0;i<N;i++)
{
printf("please input number,name,math,physic,english,computer\n");
scanf("%d%s%f",&number[i],name[i],score[i]);
}
}
float ke_aver(float score[N][4])
{
int i,j;
float aver,sum=0;
for(j=0;j<4;j++)
for(i=0;i<N;i++)
{
sum+=score[i][j];
}
aver=sum/N;
return(aver);
}
void arrange(float score[N][4],char name[N][10])
{
int i,j,m,n,min;
float temp,s[N]={0};
char mingzi[10];
for(i=0;i<N;i++)
for(j=0;j<4;j++)
{
s[i]+=score[i][j];
}
for(m=0;m<N-1;m++)
{
min=m;
for(n=m+1;n<N;n++)
if(s[min]<s[n])
{ min=n;
temp=s[m];
strcpy(mingzi,name[m]);
s[m]=s[min];
strcpy(name[m],name[min]);
s[min]=temp;
strcpy(name[min],mingzi);
}
}
}
void ke_output(float zero,int number[N],float score[N][4],char name[N][10])
{ int i,j,k;
float s[N]={0};
for(i=0;i<N;i++)
for(j=0;j<4;j++)
s[i]+=score[i][j];
for(k=N-1;k>=0;k--)
if(s[k]<zero)
break;
for(i=N-1;i>k;i--)
{
printf("\n");
for(i=0;j<4;j++)
printf("%6d",score[i][j]);
printf("%d%s",number[i],name[i][10]);
}
} 展开
#include<stdio.h>
#include<string.h>
#define N 30
void main()
{
void ke_input(int number[N],float score[N][4],char name[N][10]);
float ke_aver(float score[N][4]);
void arrange(float score[N][4],char name[N][10]);
void ke_output(float zero,int number[N],float score[N][4],char name[N][10]);
float avero;
float score1[N][4];
int number1[N];
char name1[N][10];
printf(" No. name math physic english computer\n");
ke_input(number1,score1,name1);
arrange(score1,name1);
avero=ke_aver(score1);
ke_output(avero,number1,score1, name1);
}
void ke_input(int number[N],float score[N][4],char name[N][10])
{
int i;
for(i=0;i<N;i++)
{
printf("please input number,name,math,physic,english,computer\n");
scanf("%d%s%f",&number[i],name[i],score[i]);
}
}
float ke_aver(float score[N][4])
{
int i,j;
float aver,sum=0;
for(j=0;j<4;j++)
for(i=0;i<N;i++)
{
sum+=score[i][j];
}
aver=sum/N;
return(aver);
}
void arrange(float score[N][4],char name[N][10])
{
int i,j,m,n,min;
float temp,s[N]={0};
char mingzi[10];
for(i=0;i<N;i++)
for(j=0;j<4;j++)
{
s[i]+=score[i][j];
}
for(m=0;m<N-1;m++)
{
min=m;
for(n=m+1;n<N;n++)
if(s[min]<s[n])
{ min=n;
temp=s[m];
strcpy(mingzi,name[m]);
s[m]=s[min];
strcpy(name[m],name[min]);
s[min]=temp;
strcpy(name[min],mingzi);
}
}
}
void ke_output(float zero,int number[N],float score[N][4],char name[N][10])
{ int i,j,k;
float s[N]={0};
for(i=0;i<N;i++)
for(j=0;j<4;j++)
s[i]+=score[i][j];
for(k=N-1;k>=0;k--)
if(s[k]<zero)
break;
for(i=N-1;i>k;i--)
{
printf("\n");
for(i=0;j<4;j++)
printf("%6d",score[i][j]);
printf("%d%s",number[i],name[i][10]);
}
} 展开
2个回答
展开全部
以前学过点C语言,解决实际问题的时候总是力不从心,不狠狠钻研的话,学了是很难派上用场的,后来,学些SQL语句,处理实际问题的时候,好像简单点
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询