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...