作者tenfaces (我爱三筒小叮当~~)
看板Programming
标题[请益] 没有想像中简单的小问题
时间Wed Mar 11 00:39:54 2009
这次某个公营考试的程式题目
列印出如下格式:
3
345
34567
345
3
当初一看到题目 觉得很简单啊 就跳下去写了 後来发现~
唔 要左拼拼 右凑凑 才能搞定 挺多状况的
上来讨解答很白目 我是自己写出来後 才想请问各位高手
有没有比较直觉的想法还有解法
或是回圈数更少的做作 看有些比较有经验的版本的解答 应该可以加强下次写此类题目的逻辑推演
小弟先将自己的版本放上来 谢谢各位分享 :)
//_____________程式开始 ________________
#include<stdio.h>
void main(void) {
int i,j;
int step1=0; // 这二个步进值 分别控制 从三开始印到何时停止
int step2=1; //
for (i=1;i<=5;i++) { // 外层回圈跑五次 列印五行
if(i<=3) { // 先写上半段 到 34567 这个部份
for(j=1;j<=5;j++) { // 此回圈是控制 每一行的五个数字
if(abs(j-3)<=step1)
printf("%d\t",j+i-1);
else printf("%s","\t");
}
step1++; }
if(i>3) { // 再写下半段
for(j=1;j<=5;j++) {
if(abs(j-3)<=step2)
printf("%d\t",j-i+5);
else printf("%s","\t");
}
step2--; }
printf("\n");
} }
// 程式结束 ___________________________________
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.42.16.176
1F:推 willhunting:用recursion,想到怎麽用後就搞定 160.39.16.13 03/11 08:02
2F:→ tenfaces:请问楼上同学 是否有更进一步的提示@@' 114.42.2.210 03/11 09:01
3F:→ tenfaces:我有点抓不到recursion的条件和感觉 谢谢 114.42.2.210 03/11 09:01
4F:→ MOONRAKER:为什麽只用一个if印五行 题目有规定吗 59.120.168.228 03/11 09:48
5F:→ MOONRAKER:还是写得越短有加分? 59.120.168.228 03/11 09:49
6F:→ MOONRAKER:不要在for里面再用if分段 59.120.168.228 03/11 10:12
7F:→ MOONRAKER:直接写成两个for 每个for只做一件事情 59.120.168.228 03/11 10:12
8F:→ MOONRAKER:这样才比较容易看懂和除错 59.120.168.228 03/11 10:13
9F:→ MOONRAKER:(难怪这可以当考题) 59.120.168.228 03/11 10:13
10F:推 HudsonE:lol 59.124.99.126 03/11 12:16
11F:推 nosrep:这题目应该是为了考 stack 的观念220.128.189.250 03/11 14:04
12F:推 mantour:不知道用赖皮的写法可以拿几分XD140.112.213.158 03/11 16:08
13F:推 yoco315:printf(" 3\n 345\n34567\n 345\n 3"); 118.160.105.56 03/11 20:41
14F:推 makiyolove:楼上专业 210.70.151.159 03/12 19:48
15F:推 march20:yoco GJ! 128.54.20.28 03/17 06:23