1.一开始数组定义成了a【12】【12】,应该是a【100】【100】。
2.我采用的是第一笔横,第二笔竖,第三笔再横,第四笔在竖。第一笔写错了,写成了for(int a=j;a<n-j;a),应该是for(inta=j;a<n-j-1;a)
3.当发现错误时,适当的把中间结果打印输出,有利于调试。比如:可以把不可见字符输出成可见字符、遇到复杂的循环时可以循环一次输出一次结果。
#include<iostream>
using namespace std;
int scjg[100][100];
int main()
{
//freopen("xxx.in","r",stdin);
//freopen("yyy.out","w",stdout);
int n=-1;
int sz;
cin >> n;
int hs;
for(int i=1;n!=0;i++)
{
sz=1;
for(int j=0;j<n;j++)
{
hs=n-j-1;
for(int a=j;a<n-j-1;a++)
{
scjg[j][a]=sz;
}
for(int b=j+1;b<n-j;b++)
{
scjg[b][j]=sz;
}
for(int c=j+1;c<=n-j-1;c++)
{
scjg[hs][c]=sz;
}
for(int d=j;d<n-j;d++)
{
scjg[d][hs]=sz;
}
sz++;
}
for(int t=0;t<n;t++)
{
for(int h=0;h<n;h++)
{
cout << scjg[t][h] << " ";
}
cout << endl;
}
cout << endl;
cin >> n;
}
//fclose(stdin);
//fclose(stdout);
return 0;
}