任务描述
请设计一个函数,以指针变量作为函数的参数,从标准输入上读入数量不定的成绩。统计全班成绩的总数量、90 分及以上成绩的个数、60 分及以上成绩的个数和全班成绩的平均分,并返回这四个数给主程序。编写主程序调用此函数完成统计功能。
相关知识
参考《C程序设计基础题解与实训指南》。
编程要求
根据提示,在右侧编辑器的Begin-End区域内补充代码。
测试说明
输入:一行数据,是数量不定(至少 1 个)的非负整数,以空格分隔,表示班级同学的成绩。
输出:共输出 4 行数据:第一行为全班成绩的总数量;第二行为 90 分及以上成绩的个数;第三行为 60 分及以上成绩的个数;第四行为全班成绩的平均分(保留 2 位小数)。
例如,测试集 1 的输入是: 10 20 30 60 90 100 测试集 1 的运行结果为: 6 2 3 51.67
按题意这样写,供参考:
#include <stdio.h>
void data_stat(int* p_num, int* p_90, int* p_60, float* avg);
int main()
{
int n = 0, a = 0, b = 0;
float p = 0;
data_stat(&n, &a, &b, &p);
printf("%d %d %d %.2f\n", n, a, b, p);
return 0;
}
void data_stat(int* p_num, int* p_90, int* p_60, float* avg)
{
/*******************Begin******************/
int num;
*p_num = 0; *p_90 = 0; *p_60 = 0; *avg = 0;
while (1) {
scanf("%d", &num);
(*p_num)++;
(*avg) += num;
if (num >= 90) (*p_90)++;
if (num >= 60) (*p_60)++;
if ((getchar()) == '\n') break;
}
if(*p_num)
*avg /= *p_num;
/*******************End*******************/
}
看了半天终于看出来了,你那个scanf里是&d,应该是%d。如解决,请采纳,谢谢!