請問這個程式怎麼執行,這個c語言程式怎麼執行的

2022-12-04 04:56:21 字數 4314 閱讀 1941

1樓:匿名使用者

i=0;(i=0), i<=n/2成立(n/2=5), 開始迴圈: f(&a[i],a);

a=&a[0]=指向a[0],b=a=指向a[0],這裡臨時引數變數a並不是主程式中陣列a,可理解為另外名字aa

*aa=*b-*aa,(a[0]=a[0]-a[0]=0), b[*aa]+=aa[1];(b[0]=b[0]+aa[1],a[0]=0+a[1]=2)

a[n]=

i++;(i=1),i<=5成立,繼續迴圈: f(&a[i],a);

aa=&a[1]=指向a[1],b=a=指向a[0],*aa即a[1],aa[1]即a[2],*b即a[0]

*aa=*b-*aa,(a[1]=a[0]-a[0]=0), b[*aa]+=aa[1];(b[0]=b[0]+aa[1],a[0]=2+a[2]=5)

a[n]=

i++;(i=2),i<=5成立,繼續迴圈: f(&a[i],a);

aa=&a[2]=指向a[2],b=a=指向a[0],*aa即a[2],aa[1]即a[3],*b即a[0]

*aa=*b-*aa,(a[2]=a[0]-a[2]=2), b[*aa]+=aa[1];(b[2]=b[2]+aa[1],a[2]=2+a[3]=6)

a[n]=

i++;(i=3),i<=5成立,繼續迴圈: f(&a[i],a);

aa=&a[3]=指向a[3],b=a=指向a[0],*aa即a[3],aa[1]即a[4],*b即a[0]

*aa=*b-*aa,(a[3]=a[0]-a[3]=1), b[*aa]+=aa[1];(b[1]=b[1]+aa[1],a[1]=0+a[4]=5)

a[n]=

i++;(i=4),i<=5成立,繼續迴圈: f(&a[i],a);

aa=&a[4]=指向a[4],b=a=指向a[0],*aa即a[4],aa[1]即a[5],*b即a[0]

*aa=*b-*aa,(a[4]=a[0]-a[4]=0), b[*aa]+=aa[1];(b[0]=b[0]+aa[1],a[0]=5+a[5]=11)

a[n]=

i++;(i=5),i<=5成立,繼續迴圈: f(&a[i],a);

aa=&a[5]=指向a[5],b=a=指向a[0],*aa即a[5],aa[1]即a[6],*b即a[0]

*aa=*b-*aa,(a[5]=a[0]-a[5]=5), b[*aa]+=aa[1];(b[5]=b[5]+aa[1],a[5]=5+a[6]=12)

a[n]=

i++;(i=6),i<=5不成立,結束迴圈

for語句輸出:11 5 6 1 0 12 7 8 9 0

debug執行模式下,未賦值的a[9]取值為0

2樓:

這是一個考靜態變數的題目,其中被調函式中的b是沒有使用的。

主函式中for迴圈次數是2次

第一次, 形參是a++,即是2做形參,之後a變成3.

f中c為3,故返回值為3,此時c變為4.

第二次,形參是a++,即是3做形參,之後a變成4.

f中c是靜態變數,第二次呼叫時保留上次結果4,所以返回值a為4,只後c變成5.

故在主函式中,k的值為4.

這個c語言程式怎麼執行的 10

3樓:匿名使用者

i從3到41,每次加2,即從3到41的奇數迴圈。

對於每個i的值,j都是從5到43的奇數迴圈。

i、j都是整型,對於每次運算都是整型運算。

i=3時,對於每個j,i/j一直是0,sum=0i=5時,j=5時,i/j=1,j=7及以後的數時,都是0,sum=1

…………

以此類推。

4樓:匿名使用者

[sum=0]

i=3;[i=3],i<=41成立,開始迴圈

j=5;[j=5],j<=43成立,開始迴圈:sum+=i/j;[sum=0+3/5=0.6]

j+=2;[j=7],j<=43成立,繼續迴圈:sum+=i/j;[sum=3/5+3/7]

j+=2;[j=9],j<=43成立,繼續迴圈:sum+=i/j;[sum=3/5+3/7+3/9]

...j+=2;[j=43],j<=43成立,繼續迴圈:sum+=i/j;[sum=3/5+3/7+...+3/43]

j+=2;[j=45],j<=43不成立,結束迴圈

i+=2;[i=5],i<=41成立,繼續迴圈

j=5;[j=5],j<=43成立,開始迴圈:sum+=i/j;[sum=3/5+3/7+...+3/43+5/5]

j+=2;[j=7],j<=43成立,繼續迴圈:sum+=i/j;[sum=3/5+3/7+...+3/43+5/5+5/7]

j+=2;[j=9],j<=43成立,繼續迴圈:sum+=i/j;[sum=3/5+3/7+...+3/43+5/5+5/7+5/9]

...j+=2;[j=45],j<=43不成立,結束迴圈

...i+=2;[i=43],i<=41不成立,結束迴圈

請問這個程式是怎麼執行的,我讀不懂這個成語,望大神能給我解釋一下,十分感謝您

5樓:匿名使用者

i=0;[i=0], i<3成立,開始迴圈

┣━j=0;[j=0], j<3成立,開始迴圈: a[i][j]=i+j; 【a[0][0]=0,a[(0,x,x),(x,x,x),(x,x,x)]】

┣━j++;[j=1], j<3成立,繼續迴圈: a[i][j]=i+j; 【a[0][1]=1,a[(0,1,x),(x,x,x),(x,x,x)]】

┣━j++;[j=2], j<3成立,繼續迴圈: a[i][j]=i+j; 【a[0][2]=2,a[(0,1,2),(x,x,x),(x,x,x)]】

┗━j++;[j=3], j<3不成立,結束迴圈

i++;[i=1], i<3成立,繼續迴圈

┣━j=0;[j=0], j<3成立,開始迴圈: a[i][j]=i+j; 【a[1][0]=1,a[(0,1,2),(1,x,x),(x,x,x)]】

┣━j++;[j=1], j<3成立,繼續迴圈: a[i][j]=i+j; 【a[1][1]=2,a[(0,1,2),(1,2,x),(x,x,x)]】

┣━j++;[j=2], j<3成立,繼續迴圈: a[i][j]=i+j; 【a[1][2]=3,a[(0,1,2),(1,2,3),(x,x,x)]】

┗━j++;[j=3], j<3不成立,結束迴圈

i++;[i=┎], i<3成立,繼續迴圈

┣━j=0;[j=0], j<3成立,開始迴圈: a[i][j]=i+j; 【a[2][0]=2,a[(0,1,2),(1,x,x),(2,x,x)]】

┣━j++;[j=1], j<3成立,繼續迴圈: a[i][j]=i+j; 【a[2][1]=3,a[(0,1,2),(1,2,x),(2,3,x)]】

┣━j++;[j=2], j<3成立,繼續迴圈: a[i][j]=i+j; 【a[2][2]=4,a[(0,1,2),(1,2,3),(2,3,4)]】

┗━j++;[j=3], j<3不成立,結束迴圈

i++;[i=3], i<3不成立,結束迴圈

i=0;[i=0], i<2成立,開始迴圈

┣━j=0;[j=0], j<2成立,開始: a[i+1][j+1]+=a[i][j]; [a[1][1]+=a[0][0],a[(0,1,2),(1,2,3),(2,3,4)]】

┣━j++;[j=1], j<2成立,繼續: a[i+1][j+1]+=a[i][j]; [a[1][2]+=a[0][1],a[(0,1,2),(1,3,3),(2,3,4)]】

┗━j++;[j=2], j<2不成立,結束迴圈

i++;[i=1], i<2成立,繼續迴圈

┣━j=0;[j=0], j<2成立,開始: a[i+1][j+1]+=a[i][j]; [a[2][1]+=a[1][0],a[(0,1,2),(1,2,3),(3,3,4)]】

┣━j++;[j=1], j<2成立,繼續: a[i+1][j+1]+=a[i][j]; [a[2][2]+=a[1][1],a[(0,1,2),(1,3,3),(2,6,4)]】

┗━j++;[j=2], j<2不成立,結束迴圈

i++;[i=2], i<2不成立,結束迴圈

printf輸出a[2][2]的值:6

6樓:

第一步填充矩陣:

0, 1, 2

1, 2, 3

2, 3, 4

第二步偏移累加:

0, 1, 2

1, 2, 4

2, 4, 6

所以最後輸出的a[2][2]是6。

c語言,兀4 1 1 n。請問這個程式怎麼編,謝

include int main pi pi 4 printf pi lf n pi 輸出結果return 0 c語言程式設計根據公式 4 1 1 3 1 5 1 7 1 9 1 11 計算 的近似值,當某一項的值小於0.000001為止。謝!這個是那個作業題吧?我當時大約是這麼做的 include...

c語言程式怎麼理解,這個C語言程式,怎麼理解??

函式型別為空,所以函式fun對這個程式沒作用。指標變數 s仍指向陣列a的首元素1.1的地址,輸出格式為 5.2f,保留兩位小數,所以輸出1.10 你只要弄明白指標的用法就可以了 建議看看 c與指標 我解釋一下 fun a,b,s 傳入陣列a,b的地址,以及s的地址,此時s指向陣列的第一個值,即是1....

這個程式用C語言怎麼做

include stdio.h include string.h int instr char str1,char str2 if p 0 return i return 1 void main 呼叫函式strstr直接解決問題 使用kmp演算法最為有效。include void getnext c...