从n个学生的成绩中统计出低于平均分的学生人数,此人数作为函数值返回,平均分存放在形参aver所指存储单元中...

#include<stdio.h>
int fun(int k,float *aver,float *grade)
{
	float sum=0.0;
	int count=0;
	for(int i=0;i<k;i++)
		sum+=grade[i];
	*aver=sum/k;
	for(int j=0;j<k;j++)
		if(grade[j]<*aver)
			count++;
	return count;
}
void main()
{
	int k,i;
	float grade[81],aver;
	printf("please input student_num:");
	scanf("%d",&k);
	for(i=0;i<k;i++)
	{
		printf("输入第%d位学生成绩:",i+1);
		scanf("%f",grade+i);
	}
	printf("低于平均分的学生人数是:%d\n",fun(k,&aver,grade));
}

  

转载于:https://www.cnblogs.com/-slz-2/p/11262957.html

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 函数fun的实现如下: ```c void fun(struct student a[], int n, struct student *min) { *min = a[]; // 假设第一个学生成绩最低 for (int i = 1; i < n; i++) { if (a[i].score < min->score) { *min = a[i]; // 更新最低分学生记录 } } } ``` 其,`struct student` 是学生记录的结构体类型,包含学号和学习成绩两个成员变量。`n` 是学生记录的数量,存储在名为 `a` 的结构体数组。`min` 是向最低分学生记录的针,通过返回到主函数函数的实现思路是遍历整个数组,比较每个学生成绩与当前最低分学生成绩,如果更低,则更新最低分学生记录。最终,`min` 向的就是成绩最低的学生记录。 ### 回答2: 首先,需要定义一个结构体来存储学号和学习成绩: ``` struct student { int id; // 学号 float score; // 学习成绩 }; ``` 然后,定义一个函数 `fun`,它的输入数为一个 `struct student` 类型的数组和数组的长度,输数为一个向 `struct student` 类型的变量的针(即找到的成绩最低的学生记录): ``` struct student* fun(struct student a[], int n) { struct student* min_student = &(a[0]); // 初始化最低分的学生记录为第一个学生 for (int i = 1; i < n; i++) { // 遍历整个数组,比较每个学生成绩 if (a[i].score < min_student->score) { // 如果有更低的成绩,则更新最低分的学生记录 min_student = &(a[i]); } } return min_student; // 返回最低分的学生记录 } ``` 在主函数调用这个函数并输结果: ``` int main() { // 定义一个结构体数组并存入数据 int n = 5; // 学生数量为5 struct student a[] = { {101, 90}, {102, 80}, {103, 70}, {104, 60}, {105, 50} }; // 调用函数并输结果 struct student* min_student = fun(a, n); printf("最低分的学生是学号为%d,成绩为%.2f\n", min_student->id, min_student->score); return 0; } ``` 输结果为: ``` 最低分的学生是学号为105,成绩为50.00 ``` ### 回答3: 要完成这个任务,我们需要先了解C语言的结构体和函数数传递。 结构体是一种自定义数据类型,可以通过定义一个结构体来表示一个实体,这个实体可以包含多个字段,每个字段可以是不同的数据类型。例如,我们可以定义一个学生的结构体: ``` typedef struct { int id; // 学号 int score; // 学习成绩 } Student; ``` 这个结构体有两个字段,分别表示学号和学习成绩。我们可以用这个结构体数组来记录n名学生的数据: ``` Student a[N]; ``` 其N是数组的长度,a是数组名。我们可以通过a[i].id和a[i].score来访问第i个学生的学号和成绩。 现在我们需要编写一个函数,找成绩最低的学生记录。我们可以定义这样一个函数: ``` void fun(Student a[], int n, Student *min) { *min = a[0]; // 先假设第一个学生成绩最低 for (int i = 1; i < n; i++) { if (a[i].score < min->score) { *min = a[i]; //如果这个学生成绩更低,更新min的 } } } ``` 这个函数的第一个数是一个结构体数组a,第二个数是数组的长度n,第三个数是一个向结构体的针min,用来保存成绩最低的学生记录。函数的实现采用了一种遍历数组的方式,先假设第一个学生成绩最低,然后逐个比较每个学生成绩,如果发现更低的成绩就更新min的。 在主函数,我们可以这样调用这个函数: ``` Student min; fun(a, n, &min); printf("成绩最低的学生是%d,成绩是%d\n", min.id, min.score); ``` 这个程序会输成绩最低的学生的学号和成绩。我们可以用这个方法来找数组任何一个数据的最,只需要将比较的方式改成比较这个数据的某个属性就可以了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值