解题思路:
开始时,无从下手。
首先将数组赋值,再输出。赋值是难点,只要找到控制条件(保证不超界且没被赋值),问题就迎刃而解了。
再者要注意while和if的区别。
代码如下:
#include <stdio.h>
#include <string.h>
#define N 100
int main()
{
char str[N][N];
int m,n,j=0,i=0,count=0;
scanf("%d%d",&m,&n);
memset(str,'0',sizeof(str));
str[0][0]='A';
while(count<m*n-1)
{
while(j<n-1&&str[i][j+1]=='0')
{
count++;
str[i][++j]=str[0][0]+count%26;//上
}
while(i<m-1&&str[i+1][j]=='0')
{
count++;
str[++i][j]=str[0][0]+count%26;//右
}
while(j>0&&str[i][j-1]=='0')
{
count++;
str[i][--j]=str[0][0]+count%26;//下
}
while(i>=0&&str[i-1][j]=='0')
{
count++;
str[--i][j]=str[0][0]+count%26;//左
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf(" %c",str[i][j]);
}
printf("\n");
}
return 0;
}