C语言的新手问题!

C语言 码拜 9年前 (2015-11-12) 830次浏览
#include <stdio.h>
int main()
{
double array[][5]={0};
int i=0,y=0,z=0,x;
printf(“Loop input please press Enter(Exit please enter q!):”);
while((x=getchar())!=””q””)
{
printf(“array[%d][%d]=”,y,i);
scanf(“%lf”,&array[y][i++]);
if(i==5)
{
y++;
i=0;
}
}
return 0;
}
输入时 输入到[1][1] 就出现这样的问题了,弄了半天都没解决掉,问一下这是哪出问题了,本人把 scanf(“%lf”,&array[y][i++]);里的y
改成数字输入时就没问题,求高手告诉本人下是什么原因导致的 谢谢!
Loop input please press Enter(Exit please enter q!):
array[0][0]=1
array[0][1]=2
array[0][2]=3
array[0][3]=4
array[0][4]=5
array[1][0]=6
array[1][1]=7
array[1075576832][0]=
解决方案:10分
1)double array[][5]={0};相当于 double array[1][5]={0};
要么初始化数据确定数组 大小,要么直接在数组声明部分确定数组大小
不要过于偷懒
2)array[1075576832][0]=8 这个数组没这么大?这是严重的越界。
解决方案:20分
double array[][5]={0};
第一维没有指定,需要使用初始化列表来推断。你的初始化列表只有一个元素,所以会推断为 double[1][5]。
所以从 array[1][0] 开始,就已经访问越界了。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C语言的新手问题!
喜欢 (0)
[1034331897@qq.com]
分享 (0)