有4个学生,每个学生有3门课程,每门课程的学分不一样。请计算每一个学生的加权平均成绩。
#include
#define N 3 //N门课程
//float aver(int x[],int y[])为什么c语言中此处不声明也能够编译通过?
int main()
{
int scores[4][N]={{82,87,99},{96,98,97},{89,90,91}};
int credit[N]={3,4,2},i;
float aver(int *,int *),p;
for(i=0;i<4;i++)
{
p=aver(scores[i],credit);
printf("第%d个学生的加权平均成绩为:%.2f\n",i+1,p);
}
return 0;
}
float aver(int x[],int y[])
{
int n,sum1=0,sum2=0;
for(n=0;nreturn ((float)sum1/sum2);
}
这里已经声明了,
main第三行 float aver(int *,int *)
这不是写了么
//例题10-24 有若干个学生的成绩(每个学生有4门课),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数实现。
#include<stdio.h>
int main()
{
float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
float *search(float (*pointer)[4],int n); //函数声明
float *p;
int i,m;
printf("ente the number of student:");
scanf("%d",&m); //m是要查找的学生序号
printf("The scores of No.%d are:\n",m);
p=search(score,m);
for(i=0;i<4;i++)
printf("%5.2f\t",*(p+i));// *(p+i):该学生第i门课程的成绩
printf("\n");
return 0;
}
float *search(float (*pointer)[4],int n)
//pointer是指向包含4个元素的一维数组的指针变量
//pointer+1 指向socre数组序号为1的行
// *(pointer+1) 指向1行0列元素。加上*后,指针 行控制-->列控制
{
float *pt;
pt=*(pointer+n);
return pt;
}
输入:1
结果如图: