作者 主題: C語言金字塔印星星  (閱讀 13182 次)

0 會員 與 1 訪客 正在閱讀本文。

史瑞克

  • 憂鬱的高中生
  • ***
  • 文章數: 130
  • 性別: 男
    • 檢視個人資料
    • 史瑞克
C語言金字塔印星星
« 於: 2009-10-20 15:30 »
這題我卡超久的
都沒東西印出來
例如:

input:
1 ← debug用

9 ←最後印出9個星星

output:
*
***
*****
*******
*********

底下是我的程式碼

# include <stdio.h>
# include <stdlib.h>
static int utestnum = 0;

main() {
  int num1 = 1; //第一行印一個星星
  int num2 ; //最後一行印幾個星星
  int step; //輸入次數計算器
  scanf( "%d", &utestnum );
  scanf( "%d", &num2 ); // 讀入最後印幾個星星
  while ( num1 <= num2 ) {
    step = num1; // 計數器
    while ( step == 0 ) {
      printf( "*" );
      step = step - 1; // 每印出一次就扣一次計數
    } // while ( num1 == 0 )
    num1 = num1 + 2;
    printf( "\n" );
  } // while ( num1 > num2 )
} // main()

執行結果是沒東西印出來......

Update:
修改紅色的地方
就這樣過了......
« 上次編輯: 2009-10-20 16:41 由 史瑞克 »
博學之,審問之,慎思之,明辨之,篤行之。 - 禮記中庸第三十一
我的噗浪:http://www.plurk.com/shrekwang/invite
我的Blog:http://shrekat.blogspot.com

洋蔥叔叔

  • 榮譽博士
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
回覆: C語言金字塔印星星
« 回覆 #1 於: 2009-10-20 16:26 »
邏輯看不大懂, num1 永遠不可能大於 num2 吧?
num1 是 1,num2 是 9
num1 = num1 + 2; 永遠不會被執行

史瑞克

  • 憂鬱的高中生
  • ***
  • 文章數: 130
  • 性別: 男
    • 檢視個人資料
    • 史瑞克
回覆: C語言金字塔印星星
« 回覆 #2 於: 2009-10-20 16:40 »
我剛剛自己解決了
修改一些小地方
面對教授的程式碼上傳軟體說:如果沒過我就不姓X

就給我過了.......

我每次都是解決不了
一定要上來問問題
再回去看才解決.......
博學之,審問之,慎思之,明辨之,篤行之。 - 禮記中庸第三十一
我的噗浪:http://www.plurk.com/shrekwang/invite
我的Blog:http://shrekat.blogspot.com

洋蔥叔叔

  • 榮譽博士
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
回覆: C語言金字塔印星星
« 回覆 #3 於: 2009-10-20 17:18 »
還是不懂你的問題,就算用你修改過的版本還是什麽星星都沒印出來不是嗎?step 也永遠不會是 0 因為 num1 是一直往上加。
算了你高興就好。

史瑞克

  • 憂鬱的高中生
  • ***
  • 文章數: 130
  • 性別: 男
    • 檢視個人資料
    • 史瑞克
回覆: C語言金字塔印星星
« 回覆 #4 於: 2009-10-20 18:29 »
還是不懂你的問題,就算用你修改過的版本還是什麽星星都沒印出來不是嗎?step 也永遠不會是 0 因為 num1 是一直往上加。
算了你高興就好。

對呀
不過step我會用num1來set回去
因為step的意義就是
我每印1顆星
step就減1
當step == 0的時候
停止印星星

所以step = 15
就要印出15個星星

話說我以前學Fortran的時候
也是卡在印星星.......
博學之,審問之,慎思之,明辨之,篤行之。 - 禮記中庸第三十一
我的噗浪:http://www.plurk.com/shrekwang/invite
我的Blog:http://shrekat.blogspot.com

洋蔥叔叔

  • 榮譽博士
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
回覆: C語言金字塔印星星
« 回覆 #5 於: 2009-10-20 19:58 »

對呀
不過step我會用num1來set回去
因為step的意義就是
我每印1顆星
step就減1
當step == 0的時候
停止印星星

所以step = 15
就要印出15個星星

話說我以前學Fortran的時候
也是卡在印星星.......

對啊,但是你上面的程式碼的第二個 while 只有在 step 等於 0 的時候才會進到 step = step -1 這行
可是 step 永遠不可能等於 0,因為 step = num1,而 num1 只會往上加
應該用 for 或者 do while 才對吧

算了啦過了就好了,別想太多 :)

史瑞克

  • 憂鬱的高中生
  • ***
  • 文章數: 130
  • 性別: 男
    • 檢視個人資料
    • 史瑞克
回覆: C語言金字塔印星星
« 回覆 #6 於: 2009-10-20 20:39 »

對呀
不過step我會用num1來set回去
因為step的意義就是
我每印1顆星
step就減1
當step == 0的時候
停止印星星

所以step = 15
就要印出15個星星

話說我以前學Fortran的時候
也是卡在印星星.......

對啊,但是你上面的程式碼的第二個 while 只有在 step 等於 0 的時候才會進到 step = step -1 這行
可是 step 永遠不可能等於 0,因為 step = num1,而 num1 只會往上加
應該用 for 或者 do while 才對吧

算了啦過了就好了,別想太多 :)
之前也想過用for 或 do while
但是......蠻煩躁的
所以功課只求能過不求完美
就這樣寫啦
謝謝

還有5題等我解決
(總共10題囧)
博學之,審問之,慎思之,明辨之,篤行之。 - 禮記中庸第三十一
我的噗浪:http://www.plurk.com/shrekwang/invite
我的Blog:http://shrekat.blogspot.com