编程如下,运行结果就是不对,请高手们过过目,帮本人看看哪里错了,跪谢!
void main()
{
int a[10][10],i,j,m,n,k=0;
printf(“enter n\n”);
scanf(“%d”,&n);
if (n%2==0) m=n/2;
else m=(n+1)/2;
for(i=0;i<m;i++)
for(j=i;j<n-i;j++) a[i][j]=++k;
for(j=i+1;j<n-i-1;j++) a[j][n-i-1]=++k;
for(j=n-i-2;j>=i;j–) a[n-i-1][j]=++k;
for(j=n-i-2;j>=i+1;j–) a[j][i]=++k;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(“%d “,a[i][j]);
printf(“\n”);}
}
void main()
{
int a[10][10],i,j,m,n,k=0;
printf(“enter n\n”);
scanf(“%d”,&n);
if (n%2==0) m=n/2;
else m=(n+1)/2;
for(i=0;i<m;i++)
for(j=i;j<n-i;j++) a[i][j]=++k;
for(j=i+1;j<n-i-1;j++) a[j][n-i-1]=++k;
for(j=n-i-2;j>=i;j–) a[n-i-1][j]=++k;
for(j=n-i-2;j>=i+1;j–) a[j][i]=++k;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(“%d “,a[i][j]);
printf(“\n”);}
}
解决方案
20
参考
#include <stdio.h> int main(int argc, char* argv[]) { int a, b, c, d, i, n, num = 1, array[20][20]; scanf("%d", &n); /* a, b, c, d分别为上、下、左、右边界,a、b为行号,c、d为列号 */ for (a = 0, b = n - 1, c = 0, d = n - 1; a <= b; a ++, b --, c ++, d --) { for (i = c; i <= d; i ++) array[a][i] = num ++; for (i = a + 1; i < b; i ++) array[i][d] = num ++; for (i = d; i > c; i --) array[b][i] = num ++; for (i = b; i > a; i --) array[i][c] = num ++; } for (i = 0; i < n; i ++) { for (a = 0; a < n; a ++) printf("%5d", array[i][a]); printf("\n"); } return 0; }
10
for(i=0;i<m;i++) for(j=i;j<n-i;j++) a[i][j]=++k; for(j=i+1;j<n-i-1;j++) a[j][n-i-1]=++k; for(j=n-i-2;j>=i;j--) a[n-i-1][j]=++k; for(j=n-i-2;j>=i+1;j--) a[j][i]=++k;
这是题主的代码。本人个人建议for循环和if判断之后加{},不知道这里是复制过来的时候出现了问题还是你原来代码就是这样,计算机识别的时候你不加{},他认为你 for(i=0;i<m;i++)中只有 for(j=i;j<n-i;j++) a[i][j]=++k;
[code=c] for(i=0;i<m;i++) for(j=i;j<n-i;j++) a[i][j]=++k;
和
for(j=i+1;j<n-i-1;j++) a[j][n-i-1]=++k; for(j=n-i-2;j>=i;j--) a[n-i-1][j]=++k; for(j=n-i-2;j>=i+1;j--) a[j][i]=++k;
是两部分
20
void main() { int a[10][10],i,j,m,n,k=0; printf("enter n\n"); scanf("%d",&n); if (n%2==0) m=n/2; else m=(n+1)/2; for(i=0;i<m;i++) { //少个大括号 for(j=i;j<n-i;j++) a[i][j]=++k; for(j=i+1;j<=n-i-1;j++) a[j][n-i-1]=++k;//j<=n-i-1少个等号 for(j=n-i-2;j>=i;j--) a[n-i-1][j]=++k; for(j=n-i-2;j>=i+1;j--) a[j][i]=++k; } for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%d\t",a[i][j]); printf("\n"); } }