鱼C论坛

 找回密码
 立即注册
查看: 1823|回复: 2

[已解决]Segmentation fault 这是什么错误??

[复制链接]
发表于 2019-3-26 20:34:54 | 显示全部楼层 |阅读模式
5鱼币
这个求数组里最大、最小值的程序为什么会报这个错???

百度可能的原因:
定义了指针以后记得初始化,在使用的时候记得判断是否为NULL;       --没指针
在使用数组的时候是否被初始化,数组下标是否越界,数组元素是否存在等;   --已经初始化了,都是12个,都存在
在变量处理的时候变量的格式控制是否合理等;     

查了半天好像没问题呀
include<stdio.h>
#include<math.h>
#include<string.h>

int main(){
        float PM[3][12]={
        {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.3, 35.5, 58.7, 49.6, 55.5},
        {59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38.5, 41.5, 44.7, 38.1, 41.5},
        {34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34.3, 0.0, 0.0, 0.0, 0.0}
        };

        int i,j;
        float max=0, min=31.3;

        for(i=0;i<3;i++){
                for(j=0;i<12;j++){
                        if(PM[i][j]>max){
                                max = PM[i][j];
                        }
                        if(PM[i][j] != 0 && PM[i][j]<min){
                                min = PM[i][j];
                        }
                }
        }                                               //求PM中的最大,最小值
        printf("最大值%f,最小值%f",max,min);

return 0;
}
最佳答案
2019-3-26 20:34:55
for(j=0;i<12;j++)
改成
for(j=0;j<12;j++)

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-26 20:34:55 | 显示全部楼层    本楼为最佳答案   
for(j=0;i<12;j++)
改成
for(j=0;j<12;j++)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-3-26 20:52:54 | 显示全部楼层

我哭了,原来真的数组越界了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 12:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表