求C语言编程实现由键盘输入3个学生的信息(包括学号、姓名、成绩)程序运行后按照成绩的高低顺序输出各学生的
4个回答
展开全部
#include<stdio.h>
struct Stu
{
int num;
char name[20];
float score;
};
void Input(struct Stu s[])
{
int i;
for(i=0;i<3;++i)
scanf("%d%s%f",&s[i].num,s[i].name,&s[i].score);
}
void Sort(struct Stu *a[])
{
int i,j;
struct Stu *t,**p;
for(i=0;i<2;++i)
{
p=a+i;
for(j=i+1;j<3;++j)
if((*p)->score<a[j]->score)p=a+j;
if(p!=a+j)
{
t=*p;
*p=a[i];
a[i]=t;
}
}
}
int main()
{
struct Stu s[3],*a[3];
int i;
Input(s);
for(i=0;i<3;++i)
a[i]=&s[i];
Sort(a);
for(i=0;i<3;++i)
printf("%d %s %.2f\n",a[i]->num,a[i]->name,a[i]->score);
return 0;
}
struct Stu
{
int num;
char name[20];
float score;
};
void Input(struct Stu s[])
{
int i;
for(i=0;i<3;++i)
scanf("%d%s%f",&s[i].num,s[i].name,&s[i].score);
}
void Sort(struct Stu *a[])
{
int i,j;
struct Stu *t,**p;
for(i=0;i<2;++i)
{
p=a+i;
for(j=i+1;j<3;++j)
if((*p)->score<a[j]->score)p=a+j;
if(p!=a+j)
{
t=*p;
*p=a[i];
a[i]=t;
}
}
}
int main()
{
struct Stu s[3],*a[3];
int i;
Input(s);
for(i=0;i<3;++i)
a[i]=&s[i];
Sort(a);
for(i=0;i<3;++i)
printf("%d %s %.2f\n",a[i]->num,a[i]->name,a[i]->score);
return 0;
}
更多追问追答
追问
我看不懂。。
追答
1、定义了一个包含学号、姓名、分数的结构体
2、从键盘输入——Input函数
3、根据从大到小的顺序使定义的结构体指针数组依次指向结构体数组里的元素——Sort函数
4、在main函数中定义结构体数组和结构体指针数组,调用Input函数,调用Sort函数,根据题意输出
展开全部
#include<stdio.h>
typedef struct student
{
char xh[6];
char name[20];
float score;
}stu;
main()
{
stu xs[3];
int i,j;
stu k;
for(i=0;i<3;i++)
{
printf("请输入第%d个学生的学号:",i+1);
scanf("%s",xs[i].xh);
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",xs[i].name);
printf("请输入第%d个学生的成绩:",i+1);
scanf("%f",xs[i].score);
}
for(i=0;i<2;i++)//排序
for(j=i+1;j<3;j++)
if(xs[i].score>xs[j].score)
{
k=xs[i];
xs[i]=xs[j];
xs[j]=k;
}
printf("排序后的学生记录:\n");
for(i=0;i<3;i++)
{
printf("%s\t",xs[i].xh);
printf("%s\t",xs[i].name);
printf("%f\t",xs[i].score);
}
}
typedef struct student
{
char xh[6];
char name[20];
float score;
}stu;
main()
{
stu xs[3];
int i,j;
stu k;
for(i=0;i<3;i++)
{
printf("请输入第%d个学生的学号:",i+1);
scanf("%s",xs[i].xh);
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",xs[i].name);
printf("请输入第%d个学生的成绩:",i+1);
scanf("%f",xs[i].score);
}
for(i=0;i<2;i++)//排序
for(j=i+1;j<3;j++)
if(xs[i].score>xs[j].score)
{
k=xs[i];
xs[i]=xs[j];
xs[j]=k;
}
printf("排序后的学生记录:\n");
for(i=0;i<3;i++)
{
printf("%s\t",xs[i].xh);
printf("%s\t",xs[i].name);
printf("%f\t",xs[i].score);
}
}
追问
运行时有错误。这是怎么回事啊。能帮我调一下。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以仿照这个儿做很简单的。。。这样你才可以学到东西。
#include<stdio.h>
#define N 3
#define M 5
float score[N][M];
float a_stu[N];
float a_cour[M];
void main()
{
int i,j;
void input_stu();
void aver_stu();
float aver_cour();
float highest();
input_stu();
aver_stu();
printf("\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆学生成绩☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("\n学号\t高数\t英语\tc语言\tJAVA\t计算机\t平均分\n");
for(i=0;i<N;i++)
{
printf("%d\t",i+1);
for(j=0;j<M;j++)
printf("%.2f\t",score[i][j]);
printf("%.2f\n",a_stu[i]);
}
aver_cour();
highest();
}
void input_stu() //输入3个学生成绩函数
{
int i,j;
for(i=0;i<N;i++)
{
printf("输入第%d个学生的5门成绩:",i+1);
for(j=0;j<M;j++)
scanf("%f",&score[i][j]);
}
}
void aver_stu() //3个学生5门课平均成绩
{
int i,j,s;
for(i=0;i<N;i++)
{ s=0;
for(j=0;j<M;j++)
{ s+=score[i][j];
a_stu[i]=s/5.0;
}
}
}
float aver_cour() //每门课平均成绩
{
int i,j,k;
printf("平均 ");
for(i=0;i<M;i++)
{ k=0;
for(j=0;j<N;j++)
{
k+=score[j][i];
}
a_cour[j]=k/N;
printf("%.2f\t",a_cour[j]);
}
printf("\n");
}
float highest() //求最高分数函数
{
int i,j,a,b,max;
max=score[0][0];
for(i=0;i<N;i++)
{ for(j=0;j<M;j++)
if(max<score[i][j])
{ max=score[i][j];
a=i+1;
b=j+1;
}
}
printf("最高成绩为:%d\n",max);
printf("该学生号为:%d\n",a);
printf("该课程号为:%d\n",b);
}
#endif
#include<stdio.h>
#define N 3
#define M 5
float score[N][M];
float a_stu[N];
float a_cour[M];
void main()
{
int i,j;
void input_stu();
void aver_stu();
float aver_cour();
float highest();
input_stu();
aver_stu();
printf("\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆学生成绩☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("\n学号\t高数\t英语\tc语言\tJAVA\t计算机\t平均分\n");
for(i=0;i<N;i++)
{
printf("%d\t",i+1);
for(j=0;j<M;j++)
printf("%.2f\t",score[i][j]);
printf("%.2f\n",a_stu[i]);
}
aver_cour();
highest();
}
void input_stu() //输入3个学生成绩函数
{
int i,j;
for(i=0;i<N;i++)
{
printf("输入第%d个学生的5门成绩:",i+1);
for(j=0;j<M;j++)
scanf("%f",&score[i][j]);
}
}
void aver_stu() //3个学生5门课平均成绩
{
int i,j,s;
for(i=0;i<N;i++)
{ s=0;
for(j=0;j<M;j++)
{ s+=score[i][j];
a_stu[i]=s/5.0;
}
}
}
float aver_cour() //每门课平均成绩
{
int i,j,k;
printf("平均 ");
for(i=0;i<M;i++)
{ k=0;
for(j=0;j<N;j++)
{
k+=score[j][i];
}
a_cour[j]=k/N;
printf("%.2f\t",a_cour[j]);
}
printf("\n");
}
float highest() //求最高分数函数
{
int i,j,a,b,max;
max=score[0][0];
for(i=0;i<N;i++)
{ for(j=0;j<M;j++)
if(max<score[i][j])
{ max=score[i][j];
a=i+1;
b=j+1;
}
}
printf("最高成绩为:%d\n",max);
printf("该学生号为:%d\n",a);
printf("该课程号为:%d\n",b);
}
#endif
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-06-02
展开全部
查中国铁道出版社的c/c++书中有原题
追问
找不到,能帮我找下。。有急用。。
追答
行不过得明天
今晚拿不到书
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询