c語言請教

時間 2022-03-08 19:10:11

1樓:幻想秘境

int i,j,k; ①

for(i=0;i<2;i++) ②

for(j=0;j<2;j++) ③

for(k=0;k<2;k++) ④

printf("%d%d%d\n",i,j,k); ⑤

為了方便,下面將根據以上編號進行講解

首先執行①,宣告變數i,j,k(未初始化)

執行②,i=0,i<2;條件成立 i=0,j=垃圾值,k=垃圾值

執行③,j=0,j<2;條件成立 i=0;j=0;k=垃圾值

執行④,k=0,k<2;條件成立 i=0;j=0;k=0

執行⑤因為i=0;j=0;k=0 輸出i,j,k的值 000

執行④k++;k=1;k<2;條件成立

執行⑤因為i=0;j=0;k=1; 輸出i,j,k的值 001

執行④k++;k=2; k<2;條件不成立

執行上層迴圈,也就是執行③,

j++;j=1;j<2;條件成立;

執行④k=0,k<2;條件成立 i=0;j=1;k=0

執行⑤因為i=0;j=1;k=0 輸出i,j,k的值 010

執行④k++;k=1;k<2;條件成立

執行⑤因為i=0;j=1;k=1; 輸出i,j,k的值 011

執行④k++;k=2; k<2;條件不成立

執行上層迴圈,也就是執行③,

j++;j=2;j<2 條件不成立

執行上層迴圈,也就是執行②

i++;i=1;i<2 條件成立

執行③,j=0,j<2;條件成立 i=1;j=0;k=1

執行④,k=0,k<2;條件成立 i=i;j=0;k=0

執行⑤因為i=1;j=0;k=0 輸出i,j,k的值 100

執行④,k++;k=1,k<2;條件成立 i=i;j=0;k=1

執行⑤因為i=1;j=0;k=1 輸出i,j,k的值 101

執行④k++;k=2; k<2;條件不成立

執行上層迴圈,也就是執行③

j++;j=1;j<2;條件成立;

執行④k=0,k<2;條件成立 i=i;j=1;k=0

執行⑤因為i=0;j=1;k=0 輸出i,j,k的值 110

執行④,k++;k=1,k<2;條件成立 i=i;j=1;k=1

執行⑤因為i=1;j=1;k=1 輸出i,j,k的值 111

執行④k++;k=2; k<2;條件不成立

執行上層迴圈,也就是執行③,

j++;j=2;j<2 條件不成立

執行上層迴圈,也就是執行② i=1;j=1;k=1;

i++;i=2;i<2 條件不成立 結束迴圈

完成打字辛苦,望採納!!!

2樓:

c語言執行程式都是從上往下執行如下和你程式是等價的,先執行for(i=0;i<2;i++)滿足條件(i<2)執行for(j=0;j<2;j++)滿足條件(j<2)執行for(k=0;k<2;k++)滿足條件(k<2)執行 printf("%d%d%d",i,j,k)

因此當i=0時,j可以迴圈兩次即j=0,j=1;當j=0時,k可以迴圈兩次k=0,k=1;

printf("%d%d%d",i,j,k);總共列印四次for(i=0;i<2;i++)}}

3樓:張小威

因為你選取的數值太過迷惑性  建議你換其他數值  比如我給你做一下小小的變換 如下

數值之間相差較大  不會有相同數字出現 便於分析  加入printf語句 更容易分析複雜語句的讀取過程 這是乙個小方法  還可以以後用於行數較多 分塊檢查語句是否出錯

輸出結果

這樣就不難發現 巢狀語句是如何工作的了

先是第乙個for語句 初始值i=10  進行判斷i<12 流向printf語句 輸出i=10,然後i++  i=11  判斷i<12 輸出i  再接著i++  i=12  判斷i<12不符合 結束第乙個for語句 流向第二個for語句 同理第乙個

能明白嗎?我的專業就是這個 不懂的地方   歡迎追問!!

4樓:匿名使用者

先做內迴圈在做外迴圈

請教c語言

5樓:黃孔雲

指標這東西很微妙,c語言函式之間的傳遞有兩種形式,一種是「值」傳遞,另乙個是「位址」傳遞也就是通常所說的「指標」傳遞,但實質上還是一種「值」的傳遞只不過它傳遞的不是乙個簡單的值而是傳遞的是乙個位址!理解了這裡,下面我們來解題,在main函式中將指標p1指向a的位址,指標p2指向a的位址,傳遞給函式fun的時候你想想這裡是什麼傳遞??(這裡是位址傳遞,將a和a的位址傳遞給函式fun),而在函式fun中有兩個char型別的區域性指標變數(形參),乙個指向a另乙個指向a(即變數a指向a的位址,變數b指向a的位址),執行語句a=b;時,只是將變數a的指向改變了,它指向了變數b指向的內容,所以這裡變數a也指向了a的位址,即變數a和變數b都指向a的位址!

執行語句(*a)++;先拿出指標變數a所指向的值,在將該值自加1,此時變數a和變數b所指向的值是字母『b』。而p1和p2還是指向原來的位址即p1指向字母『a』p2指向字母『a』,所以p1沒有變化,程式執行的結果是ab。譚老爺子那本書上應該有類似的例題

6樓:

p1 是指向c2 了呀,程式輸出ab 的嘛,就是p1指向c2,然後使a變成b的啊

你列印的語句沒有用指標。

如果你加一條 printf("%c%c\n",*p1,*p2);

就會看到輸出bb

哦,抱歉。理解錯了。輸出的還是ab。

應該是這樣。p1 和p2 指標的值,分別複製給了a 和ba指向ch1 b指向ch2 然後a被指向了ch2但這並不影響p1和p2 的值,因為他們的值是被複製過去的,本身不受影響

7樓:匿名使用者

在引數傳遞的過程中,p1指向的位址是以傳值的方式傳遞,也就是並不會改變p1本身指向的位址,只是把p1指向的位址中的數字改變了

要是想達到你的效果,引數要是這樣的void fun(char **a,char**b)

使用時fun(&p1,&p2);

C語言問題請教,有c語言問題請教

include float convert float c,float f int main void float convert float c,float f 1 你的計算中f是浮點數,c是整型這樣的計算是有問題。2 你無法輸出的原因是,你只執行convert函式,但是卻沒有輸出它的返回值,方法...

請教C語言問題,請教乙個C語言問題

第乙個引數需要填寫的是 myout.txt 檔案檔案路徑及檔名 第二個引數則代表著流形態,其中有以下幾種狀態 r 開啟唯讀檔案,該檔案必須存在。r 開啟可讀寫的檔案,該檔案必須存在。rb 讀寫開啟乙個二進位制檔案,只允許讀寫資料。rt 讀寫開啟乙個文字檔案,允許讀和寫。w 開啟只寫檔案,若檔案存在則...

請教c語言高手很多題目不會做,請教C語言高手,很多題目不會做。。

永兵 1,選d 017為8進位制數,表示十進位制中的15,而 k 是先加一後輸出,故為16 printf x n g 表示以16進位制的形式輸出 g 的值,先輸出後加一,故為75 2,選d int x 10 定義了10個單位大的整型陣列,故10x4 40 4,選d stringlen計算的是 0 前...