标题:一道题目
只看楼主
sonic3003
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-3-17
 问题点数:0 回复次数:19 
一道题目
•Given an integer n (1 £ n £ 9), write a program to print the numbers from 1 to n2 in the following manner (suppose n = 5):
13 14 15 16 01
12 23 24 17 02
11 22 25 18 03
10 21 20 19 04
09 08 07 06 05
•Separate the process into the top-half and the bottom-half.


我刚刚开始学习c 这是老师布置得一道题目 哪位高手教教我
搜索更多相关主题的帖子: DIV 题目 pound 
2006-03-17 20:42
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分:0 

[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编辑过]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-17 23:38
sonic3003
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-3-17
得分:0 

谢谢了~~~


2006-03-18 08:40
haishanglang
Rank: 1
等 级:新手上路
帖 子:378
专家分:0
注 册:2006-3-2
得分:0 
运行后怎么不出结果哦

2006-03-18 08:44
梦想中国
Rank: 2
等 级:新手上路
威 望:5
帖 子:539
专家分:0
注 册:2006-2-26
得分:0 

此问题需要等


2006-03-18 09:33
梦想中国
Rank: 2
等 级:新手上路
威 望:5
帖 子:539
专家分:0
注 册:2006-2-26
得分:0 
此问题中的n有没有限制,随便输入,还是只小于在1--9之间。

2006-03-18 09:34
等待
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2005-12-1
得分:0 
有点问题

2006-03-18 09:36
梦想中国
Rank: 2
等 级:新手上路
威 望:5
帖 子:539
专家分:0
注 册:2006-2-26
得分:0 
楼主呢?你的n到底有没有限制,最大多少。
晕,这年头帮人搬砖还得等。

2006-03-18 11:14
盖茨他爹
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:5255
专家分:0
注 册:2005-5-3
得分:0 
晕,你试试不就知道了吗
2006-03-18 11:19
梦想中国
Rank: 2
等 级:新手上路
威 望:5
帖 子:539
专家分:0
注 册:2006-2-26
得分:0 

以下程序输入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++);
}



2006-03-18 13:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-51105-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.761300 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved