C語言自增程序的解題求過程,一個C語言自增程式的解題求過程

2023-01-28 08:25:47 字數 4435 閱讀 7890

1樓:翁寅侃

樓主還是沒有明白i++與++i的區別。

j=++i+i++;可以分成i=i+1;j=i+i;i=i+1;三步。

j=(++i)+(++i)+(i++);可以分解為i=i+1;i=i+1;j=i+i;i=i+1;四步,算出來剛好為27

這是因為++i的運算優先順序是高於整個表示式的,系統在計算這個表示式之前就會先掃描一次,從中提出所有的++i優先執行,然後再用算出的結果代替++i。i++同樣,不過它是先代替後再運算i++表示式的。

2樓:華哥

(1) i=7 j=12

(2) i=10 j= 27

int i=5,j;

j=++i+i++; //j=(++i)+(i++)=6+6=12 i=5+1+1=7

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

j=(++i)+(++i)+(i++); //i=7+1+1+1=10 j=(++i)+(++i)+(i++)=9+9+9=27 其中

// 前兩個++i 時表示式中i 的值變為 9,(i++)對 表示式不作變化

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

3樓:匿名使用者

對的,static變數只初始化一次,然後它的資料就一直儲存在記憶體中,直到程式結束。

因此,當a==2時,c=a+c++=2+0=2,c自加1,則c==3.a++以後a==3,此時函式裡c=3,於是c=a+c++=3+3=6,c自加1,於是c==7

4樓:巴州數碼

j=++i+i++;是從右到左運算,i++是先用i運算,然後i在自加,++i是i先自加在去運算

c語言,自增題目!求詳細過程!

5樓:匿名使用者

i++:先呼叫i,再使i+1;++i:先使i+1,再呼叫i(此時i=i+1)

c語言自增的運算過程親求解 20

6樓:

這與編譯器有關。常見的有兩種情況:

b = ++j + ++j + ++j ; 的計算是先計算前2項存入一個臨時變數,再計算最後一項,結果是j=4+1,j=5+1,x=j+j=6+6=12;然後,j=6+1,b=x+j=12+7=19。

j=4+1,j=5+1,j=6+1,然後,b=j+j+j=7+7+7=21。

所以建議你不要糾結這種題。

7樓:匿名使用者

其實根據它的寫法都能看出來,這個優先順序同等級的是從左到右計算的,那麼肯定是先自增一在和後面得結合,又因為c語言的貪心法則,在c語言表準規則下結合最多的運算子

關於c語言函式自增 的 一道題 求解答

8樓:守候一生的

這跟你使用的c編譯軟體有關。有的軟體是從左往右編譯,有的是從右往左編譯。

比如,turbo c的編譯順序是從左往右的,vc++6.0的編譯順序是從右往左的。

如果是從左往右編譯,則y=(x++)+(--x)的結果y=19。如果是從右往左編譯,--x之後x為9,同樣的,前面的x++中的x這時也為9,所以答案是18

9樓:匿名使用者

因為c語言加法是右結合性,即從右向左開始運算,剛開始x為10,經過--x,x變為9,(--x)是先自減再運算,此表示式的值為9,(x++)是先運算再自增,該表示式的值為9,所以y的值應該為18,而x的值經過自增變為了10。

10樓:匿名使用者

++這個符號先不管,先算--,--x後x為9,兩個9相加為18,所以y為18,此時x再加1,所以x還是10

算結果的時候可以把++忽略,表示式變為x+(--x),算出結果後再算後置的++

11樓:43青年

表示式是從右往左算的

先算(--x)

x變成9

x++先返回9,再++

結果18

12樓:匿名使用者

可能,是從左向右執行,先是--x,x=9,然後x++,但是是先執行y,然後再 x++。。。所以,最後 x=10 y=18

13樓:雨魂

單步除錯下,看看x的變化。

求救一道c語言的題目,求詳細解答過程!非常感謝!!

14樓:楚寒江

1.int i;int f[20]=;

程式定義了一個變數i和一個長度

為20的整型一維陣列並把陣列的前兩個值均初始化為1後面初始化為02.for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1];

在i從2到20每次自增1的迴圈過程中,其實就是在給陣列第3個數(陣列下標從0開始,所以迴圈從2開始)到第20個數賦值的過程。陣列從第3個數開始,每一個數等於其前兩個數的和。

3.for(i=0;i<20;i++)

在i從0到20每次自增1的迴圈過程中,列印陣列。%12表示的是每次佔12個字元的位置,if(i%5==0)printf("\n");表示當i自增到5的整數倍時換行,以便可以打出每5個數一行的效果。

4.最後再列印一個換行。

15樓:匿名使用者

int f[20]=;

for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];

這個步驟是計算菲波拉契數列。

斐波拉契(fibonacci)數列**於兔子問題,它有一個遞推關係,f(1)=1

f(2)=1

f(n)=f(n-1)+f(n-2),其中n>=2即為斐波拉契數列。

for(i=0;i<20;i++)

//以上則是輸出了一個5*4的矩陣。最後列印一個換行結束printf("\n");}

16樓:

此函式是斐波那契數:

#include

void main()

;for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];

for(i=0;i<20;i++)

printf("\n");

}斐波那契數f(n):當n=0和n=1是,f(n)=1;

n>=2時:f(n)=f(n-2)+f(n-1)此語句:int f[20]=;是初始化,把n=0和n=1的f(n)初始化1;

for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];

這個迴圈就是遞迴呼叫,實現「n>=2時:f(n)=f(n-2)+f(n-1)」

此語句: if(i%5==0)printf("\n");

是輸出控制,輸出5個後就換行。

此語句:printf("%12d",f[i]);對輸出的數進行控制。

此語句:printf("\n");對於for迴圈輸出完後換行,在此處用處不大。

17樓:匿名使用者

#include

void main()

;for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];//很經典的一個數學問題,後一個數等於前兩個數的和

//f[20]最開始是,後面的都是0

//從f[2]開始運算,即第三個數開始,依次後一個數等於前兩個數之和for(i=0;i<20;i++)

printf("\n");}

18樓:華錄_起點

解釋在程式的註釋中:

#include

void main()

;//定義陣列中前兩個值

for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1]; //斐波那契數列for(i=0;i<20;i++)

printf("\n");}

19樓:天澪萃夢

第一個迴圈將陣列f從第三個元素起開始賦值,其值為相鄰前兩個元素的和,陣列f也就是斐波那契數列了

第二個輸出迴圈以12列為單位輸出所有元素,並在5的倍數元素後換行

20樓:匿名使用者

int f[20]=;----- f[0] = 1,f[1] = 1;

for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];---------f[2] = f[0]+f[1];一直算到f[19] = f[17]+f[18]

for(i=0;i<20;i++)

c語言程式閱讀題,需要詳細解答步驟

21樓:濮陽藻

func(int n) //計算n的階乘 即 1*2**nvoid main()//計算1 3 5的階乘的和在while迴圈中

每次計算i的階乘,並與s相加

i每次自增2

即i的值分別為 1 3 5

計算階乘後相加得到s

求c語言程式設計,求一個c語言程式設計

原創 剛好我才做了c語言實驗,給你一個任意兩矩陣相乘的 include 矩陣a a n h b b h k c c n k c a b,求c?define n 3 define h 3 define k 3 a i1 j1 表示陣列a n h 中各元素,b i2 j2 表示陣列b h k 中各元素,...

c語言求和,C語言!求一個求和的程式。

3全部先獲取陣列長度,然後用for迴圈,從陣列中獲取值進行累加求和。include include int main int n int val int a int sun 0,i printf 請輸入陣列的長度 scanf d n printf n a int malloc n sizeof in...

求高手給C語言的程式,求高手給一個C語言的程式!!!

include include struct student void main printf 學生的資訊如下 n for j 0 j 3 j printf s d d d 1f n stu j name,stu j number,stu j score1,stu j score2,stu j sc...