+__+~程序有问题,(菜鸟求助)快来帮我看看~+__+

来源:百度知道 编辑:UC知道 时间:2024/07/06 22:04:50
书上说要求按螺旋型打印一串字符(n*n):
如4*4:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
我写的程序如下:
#include<stdio.h>
#include<math.h>
#define n 4
main()
{
int i,j,s,p,k,a[n][n];
a[n][n]={0};
i=0;
j=0;
s=1;
k=1;
a[i][j]=k;

for(p=2;p<2n;p++)
{
switch (s)
{
case 1:
while(a[i][j+1]==0||j<n)a[i][j++]=k++;
s=2;
break;
case 2:
while(a[i+1][j]==0||i<n)a[i++][j]=k++;
s=3;
break;
case 3:
while(a[i][j-1]==0||j>-1)a[i][j--]=k++;
s=4;
break;
case 4:
while(a[i-1][j]==0)a[i--][j]=k++;
s=1;
break;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)printf("%d",a[i][j]);
if(j==n-1)printf("\n");
}

}
但vc却报错,他的我看不懂说:

“Compiling...
Cp1.cpp
D:\temp\Cp1.cpp(7) : error C2059: syntax error : '{'

编译的9个错误是由于两个语法错误导致的,我帮你改好了,算法问题自己看一下吧:
#include<stdio.h>
#include<math.h>
#define n 4
main()
{
int i,j,s,p,k,a[n][n]={0};// 问题1.对于数组a的初始化需要在声明的时候做
//a[n][n]={0}; //在这里做的时候,就变成了对于数组a的第n行n列的成员的赋值了,而赋值时不能带{},所以报错
i=0;
j=0;
s=1;
k=1;
a[i][j]=k;

for(p=2;p<2*n;p++) //问题2.2n是数学写法,在C/C++中要写为2*n
{
switch (s)
{
case 1:
while(a[i][j+1]==0||j<n)a[i][j++]=k++;
s=2;
break;
case 2:
while(a[i+1][j]==0||i<n)a[i++][j]=k++;
s=3;
break;
case 3:
while(a[i][j-1]==0||j>-1)a[i][j--]=k++;
s=4;
break;
case 4:
while(a[i-1][j]==0)a[i--][j]=k++;
s=1;
break;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)printf("%d",a[i][j]);
if(j==n-1)printf("\n");
}

}

#include<stdio.h>
#include<math.h>
#defi