回复 2楼 pgy
首先谢谢你的帮忙和解答,可是我说的是上机考试啊.....呵呵
给你看看我的结果,只看proc函数就行.我只得了30分,满分40分.
这是标准答案的写法:
#include <stdio.h>
#define
M
16
typedef
struct
{ char num[10];
int
s ;
}STREC;
int
proc(STREC *a, STREC *b)
{
int i,j=0,min=a[0].s;
//min是放最低分数的变量
for(i=0;i<M;i++)
if(min>a[i].s)
//
当有比min更小的数,则又把更小的赋给min
min=a[i].s;
for(i=0;i<M;i++)
if(min==a[i].s)
//
因此有可能最小的数不只一个,因此此循环其到这个作用
b[j++]=a[i];
return j;
// 最后把其下标返回到主函数中
}
void main ()
{
STREC
stu[M]={{"GA005",82},{"GA003",75},
{"GA002",85},{"GA004",78},{"GA001",95},
{"GA007",62},{"GA008",60},{"GA006",85},
{"GA015",83},{"GA013",94},{"GA012",78},
{"GA014",97},{"GA011",60},{"GA017",65},
{"GA018",60},{"GA016",74}};
STREC h[M];
int i, n;
n=proc(stu,h);
printf("The %d lowest score :\n",n);
for (i=0; i<n; i++)
printf("%s %4d\n",h[i].num,h[i].s);
/*输出最低分学生的学号和成绩*/
printf("\n");
}
这是我的写法:
#include <stdio.h>
#define
M
16
typedef
struct
{ char num[10];
int
s ;
}STREC;
int
proc(STREC *a, STREC *b)
{int i,j=0,min=a[0].s;
for(i=0;i<M;i++)
if(a[i].s<min)
min=a[i].s;
for(i=0;i<M;i++)
if(a[i].s==min)
b[j++]=a[i];
return j;
}
void main ()
{
STREC
stu[M]={{"GA005",82},{"GA003",75},
{"GA002",85},{"GA004",78},{"GA001",95},
{"GA007",62},{"GA008",60},{"GA006",85},
{"GA015",83},{"GA013",94},{"GA012",78},
{"GA014",97},{"GA011",60},{"GA017",65},
{"GA018",60},{"GA016",74}};
STREC h[M];
int i, n;
n=proc(stu,h);
printf("The %d lowest score :\n",n);
for (i=0; i<n; i++)
printf("%s %4d\n",h[i].num,h[i].s);
//输出最低分学生的学号和成绩
printf("\n");
}
非常 感谢回复帮忙