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