#include
int main()
{
int i,j,m,n;
//char a[m][n];
printf("请输入行和列:\n");
scanf("%d,%d",&i,&j);
printf("\n");
char a[i][j];
for(m=0;m<i;m++)
{
if(m==0||m==i-1)
for(n=0;n<j;n++)
a[m][n]='*';
else
for(n=0;n<j;n++)
{
if(n==0||n==j-1)
{
a[m][0]='*';
a[m][j-1]='*';
}
else a[m][n]=' ';
}
for(m=0;m<i;m++)
{
for(n=0;n<j;n++)
printf("%c",a[m][n]);
printf("\n");
}
}
return 0;
}
数组大小必须是常量,所谓常量,就是编译器能从你代码中直接确定大小。
和放在输入前输入后没关系。你的代码还是要运行的时候才能知道大小。
那么只能动态分配,用new。
具体做法参考昨天你的那个问题中的回答。
你的数组大小不能是变量,比如可以char[100][100],可是不能char[i][j],如果想要动态分配内存的大小,要用到c++里的new关键字,实现堆分配。
数组的大小要用常量,你可以先写一个较大的值,在运行!
数组的下标不能使用变量
如楼上所言,数组大小必须是常量,这样编译器在编译的时候才能确定分配给数组内存空间的大小。如果数组大小你想要用户来确定,要么把数组大小定义的稍大一些,提前预留足够的空间让用户可以存下他要输入的数据;要么可以用C语言的malloc( )函数动态分配内存~