1樓:
原因:i是全域性變數
一步一步來分析這個程式
從main進入
for (i=5;i<=8;i++)
aa();
進入迴圈首先i=5,i<=8成立
執行aa() 此時i=5
執行下面的迴圈
for (i=5;i<8;i++)
printf("*");
printf("\n");
列印3個星號一個回車符
然後i的值由於aa中的迴圈變成了8
好了,aa執行完,回到main中的for迴圈執行main中for迴圈的最後一步i++
i的值變成9
i<=8條件不成立main中for中止,整個程式中止所以實際上就只列印 ***\n
2樓:匿名使用者
這麼跟你說吧, 你知道 什麼是變數嗎, 這裡「i」 就是一個變數!!
你想輸出一個3行3列的 * 是不可能 的。
因為,當呼叫 aa() 子程式的時候 ,i 只有變為 8 了才能跳回主程式 , 所以 此時 i 已經變為 8 了, 就不再滿足 主程式 裡的 for (i=5;i<=8;i++)了,然後就結束主程式了!!
3樓:惶猶依然故我
i=5時 輸出 *
然後i++ 為6 輸出 *
繼續 i++ 為7 輸出 *
i++ 再執行 就不滿足條件 迴圈結束 再輸出 \n所以最後結果 ***\n
4樓:匿名使用者
你的 i 設的是全域性變數,在main()函式中第一次呼叫函式aa()後,在函式aa()中,i完成由5加到8的三次迴圈過程,此時再回到main()函式中時,i=8,將不再執行迴圈。
所以,只能輸出一次呼叫函式aa()的結果。
若需要顯示三次,建議將 int i; 放在main()函式中,並在aa()中重新定義變數。
5樓:匿名使用者
因為你的i是全域性變數,在函式aa()裡面跑了一遍後變成了i=8,所以主函式裡面的迴圈只執行了一次,即函式aa()只執行了一次,因此會出現樓主的結果。
解決方法:函式aa()和main()裡面的迴圈變數i用不同的變數來表示。這樣得到的結果就是一個3行3列的 *
一道C語言程式設計題,一道C語言程式設計題
源 只要150行的程式就能用於 抗震救災 一道c語言程式設計題 15 在vc6下除錯通過。include stdio.h main printf 共有 版 d組解 權 n count 一道c語言程式設計題。5 include int s 100 100 定義陣列,第i行存的是第i個學生的成績 int...
C語言的一道程式設計題一道C語言程式設計題
include typedef struct pos int right pos pos1,pos pos2,pos pos3 double lengthfun pos pos1,pos pos2 int main pos2 pos3 printf n請輸入第 1個點的座標 t printf n請輸...
一道簡單的c語言題,一道簡單的C語言題
這個程式的目的是將你輸入的字串中的a,a互換大小寫.但程式寫錯了.首先scanf遇到空格就停止了,所以s只接收到了ahama.其次,還是同樣的問題,scanf是遇到空格停止的,所以s中並沒有 n 因此while迴圈並不是如你想象到的ahama就結束了,而是會繼續下去,導致s i 訪問無效資料.再次,...