Code Bye

新人求助~谢谢大家

写了一个让用户输入数b,然后显示b阶单位矩阵的东西
但是当输入720或以上的数时程序就停止工作
这是为什么呢?

#include"stdio.h"
int main(void)
{
	int b;
	scanf("%d",&b);
	int a[b][b];
	for(int d=0;d<b;d++)
	{
		for(int c=0;c<b;c++)
		{
			if(c==d)
			{
				a[d][c]=1;
			}
			else
			{
				a[d][c]=0;
			}
			printf("%d",a[d][c]);
			if(c+1==b)
			{
				printf("\n");
			}
		}
	}
}
额,其实不需要使用数组吧,说道数组,lz的程序可以运行?
可以运行
刚学到数组,来实践下
话说那个程序为什么输入720或以上的数字会出错呢?
7分
额, 如果真的能运行的话,就是栈溢出。
参见这个帖子:http://bbs.csdn.net/topics/391025508
其实你完全可以把数组删了的。。。
7分
数组分配在栈上,而栈的大小是有限的
只是打印出n阶单位矩阵,可以存储矩阵元素:
int main(void)
{
	int i, j, b;
	do
	{
		scanf("%d", &b); fflush(stdin);
	} while (b <= 0);
	for (i = 0; i < b; i++)
	{
		for (j = 0; j < b; j++)
		{
			if (i == j) printf("%-2d", 1);
			else printf("%-2d", 0);
		}
		printf("\n");
	}
	return 0;
}
更正:可以不用存储矩阵元素
谢谢大家!我刚初学,溢出什么的也半懂不懂的

还有刚发现一个问题
为什么C-Free运行和Dev-C++都不会出错,但VC++6.0运行就出错了呢?@弓长羊羽  @iamlbk 

6分
VC不支持VLA
不要在C++中使用VLA(尽管一些C++编译器支持VLA,但C++标准是不支持的)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明新人求助~谢谢大家