| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6304 人关注过本帖
标题:指针,有一个班4个学生,5门课程
只看楼主 加入收藏
jakenmj00123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2017-4-5
结帖率:0
收藏
 问题点数:0 回复次数:1 
指针,有一个班4个学生,5门课程
有一个班4个学生,5门课程。①求第1门课程的平均分;②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。

学生的平均值我用的是指向返回值的指针(float *std_average(float *p)),可是运行以后值传不出去,调试没问题,这是哪里错了?求大神解答,万分感谢。

图片附件: 游客没有浏览图片的权限,请 登录注册


程序代码:
#include<stdio.h>
#include<math.h>

int main()
{
    void sub_average(float *p);
    //float *std_average(float *p);
    void std_fail(float (*p)[5]);
    void std_good(float *p);
    
    float a[4][5]={{80,98,98,92,96},{57,76,56,83,82},{72,77,76,87,83},{92,98,97,87,88}};
    
    
    sub_average(a);
    printf("\n");
    //std_average(a);
    //printf("\n");
    std_fail(a);
    printf("\n");
    std_good(a);
    
    return 0;    
}

/*********子函数*********/
float *std_average(float *p)
{
    int i,j;
    float sum,ave[5],*pt;
    for(i=0;i<4;i++)
    {
        sum=0;
        for(j=0;j<5;j++)
        {
            sum=sum+*(p+5*i+j);
        }
        ave[i]=sum/5;
    }
    pt=ave;
    return pt;
}

void sub_average(float *p)
{
    int i,j;
    float sum,ave[5];
    for(j=0;j<5;j++)
    {
        sum=0;
        for(i=0;i<4;i++)
        {
            sum=sum+*(p+5*i+j);
        }
        ave[j]=sum/4;
    }
    for(i=0;i<5;i++)
    {    
        printf("No.%d:",i+1);
        printf("%4.1f\n",ave[i]);
    }
}

void std_fail(float (*p)[5])
{
    int i,j,n=0;
    float *ave;
    
    ave=std_average(p);
    
    for(i=0;i<4;i++)
    {
        for(j=0;j<5;j++)
        {
            if(*(*(p+i)+j)<60)
            {
                n++;
            }
        }

        if(n>=2)
        {
            printf("No.%d student failed,his score is:\n",i+1);
            
            ///sum=0.0;
            for(j=0;j<5;j++)
            {
                printf("%4.1f  ",*(*(p+i)+j));
                //sum=sum+*(*(p+i)+j);
            }
            printf("\n");
            //ave=sum/5;
            printf("No.%d average=%4.1f\n",i+1,*(ave+i));  //值传不进去;
            n=0;
        }
    }    
}



#if(1)
void std_good(float *p)
{
    int i,j,num;
    float *ave;
    ave=std_average(p);
    for(i=0;i<4;i++)
    {
        num=0;
        for(j=0;j<5;j++)
        {
            if(*(p+5*i+j)>=85)
            {
                num++;
            }
        }
        if(num==5 || *(ave+i)>=90)
        {
            printf("N0.%d student is good,his average score is: %4.1f\n",i+1,*(ave+i));  //值传不进去;
        }
    }
}
#endif
搜索更多相关主题的帖子: 平均值 color 课程 
2017-04-19 16:28
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
函数体里面声明的临时指针变量无法返回出去,把它声明成全局的试试。
2017-04-19 17:36
快速回复:指针,有一个班4个学生,5门课程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045945 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved