方大侠 发表于 2019-3-26 20:34:54

Segmentation fault 这是什么错误??

这个求数组里最大、最小值的程序为什么会报这个错???

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

查了半天好像没问题呀

include<stdio.h>
#include<math.h>
#include<string.h>

int main(){
      float PM={
      {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>max){
                              max = PM;
                        }
                        if(PM != 0 && PM<min){
                              min = PM;
                        }
                }
      }                                             //求PM中的最大,最小值
      printf("最大值%f,最小值%f",max,min);

return 0;
}

Croper 发表于 2019-3-26 20:34:55

for(j=0;i<12;j++)
改成for(j=0;j<12;j++)

方大侠 发表于 2019-3-26 20:52:54

Croper 发表于 2019-3-26 20:38
改成

我哭了,原来真的数组越界了。。。
页: [1]
查看完整版本: Segmentation fault 这是什么错误??