| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1442 人关注过本帖
标题:程序执行到一半就出错了,而且输出的那一部分又不对
只看楼主 加入收藏
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
结帖率:100%
收藏
 问题点数:0 回复次数:7 
程序执行到一半就出错了,而且输出的那一部分又不对
程序代码:
#include<stdio.h>
#define NUMBER1 3
#define NUMBER2 5
void average1(double[][NUMBER2]);//每个数集的平均值 
double average2(double[][NUMBER2]);//所有数值的平均值 
double max(double[][NUMBER2]); //最大值
void enter(double[][NUMBER2]);//输入 
void output(double[][NUMBER2]); //输出 

int main(void)
{
    double a,b,c,n; 
    double array[NUMBER1][NUMBER2]={0};
    printf("请输入15个数值");
    enter(array);
    output(array);
    average1(array);
    printf("%f,%f,%f的平均值:%f\n",array[0][0],array[0][1],array[0][2],a);
    printf("%f,%f,%f的平均值:%f\n",array[1][0],array[1][1],array[1][2],b);
    printf("%f,%f,%f的平均值:%f\n",array[2][0],array[2][1],array[2][2],c);
    average2(array);
    printf("所有数值的平均值:%f",average2(array));
    max(array);
    printf("最大值为%f",max(array));
    
    return 0;
}


void enter(double array[][NUMBER2])
{
    int i,n;
    for(i=0;i<NUMBER1;i++)
    {
        for(n=0;n<NUMBER2;n++)
        {
            scanf("%lf",&array[i][n]);
        }
    }
    
    
}


void output(double array[][NUMBER2])
{
    int i,n;
    for(i=0;i<NUMBER1;i++)
    {
        for(n=0;n<NUMBER2;n++)
        {
            printf("array[%d][%d]=%f\t",i,n,array[i][n]);
        }
    }
    
}


void average1(double array[][NUMBER2])
{
    double a=0,b=0,c=0;
    a=(array[0][0]+array[0][1]+array[0][2]+array[0][3]+array[0][4])/3;
    b=(array[1][0]+array[1][1]+array[1][2]+array[1][3]+array[1][4])/3;
    c=(array[2][0]+array[2][1]+array[2][2]+array[2][3]+array[2][4])/3;
    
    
}


double average2(double array[][NUMBER2])
{
    int d=0,e=0,f=0,h=0;
    d=array[0][0]+array[0][1]+array[0][2]+array[0][3]+array[0][4];
    e=array[1][0]+array[1][1]+array[1][2]+array[1][3]+array[1][4];
    f=array[2][0]+array[2][1]+array[2][2]+array[2][3]+array[2][4];
    h=(d+e+f)/5;
    
    return h;
}


double max(double array[][NUMBER2])
{
    int i,n,max;
    for(i=0,max=array[0][0];i<NUMBER1;i++)
    {
        for(n=0;i<NUMBER2;n++)
        {
            if(max<array[i][n])
            max=array[i][n];
        }
    }
    
    return max;
}

我输入1,2,3,4,5,6,7,8,9,10,11,12,13,14,15。结果全显示为零,而且还出错。是不是enter函数出问题了?
搜索更多相关主题的帖子: void double max array printf 
2017-12-09 16:54
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
enter没有错,错的是max,内层for循环的条件i<NUMBER2是永远为真的,i最大只能递增到2,但NUMBER2是3. 这样n会一直递增下去,直到下标越界。
2017-12-09 19:24
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
读书,理解函数调用,参数传递,变量作用域等概念。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2017-12-09 19:32
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 2楼 yangfrancis
谢谢!
2017-12-09 20:35
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 3楼 forever74
能不能具体点,毕竟这知识点那么多,谢谢。
2017-12-09 20:36
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
收藏
得分:0 
回复 4楼 kuaisha
程序代码:
    printf("%f,%f,%f,%f,%f的平均值:%f\n",array[0][0],array[0][1],array[0][2],array[0][3],array[0][4],a);
    printf("%f,%f,%f,%f,%f的平均值:%f\n",array[1][0],array[1][1],array[1][2],array[1][3],array[1][4],b);
    printf("%f,%f,%f,%f,%f的平均值:%f\n",array[2][0],array[2][1],array[2][2],array[2][3],array[2][4],c);

有什么办法让average1函数怎么返回a,b,c三个值啊?要不然的话上面这三个输出没办法用abc三个变量。
2017-12-09 20:51
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
回复 6楼 kuaisha

1、使用全局变量(不推荐)
2、在主函数建立这几个变量或者把它们塞进数组,然后把它们的地址作为参数传递给average1函数
3、建立一个结构体类型,在average1里面把这几个变量塞进结构体作为成员,然后把整个结构体作为返回值返回给调用者
还有其他方式可以慢慢了解。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2017-12-09 22:42
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
收藏
得分:0 
以下是引用kuaisha在2017-12-9 20:51:49的发言:

 
    printf("%f,%f,%f,%f,%f的平均值:%f\n",array[0][0],array[0][1],array[0][2],array[0][3],array[0][4],a);
    printf("%f,%f,%f,%f,%f的平均值:%f\n",array[1][0],array[1][1],array[1][2],array[1][3],array[1][4],b);
    printf("%f,%f,%f,%f,%f的平均值:%f\n",array[2][0],array[2][1],array[2][2],array[2][3],array[2][4],c);
 
有什么办法让average1函数怎么返回a,b,c三个值啊?要不然的话上面这三个输出没办法用abc三个变量。
用指针返回
2017-12-11 09:40
快速回复:程序执行到一半就出错了,而且输出的那一部分又不对
数据加载中...
 
   



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

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