标题:程序Segmentation fault的问题
只看楼主
cyy06180521
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2015-8-21
结帖率:100%
已结贴  问题点数:10 回复次数:14 
程序Segmentation fault的问题
像编写一个求n个数平均数的程序,但是测试的时候出现了Segmentation fault错误,不知道怎么改,求大神纠正,以下是程序,谢谢!!!
程序代码:
#include <stdio.h>
#include <math.h>

int main(void) {
    int n, m, sum;
    int a[n];
    double average;
    
    printf("Enter n: ");
    scanf("%d", &n);
    printf("Enter numbers: "); 
    
    for(m = 0; m <= n; m++){   
        scanf("%d", &a[n]); 
        sum+=a[m];
    }
    
    average = sum / n;
    printf("average = %1.2lf\n", average);
    
    return 0;
}        
搜索更多相关主题的帖子: color 平均数 average 
2015-09-09 15:40
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
得分:2 
#include <stdio.h>
#include <math.h>

int main(void) {
    int n, m, sum = 0;
    int a[n];
    double average;
   
    printf("Enter n: ");
    scanf("%d", &n);
    printf("Enter numbers:\n");
   
    for(m = 0; m < n; m++){
        printf("Enter %d #:",m+1);   
        scanf("%d", &a[m]);
        sum+=a[m];
    }
   
    average = sum / n;
    printf("average = %g\n", average);
   
    return 0;
}
2015-09-09 15:53
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:2 
程序代码:
#include <stdio.h>
#include <math.h>

int main(void) {
    int n, m, sum = 0;
    int a[n];
    double average;
   
    printf("Enter n: ");
    scanf("%d", &n);
    printf("Enter numbers:\n");
   
    for(m = 0; m < n; m++){
        printf("Enter %d #:",m+1);   
        scanf("%d", &a[m]);
        sum+=a[m];
    }
   
    average = 1.0*sum / n;
    printf("average = %g\n", average);
   
    return 0;
}

剑栈风樯各苦辛,别时冰雪到时春
2015-09-09 15:57
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:335
专家分:1125
注 册:2014-4-13
得分:2 
int a[n];想一想数组a在什么时候能分配到内存,也许就能找到问题所在。
for(m = 0; m <= n; m++)  这一句,数组要越界。
2015-09-09 16:06
cyy06180521
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2015-8-21
得分:0 
回复 3楼 林月儿
大神,谢谢,但是还是不行......
2015-09-09 16:35
cyy06180521
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2015-8-21
得分:0 
回复 2楼 hjx1120
谢谢大神,但是还不行,不知道为什么
2015-09-09 16:35
cyy06180521
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2015-8-21
得分:0 
回复 4楼 jklqwe111
就是不懂.....刚学这个,有时候上课跟听天书一样.....
2015-09-09 16:36
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
回复 7楼 cyy06180521
程序代码:
#include <stdio.h>
#include <math.h>

int main(void) {
    int n, m, sum = 0;
    int a[80];
    double average;
   
    printf("Enter n: ");
    scanf("%d", &n);
    printf("Enter numbers:\n");
   
    for(m = 0; m < n; m++){
        printf("Enter %d #:",m+1);   
        scanf("%d", &a[m]);
        sum+=a[m];
    }
   
    average = 1.0*sum / n;
    printf("average = %g\n", average);
   
    return 0;
}

我的错,没编译。。。我是学java的,,,,只是路过

剑栈风樯各苦辛,别时冰雪到时春
2015-09-09 16:47
小王KING
Rank: 2
等 级:论坛游民
威 望:1
帖 子:29
专家分:69
注 册:2015-9-9
得分:2 
C里面不可以定义动态数组
int a[n]   这里的n不可以是变量,只可以是常量
2015-09-09 17:12
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
得分:0 
回复 8楼 林月儿
林师姐的代码提高了精确度
#include <stdio.h>
#include <math.h>

int main(void) {
    int n, m, sum = 0;
    int a[n];
    double average;
   
    printf("Enter n: ");
    scanf("%d", &n);
    printf("Enter numbers:\n");
   
    for(m = 0; m < n; m++){
        printf("Enter %d #:",m+1);   
        scanf("%d", &a[m]);
        sum+=a[m];
    }
   
    average = 1.0*sum / n;
    printf("average = %g\n", average);
   
    return 0;
}
2015-09-09 17:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-457138-1-1.html




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

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