一道c語言函式題,一道C語言函式題

2021-12-19 09:55:25 字數 1146 閱讀 2732

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 訪問無效資料.再次,...