C语言编程>第七周 ⑦ 学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组score中,请编写函数fun,它的功能是把分数最低的学生数据放在low所指的数组中。

156 阅读3分钟

例题:学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组score中,请编写函数fun,它的功能是把分数最低的学生数据放在low所指的数组中,注意:分数最低的学生可能不只一个,函数返回分数最低的学生的人数。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

代码如下:

#include<stdio.h>
#define M 10
typedef struct
{
	char num[10];
	int s;
	}SCORE;
int fun(SCORE*a,SCORE*b)
{
	int i,j=0,n=0,min;
	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];
	j++;
	n++;
	}
	return n;
}
main()
{
	SCORE stu[M]={{"GA03",76},{"GA04",85},{"GA01",91},{"GA08",64},{"GA06",87},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};
	SCORE low[M];
	int i,n;
	FILE*out;
	n=fun(stu,low);
	printf("The %d lowest score:\n",n);
	for(i=0;i<n;i++)
	printf("%s %4d\n",low[i].num,low[i].s);
	printf("\n");
	out=fopen("outfile.dat","w");
	fprintf(out,"%d\n",n);
	for(i=0;i<n;i++)
	fprintf(out,"%4d\n",low[i].s);
	fclose(out);
}

输出运行窗口如下:
在这里插入图片描述
本周其他练习

C语言程序设计专栏

C语言编程>第七周 ① 请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整初的所有整数放在数组b中,通过n返回这些数的个数。

C语言编程>第七周 ② 请编写一个函数fun,它的功能是:找出一维整型数组元素中最小的值和它所在的下标,最小的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。

C语言编程>第七周 ③ 下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的r。

C语言编程>第七周 ④ 请编写函数fun,其功能是:将str所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部删除;串中剩余字符所形成的一个新串放在s所指的数组中。

C语言编程>第七周 ⑤ 请编写一个函数void fun(ints,int t,intresult),用来求出数组的最小元素在数组中的下标,并存放在result所指的存储单元中。

C语言编程>第七周 ⑥ 给定程序的功能是判断字符串s中的某个字符是否与字符ch相同,若相同什么也不做,若不同则插在字符串的最后。

C语言编程>第七周 ⑦ 学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组score中,请编写函数fun,它的功能是把分数最低的学生数据放在low所指的数组中。

C语言编程>第七周 ⑧ 请编一个函数void fun(int a[M][N],int b[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中。

越努力越幸运!
加油,奥力给!!!