本帖最后由 蔚蓝柳叶 于 2014-9-21 10:52 编辑
#include <stdio.h>
#include <stdlib.h>
void main()
{
int n,i,j,flag;
int a[100][100]={0};
int **b;
int num=0;
printf("\nplease enter a number: ");
while(1)
{
flag=scanf("%d",&n);
fflush(stdin); //清空输入缓存
if(flag!=1||n==0) printf("\n输入有误,请输入大于0数字: ");
else break;
}
//对b数组进行动态分配内存。
b = (int **)malloc(sizeof(int *)*3*n);//分配指针数组
for(i=0; i<n; i++)
{
b[ i ] = (int *)malloc(sizeof(int)*3*n);//分配每个指针所指向的数组
}
if(*b==NULL)
{
printf("memory fail");
exit(-1);
}
//构造三角阵数形
for(i=n-1;i<2*n-1;i++) //问题好像就在这个for循环
{
for(j=0;j<2*n-1-i;j++)
{
num++;
b[ i ] [j]=num;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5d",b [ i ] [j]);
printf("\n");
}
}
编译连接都没有问题,运行的时候就出错,说内存不能为written。
求各位c大神解释下,程序哪里出错了,该怎么改。
|