帮小弟做一道C语言编程作业题,谢谢大家了~(要详细的程序命令啊)

编程序:
已知学生记录由学号和成绩组成,其类型定义如下所示:
struct student
{char no[10];float score;}
编写程序输入N个学生的数据,然后输出分数最高的学生数据,以及分数最高的学生人数。注意:分数最高的学生可能不止一个。

#include<stdio.h>

#include<stdlib.h>

struct student

{

char no[10];

float score;

};

main()

{

int i,N,count=0;

float max;

struct student *p;

printf("please input students'number:N=");

scanf("%d",&N);

p=(struct student*)malloc(N*sizeof(struct student));

printf("\nplease input students' score:\n");

printf("NO.\tscore\n");

for(i=0;i<N;i++)

{

scanf("%s %f",(p+i)->no,&(p+i)->score);

if(i==0)max=p->score;

else if(max<(p+i)->score)max=(p+i)->score;

}

printf("\nstudents of max score:\nNO.\tscore\n");

for(i=0;i<N;i++)

{

if(max==(p+i)->score)

printf("%s\t%.2f\n",(p+i)->no,(p+i)->score),count++;

}

printf("\nmax \ttotal\n");

printf("%.2f\t%d\n",max,count);

free(p);

}              /*刚刚有点小问题,改过来了,望采纳*/

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-14
#include<stdio.h>
#include<malloc.h>
struct student
{char no[10];
float score;
};
void main()
{
int N,i,num=0;
float max;
struct student *p;
scanf("%d",&N);//输入学生人数
p=(struct student*)malloc(N*sizeof(struct student));
for(i=0;i<N;i++)
scanf("%s%f",(p+i)->no,&(p+i)->score);//输入数据:学好和分数
max=p->score;
for(i=0;i<N;i++)
if(max<(p+i)->score)
max=(p+i)->score;//求最高分
for(i=0;i<N;i++)
{if(max==(p+i)->score)
num++;//确定最高分的人数
}
printf("%f %d\n",max,num);//输出最高分和人数
free(p);//释放动态分配的空间
}
本程序使用了动态分配内存,能够灵活确定学生人数
呵呵本回答被提问者采纳
第2个回答  2011-06-13
#include <stdio.h>

typedef struct {
char no[10];
float score;
}Student;

int compare(const void *a,const void *b)
{
return (*(Student *)b).score-(*(Student *)a).score;
}

int main()
{
int i=0;
Student stu[101];
printf("input student No.(0 to quit):");
scanf("%s",stu[0].no);
while(strcmp(stu[i].no,"0") && i < 100) {//输入数据,0退出输入
printf("input score:");
scanf("%f",&stu[i].score);
printf("input student No.(0 to quit:");
scanf("%s",stu[++i].no);
}

qsort(stu,i,sizeof(Student),compare);//从大到小排序
i=0;
while(stu[i].score-stu[0].score>-0.001) {//输出最高分
printf("%s,%.1f\n",stu[i].no,stu[i].score);
i++;
}
printf("%d students got highest score\n",i);//最高分人数

return 0;
}
第3个回答  2011-06-13
student s;
for(int i=0;i<10;i++)
{
s.no[i]=scanf(%d...);
}
一样的排序方法;
输出;
相似回答
大家正在搜