程序在代码块上运行并在停止后运行

时间:2014-08-19 11:14:56

标签: c

#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个等级,然后打印平均值并计算多少等级多于平均值

3 个答案:

答案 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 - 您的代码存在一些问题,如其他答案中所述。修复它们,然后尝试这个