CCF201503-1 图像旋转 C语言版

CCF201503-1 图像旋转 C语言版
错误代码:

#include<stdio.h>
int main()
{
int n,m,i,j;
int x[1010][1010];
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&x[i][j]);
}
}
for(j=2;j>=0;j–)
{
for(i=0;i<n;i++)
{
printf("%d “,x[i][j]);
}
printf(”\n");
}
return 0;
}

错误原因:
一,for(j=2;j>=0;j–) 改为for(j=m-1;j>=0;j–) 魔怔认为是2了。
二,大数组定义在main函数中不能执行,将其定义为全局变量就可以执行了。

解释:
数组定义在函数中时,占用的内存来自栈空间,栈空间是在进程创建时初始化的,有固定的大小,一般为几十KB,所以太大的数组会耗光栈空间。

而全局变量占用的堆空间,堆空间中的内存是按需分配,自由增长的,可以非常大,32位的系统中可以大到4GB。
全局变量是在编译的时候编到数据段的,可以比较大。

补充:
bool型函数指的是返回值为bool类型的函数,其调用方式和int 型函数没有太大的区别。

bool型变量的值只有 真 (true) 和假 (false)。bool可用于定义函数类型为布尔型,函数里可以有 return true; return false 之类的语句。

bool为布尔型用作逻辑判断。bool取值false和true,0为false,非0为true。

正确代码:

#include<stdio.h>
int x[1010][1010];
int main()
{
int n,m,i,j;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&x[i][j]);
}
}
for(j=m-1;j>=0;j–)
{
for(i=0;i<n;i++)
{
printf("%d “,x[i][j]);
}
printf(”\n");
}
return 0;
}