| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 598 人关注过本帖
标题:看了答案,发现做的好粗糙
只看楼主 加入收藏
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
结帖率:100%
收藏
 问题点数:0 回复次数:3 
看了答案,发现做的好粗糙
程序代码:
#include<stdio.h>
void average(float(*p)[6])
{
    int i, j;
    float sum = 0, aver;
    for (j = 1; j < 6; j++)
    {
        for (i = 0; i < 4; i++)
            sum = sum + *(*(p + i) + j);
        aver = sum / 4; break;
    }
    printf("第一门课的平均分是\naver=%5.2f\n", aver);
}

void search(float(*p)[6])
{
    int i, j, k;
    float sum, aver;
    for (i = 0; i < 4; i++)
    {
        k = 0;
        sum = 0;
        aver = 0;
        for (j = 1; j < 6; j++)
            if (*(*(p + i) + j) < 60.0)
                k++;
        if (k >= 2)
        {
            printf("两门以上不及格的学生的学号及全部成绩是:\n");
            for (j = 0; j < 6; j++)
                printf("%11.2f", *(*(p + i) + j));
            printf("\n");
            for (j = 1; j < 6; j++)
                sum = sum + *(*(p + i) + j);
            aver = sum / 5;
            printf("该生的平均分是\naver=%5.2f\n", aver);
        }
    }
}

int main()
{
    void average(float(*p)[6]);
    void search(float(*p)[6]);
    float a[4][6] = { {101,34,56,88,99,89},{102,27,88,99,67,78},{103,99,90,87,86,89},{104,78,89,99,56,77} };
    average(a);
    search(a);
    return 0;
}
2017-01-27 11:26
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
收藏
得分:0 
做的好烂,不过功能都实现了
程序代码:
#include<stdio.h>
void average(float(*p)[6])
{
    int i, j;
    float sum = 0, aver;
    for (j = 1; j < 6; j++)
    {
        for (i = 0; i < 4; i++)
            sum = sum + *(*(p + i) + j);
        aver = sum / 4; break;
    }
    printf("第一门课的平均分是\naver=%5.2f\n", aver);
}

void search(float(*p)[6])
{
    int i, j, k;
    float sum, aver;
    for (i = 0; i < 4; i++)
    {
        k = 0;
        sum = 0;
        aver = 0;
        for (j = 1; j < 6; j++)
            if (*(*(p + i) + j) < 60.0)
                k++;
        if (k >= 2)
        {
            printf("两门以上不及格的学生的学号及全部成绩是:\n");
            for (j = 0; j < 6; j++)
                printf("%11.2f", *(*(p + i) + j));
            printf("\n");
            for (j = 1; j < 6; j++)
                sum = sum + *(*(p + i) + j);
            aver = sum / 5;
            printf("该生的平均分是\naver=%5.2f\n", aver);
        }
    }
}

void find(float(*p)[6])
{
    int i, j;
    float sum, aver, min = 100;
    for (i = 0; i < 4; i++)
    {
        sum = 0;
        aver = 0;
        for (j = 1; j < 6; j++)
        {
            sum = sum + *(*(p + i) + j);
            if (min > *(*(p + i) + j))
                min = *(*(p + i) + j);
        }
        aver = sum / 5;
        if (aver > 90 || min > 85)
        {
            printf("平均成绩在90分以上或全部成绩在85分以上的学生及成绩是\n");
            for (j = 0; j < 6; j++)
                printf("%11.2f", *(*(p + i) + j));
            printf("\n");
        }
    }
}

int main()
{
    void average(float(*p)[6]);
    void search(float(*p)[6]);
    void find(float(*p)[6]);
    float a[4][6] = { {101,34,56,88,99,89},{102,27,88,99,67,78},{103,99,90,87,86,89},{104,78,89,99,56,77} };
    average(a);
    search(a);
    find(a);
    return 0;
}

2017-01-27 12:10
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
加油~慢慢优化代码~优化代码的能力是编程能力体现之一~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-27 12:34
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

#include<stdio.h>

void _list(float *p, int m, int n)
{
    int i, j;
    printf("分数表\t 学号\t成绩1\t成绩2\t成绩3\t成绩4\t成绩5\n");
    for (i=0; i<m; i++)
    {
        printf("\t%5.0f", *(p+i*n));
        for (j=1; j<n; j++)
            printf("\t%5.2f", *(p+i*n+j));
         printf("\n");   
    }
}

float _av(float *p, int m, int n, int k)
{
    int i;
    float sum=0;
    for (i=0; i<m; i++)
        sum += *(p+i*n+k);
    return sum/m;
}

void _avs(float *p, int m, int n)
{
    int i;
    printf("\n平均分\t");
    for (i=1; i<n; i++)
        printf("\t%5.2f", _av(p, m, n, i));
    printf("\n");
}

void search(float *p, int m, int n)
{
    int i, j, k;
    float sum;
    printf("\n两门以上不及格的学生的学号及全部成绩是:\n");
    for (i=0; i<4; i++)
    {
        k = 0;
        sum = 0;
        for (j=1; j<6; j++)
            if (*(p+i*n+j) < 60.0)
                k++;
        if (k > 1)
        {
            printf("\t%5.0f", *(p+i*n));
            for (j=1; j<6; j++)
            {
                sum += *(p+i*n+j);
                printf("\t%5.2f", *(p+i*n+j));
            }
            printf("\t平均分aver=%5.2f\n", sum/(n-1));
        }
    }
}

main()
{
    float a[4][6] = { {101,34,56,88,99,89},{102,27,88,99,67,78},{103,99,90,87,86,89},{104,78,89,99,56,77} };
    _list((float *)a, 4, 6);   
    _avs((float *)a, 4, 6);   
    search((float *)a, 4, 6);
}
2017-01-27 15:03
快速回复:看了答案,发现做的好粗糙
数据加载中...
 
   



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

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