我刚刚开始学习c 这是老师布置得一道题目 哪位高手教教我
我刚刚开始学习c 这是老师布置得一道题目 哪位高手教教我
[CODE]
#include <stdio.h>
#include <conio.h>
#define N 11 /* 只要比预计输入的阶数大2就可*/
void main()
{
int i=0,j,k=1,n;
int a[N][N];
scanf("%d",&n);
j=n-1;
while(1)
{
while(a[i][j]==0&&i<n) /* 未赋值的最后一竖行*/
a[i++][j]=k++;
i--;
j--;
while(a[i][j]==0&&j>=0) /* 未赋值的最后一横行*/
a[i][j--]=k++;
j++;
i--;
while(a[i][j]==0&&i>=0) /* 未赋值的第一竖行*/
a[i--][j]=k++;
i++;
j++;
while(a[i][j]==0&&j<n) /* 未赋值的第一横行*/
a[i][j++]=k++;
i++;
j--;
if(k==n*n+1) /* 完毕条件*/
break;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf(" %02d",a[i][j]); /* 输出占两位,不足的用0 补 */
printf("\n");
}
getch();
}
[/CODE]
[此贴子已经被作者于2006-3-18 1:05:17编辑过]
以下程序输入10以内都可以:
#include<stdio.h>
#include<conio.h>
int num,horiz=30,vertical=5;
void Output1(void);
void Output2(void);
void Output3(void);
void Output4(void);
int main(void)
{
int n,i,j;
clrscr();
printf("Please input n: ");
scanf("%d",&n);
num=1;
while(num<=n*n)
{
if(num<=n)
Output1();
else if(num>n && num<=2*n-1)
Output2();
else if(num>2*n-1 && num<=3*n-2)
Output3();
else if(num>3*n-2 && num<=4*n-4)
Output4();
else if(num>4*n-4 && num<=5*n-6)
Output1();
else if(num>5*n-6 && num<=6*n-9)
Output2();
else if(num>6*n-9 && num<=7*n-12)
Output3();
else if(num>7*n-12 && num<=8*n-16)
Output4();
else if(num>8*n-16 && num<=9*n-20)
Output1();
else if(num>9*n-20 && num<=10*n-25)
Output2();
else if(num>10*n-25 && num<=11*n-30)
Output3();
else if(num>11*n-30 && num<=12*n-36)
Output4();
else if(num>12*n-36 && num<=13*n-42)
Output1();
else if(num>13*n-42 && num<=14*n-49)
Output2();
else if(num>14*n-49 && num<=15*n-56)
Output3();
else if(num>15*n-56 && num<=16*n-64)
Output4();
else if(num>16*n-64 && num<=17*n-72)
Output1();
else if(num>17*n-72 && num<=18*n-81)
Output2();
else if(num>18*n-81 && num<=19*n-90)
Output3();
}
getch();
return 0;
}
void Output1(void)
{
gotoxy(horiz,vertical+=2);
printf("%02d",num++);
}
void Output2(void)
{
gotoxy(horiz-=3,vertical);
printf("%02d",num++);
}
void Output3(void)
{
gotoxy(horiz,vertical-=2);
printf("%02d",num++);
}
void Output4(void)
{
gotoxy(horiz+=3,vertical);
printf("%02d",num++);
}