• 12

[有趣]越簡單的程式, 越多人不會寫??

虎斑笨貓 wrote:
下面的字,全部的立正站好...(恕刪)

立正!!!!!!
不知道要簽什麼的說‧‧‧
那些問作業的... 知道下次標題要怎下了吧...
superhbin wrote:
那些問作業的... ...(恕刪)


那你也得要一個個的試吧,
不然怎麼會知道哪一個程式是能用的呢?
交出去不會被教授打槍...
http://johnnyms63.blogspot.tw/
matika wrote:
但據上面那篇文章的作者 200個programmer中有199個寫不出來, 或寫錯..

取樣的樣本是?
感覺這樣的比例很扯~
除非很多都是鬼混的程式設計師
而且大學不是無聊都會跟同學比寫 ACM 題目嗎
這種題目不太可能不會寫吧?
#include <stdio.h>
#include <stdbool.h>

int main()
{
 bool flag = false;
 int i;
 for( i = 1 ; i <= 100 ; i++ )
 {
  if( i % 3 == 0 )
  {
   flag = true;
   printf( "Fizz" );
  }
  if( i % 5 == 0 )
  {
   flag = true;
   printf( "Buzz" );
  }
  if( !flag )
   printf( "%d", i );
  printf( "\n" );
  flag = false;
 }
 return 0;
}

gcc 下去才發現不能直接用 bool >"<
太久沒寫 C 了
不過也可以直接用 int 當作旗標就是~
星塵 http://askeing.blogspot.com/
雙子貓 wrote:
少一點條件判斷,程式碼少花工夫達成相同結果,提升效能。而且現代的CPU都有pipe line,條件判斷失敗會導致pipe line清空重填,多浪費一些時間。 條件判斷越少,越不容易發生這種時間浪費。


那就作成硬體吧...

module fizz_buzz_processor (
input clk,
input reset_b,
input cs,
output fizz,
output buzz,
output fizz_buzz,
output reg [6:0] counter
);


always @ (posedge clk or negedge reset_b) begin
if (!reset_b) begin
counter <= 7'd0;
end else if (counter == 7'd100) begin
counter <= 7'd0;
end else if (cs) begin
coutner <= counter + 7'd1;
end
end // end of always

wire divide_3 = (counter%3 ==0)? 1'b1,1'b0;
wire divide_5 = (counter%5 ==0)? 1'b1,1'b0;
wire divide_15 = divide_3 && divide_5;


assign fizz_buzz = divide_15;
assign fizz = divide_3 && !divide5;
assign buzz = divide_5 && !divide3;

endmodule

contax_n wrote:
i<n的時候是正確的
每次累加會多一個星

但當i=n和i>n時
都只會印出n個*號
不會自行縮回去


我用的是 recursive calls (遞迴?)
不需要自行縮回去呀。
當 i < n 時,
印出 i 個星號,
然後 call 同個 function,遞出參數 i+1, n, 多加一個星號的字串。
傳回時再印出 i 個星號一次。

若 i = n 則直接印出 n 個星號。

好像沒錯吧?
http://www.mike-chen.net http://www.flickr.com/photos/totaleclipse
jin_hsu@hotmail.com wrote:
那就作成硬體吧......(恕刪)

這‧‧‧大家真是越來越幽默了~~~

乾脆各種版本的程式接龍算了。C、C++、JAVA、VHDL都有了,還有沒有人要來接龍的?

電梯下樓。
不知道要簽什麼的說‧‧‧
/* n 必須是大於 0 的自然數 -- 自然數是什麼不需要解釋吧? */

#define N 100

print_star(int n)
{
 print("*");
 if (n > 1)
  print_star(n - 1);
 else
  print("\n");
}

main()
{
 int i;

 for (i = 1; i <= N; i++)
  print_star( i);
}
如果沒規定用什麼語言, Perl 一行搞定,完全不需要另一個 loop,或是 recursive call
for ($i = 1, $N = 100; $i <= $N; $i++) print '*' x $i, "\n";

1.upto(100) do |l|
print "#{l}\t"
print "Fizz" if l%3 == 0
print "Buzz" if l%5 == 0
print "\n"
end
唉~ perl 語法小弟從沒搞懂過﹍﹍﹍
http://www.mike-chen.net http://www.flickr.com/photos/totaleclipse
  • 12
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 12)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?