永发信息网

这个C语言函数错哪了?

答案:2  悬赏:0  手机版
解决时间 2021-04-11 17:16
  • 提问者网友:谁的错
  • 2021-04-10 22:26

目的:输入学生的学号与成绩 先求出平均值 再输出成绩大于

平均值的学生的学号与成绩

(下面是定义为5个学生的 那能定义为任意个学生的吗?)

#include<stdio.h>
int average(int a[5])
{
int i, ave;
for(i=0,ave=0;i<5;i++)
{
ave=ave+a[i];
}
ave=ave/5;
return(ave);
}
int abc(int a[5],int b[5])
{
int i;
for(i=0;i<5;i++)
{
if(b[i]>average(b[5]))
printf("%d %d",a[i],b[i]);
}
return(i);
}
main()
{
int i, a[5], b[5];
printf("input the student's ID and score:\n");
for(i=0;i<5;i++)
{
scanf("%d %d",&a[i],&b[i]);
}
printf("%d",abc(a,b));
}

最佳答案
  • 五星知识达人网友:不甚了了
  • 2021-04-10 23:29
改用动态内存分配:

#include <stdio.h>
#include <stdlib.h>

int average(int a[], int n)
{
int i, ave;
for(i=0,ave=0;i<n;i++)
{
ave=ave+a[i];
}
ave=ave/n;
return(ave);
}

int abc(int a[],int b[], int n)
{
int i, k = 0;
for(i=0;i<n;i++)
{
if(b[i]>average(b, n)) {
printf("%d %d",a[i],b[i]);
++k;
}
}
return(k);
}

main()
{
int i, *a, *b, n;
printf("plz input how many:");
scanf( "%d", &n );
a = (int* )malloc( sizeof(int) * n );
b = (int* )malloc( sizeof(int) * n );
printf("input the student's ID and score:\n");
for(i=0;i<n;i++)
{
scanf("%d %d",&a[i],&b[i]);
}
printf("\n%d",abc(a, b, n));
free( a );
free( b );
}
全部回答
  • 1楼网友:怙棘
  • 2021-04-11 00:31
if(b[i]>average(b[5])) 这里应该是if(b[i]>average(a[5]))
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯