#include <stdio.h>
#include <stdlib.h>
#define N 10
float func ( int *arr, int n, int *count )
{
int *p,i;
float sum=0;
p=arr;
for (i=0;i<n;i++)
{
sum += *p;
p++;
}
sum /= n;
count=0;
p=arr;
for(i=0;i<n;i++) //לולאה שעוברת על כל המערך ומוסיפה כל תוכן של איברבמערך שיותר גדול מהממוצע
{
*count+= (*p>sum);
p++;
}
return sum;
}
void main()
{
int i, count=0, arr[N]={0}, n=N;
for(i=0;i<N;i++)
{
printf("Please enter your grade\n");
scanf("%d",&arr[i]);
}
for(i=0;i<N;i++)
printf("%d ",arr[i]);
printf("The average in class is: %f and the number of students that had the best grades(MORE) are: %d \n",func(arr,n,count),count);
}
我需要一些关于这个程序的帮助。 代码在上面, 该程序需要从用户获得10个等级,然后打印平均值并计算多少等级多于平均值
答案 0 :(得分:1)
您的main
函数声明不正确。您应该使用所有警告和调试信息进行编译(例如gcc -Wall -g
如果使用GCC,这可能是Codeblocks IDE使用的......)那么您应该使用调试器(例如gdb
)。你应该测试scanf(3)
顺便说一句,
count = 0; // better written as count = NULL;
错误:正在清除指针。你可能想要
*count = 0;
此外,您的上一个printf
正在考虑某种评估顺序(因为您希望在打印func
之前调用count
更改count
), float avg = func(arr,n,&count);
// from http://stackoverflow.com/a/25382154/841108
printf("The average in class is: %f and the number"
" of students that had the best grades are: %d \n",
avg,count);
也是如此3}}。你需要:
{{1}}
请展示或告诉你的老师你在SO上得到了帮助(无论如何他会发现)
顺便说一句,我不明白学生为什么要在网上做作业。他们通过这样做不会学到任何东西,他们的老师无论如何都会注意到。答案 1 :(得分:0)
您正在计算func
中的总和和计数,因此您不能一次返回两个值。因此,请计算main()
中大于平均值的标记。
试试这个 -
#include <stdio.h>
#include <stdlib.h>
#define N 10
float func ( int *arr, int n)
{
int *p,i;
float sum=0;
p=arr;
for (i=0;i<n;i++)
{
sum += *p;
p++;
}
sum /= n;
printf("%lf \n",sum);
return sum;
}
int countfun(int *arr, float sum)
{
int i,count = 0;
for(i=0;i<N;i++)
{
if(arr[i] > sum)
count++;
}
return count;
}
void main()
{
int i, count=0, arr[N]={0}, n=N;
float sum=0;
for(i=0;i<N;i++)
{
printf("Please enter your grade\n");
scanf("%d",&arr[i]);
}
for(i=0;i<N;i++)
printf("%d ",arr[i]);
sum = func(arr,n);
count = countfun(arr,sum);
printf("The average in class is: %f and the number of students that had the best grades(MORE) are: %d \n",sum,count);
}
答案 2 :(得分:0)
您可以在最后getchar()
之后使用printf()
等待角色。
您认为执行窗口关闭而不打印。那是错的。它会打印然后退出,甚至可以看到输出。
P:S - 您的代码存在一些问题,如其他答案中所述。修复它们,然后尝试这个