7-8 求多个学生的课程平均分 (30 分) 假设有M门课程N个学生(此处假设M为3,N为4),要求编程求各门课程的平均分,并查找M门课程均不及格的学生的成绩。用指针来实现。 其中求每门课程的平均分的函数为:void average (float(*p)[N]) 。 查找M门课程均不及格的学生成绩的函数为:void search (float(*p)[N]) 输入格式: 输入3门课程的4个学生的成绩 输出格式: 求出每一门课程的平均成绩,保留1位小数。并输出每门课程不及格的学生和其不及格课程的成绩,保留2位小数。 输入样例: 在这里给出一组输入。例如: 50 60 70 90 40 70 80 80 30 50 60 90 输出样例: 1 course average is 67.5 2 course average is 67.5 3 course average is 57.5 1 course 1 student score is 50.00 2 course 1 student score is 40.00 3 course 1 student score is 30.00
这道题的难点可能就是在要求使用指针,如果不用指针的话,你会写吗。
#include <stdio.h>
#define N 4
#define M 3
void average (float(*p)[N]);
void search (float(*p)[N]);
int main(){
float a[M][N];
int i,j;
for(i=0;i<M;i++){
for(j=0;j<N;j++){
scanf("%f",&a[i][j]);
}
}average(a);
search(a);
}
void average (float(*p)[N]){
int i,j;
float ave=0;
for(i=0;i<M;i++){
for(j=0;j<N;j++){
ave += (*(p+i))[j];
}
printf("%d course average is %.1f\n",i+1,ave/N);
ave=0;
}
}
void search (float(*p)[N]){
float flag[N];
for(int i=0;i<M;i++){
for(int j=0;j<N;j++){
flag[j]+=(*(p+i))[j]<60?1:0;
}
}
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
if(flag[i]==3){
printf("%d course %d student score is %.2f\n",j+1,i+1,(*(p+j))[i]);
}
}
}
}
#include<stdio.h>
#include<stdlib.h>
#define M 2
#define N 4
void average(float (*p)[N])
{
float sum = 0;
for (int i = 0; i < M; i ++)
{
sum = 0;
for (int j = 0; j < N; j ++)
{
sum += p[i][j];
}
printf("%.2f\n", sum / N);
}
}
int main() {
float arr3[M][N] = {
{1.1F, 2.2F, 3.3F, 4.4F},
{1.2F, 2.3F, 3.4F, 4.5F}
};
float (*p)[N] = arr3;
average(p);
}
给你举了一个例子,除了传递的时候是一个指针,但是实际使用的时候,你可以当一个数组来用。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632