C語言運算問題,c語言這題怎麼計算?

2023-06-09 16:25:09 字數 5749 閱讀 8772

1樓:匿名使用者

第一問 假設x為0 則!x為1,而!(!x)即!(1)所以結果為0,反之,x為1時結果也為1,即 是判斷x的值是否為 1等價, 所以應該結果為c,布林型的話 答案也可以是b

第二問:這是個優先順序的問題 +=等符號運算是自右向左執行的,優先順序小於加減乘除,執行後賦值,因此a+=a-=a*a 為 a為-6 2.

a+=a即a=a+a=(-6)+(6)=-12 所以答案為d

補充問題1:(m=a==b)||n=c==d) 注意:a||b 這個表示式 當a為1時,即表示式為真 不會再進行b的運算,只有當a=0時 才會進行b的運算,你可以試試將題目中a的初始值設為1 那麼 就會執行到n=c==d 這 ,n就會被賦值了; &與 也是一樣的運算順序。

問題2:同上的道理 , a &&b 需要是a為1 時才能往下執行 b是否為1,否則直接返回表示式的結果為 0

2樓:d調唯美

c語言是遵循右優先的,就是從右面開始運算。

a+=a的意思是說a=a+a,就是說將a+a的值賦給a。

首先運算3*3的9,表達是變成了a+=a-=9.

a-=9相當於a=a-9;a+=a-9相當於a=a+(a-9)then,看好這一步,到目前為止a的值還是3,a=a+(3-9)得到式子。

a=a+(-6)此時a被賦值為-6,then最後一步,a=-6+(-6)=-12;

我說的夠清楚了吧?

第一個問題我真的沒看明白!我寫的可不少啊,純手打,正好我也在。

研究c++順便幫你一下,希望有幫助!

3樓:匿名使用者

第一題 !(x)是雙重否定等同於x,在c語言中,x不為0時表示式x為真,所以第一題選c

第二題 a+=a-=a*a是按照從右到左的順序。

a-=a*a使得a的值由3變成3-3*3=-6,這個表示式的值也就是-6

a+=a-=a*a也就等同於a+=(6),此時a=-6,所以整個表示式執行完畢後a=-12

第三題。首先看m=a==b

a==b這個表示式很明顯值為真,則m=1,m=a==b這個表示式的值也就是m的值為1

那麼整個表示式的值也就為真了(或運算「||滿足條件),後面的n=c==d不執行判斷,此時m=1,n=0

第四題。首先看m=a>b

a=1且b=1,那麼a>b顯然不滿足,則m=0,同理m=a>b也為0,則整個表示式的值就為假(與運算「&&滿足否定條件),後面的n=a>b系統不執行,此時m=0,n=1

c語言這題怎麼計算?

4樓:四季花城廣場

**執行結果:

int left = 0;//左下標變數。

int right = 0;//右下標變數。

int arr[10] =陣列。

int lsarr[10] =臨時陣列。

right = sizeof(arr) /4 - 1;//獲取陣列位數。

while (right !=0)//進行迴圈。

lsarr[left] =arr[right];/將arr右下標賦值給lsarr左下標。

right--;

left++;

for (int i = 0; i < 10; i++)列印出來。

printf("%d ",lsarr[i]);

return 0;

c語言計算問題

5樓:湯菊孝嬋

答案是22.。

t=(+i)+(i)+(i)=6+8+8=22。。

為什麼呢。這是v

c++編譯器。

的特性。就是最後兩個數的優先順序是相同的。。這樣說起來有點抽象。舉幾個例子您自己去琢磨吧。。

這是因為31=6+7+9+9。。

這是因為41=6+7+8+10+10

這是因為52=6+7+8+9+11+11。。

我只能這樣解釋了。。什麼看不懂的再問我吧。。嘿嘿。

6樓:盤季問浩

c語言裡以0開頭的數表示是八進位制數,那麼,八進位制轉換成二進位制的方法是,一個八進位制位佔3個二進位制位。

如果用二進位制表示那麼。

x=001011

y=010101

z=000001

z=111110

的優先順序高於^,,優先順序高於|

y&z=000001,.x|y&z=001011,即十進位制的11,所以第一個用%d輸出的是11

y&~z=010100,.x|y&~z=011111,十進位制的31y&~z=010111,x^y&~z=011111,十進位制的31

7樓:實娜夫白

首先x,y,z都是八進位制的數,這裡面的運算都是用二進位制的所以化為二進位制是x=00001011,y=0010101,z

00000001(用八位表示,不足八位的用0補足)(1)先進行與運算再進行或運算即(x|(y&z))11(十進位制)

2)先進行取反再進行與運算,最後或運算即(x|(y&(~z))31(十進位制)

3)先進行取反再進行與運算,最後進行異或運算即(x^(y&(~z))

00001011^(00010101&(~00000001))=00011111=31(十進位制)

8樓:燕澹厲採

求反運算。求反運算子~為單目運算子,具有右結合性。

其功能是對參與運算的數的各二進位按位求反。例如~9的運算為:

0000000000001001)結果為:1111111111110110

按位或運算。

按位或運算子「|」是雙目運算子。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。

例如:9|5可寫算式如下:

十進位制為13)可見9|5=13

按位與運算。

按位與運算子"&"是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1,否則為0。參與運算的數以補碼方式出現。

例如:9&5可寫算式如下:

9的二進位制補碼)&00000101

5的二進位制補碼) 00000001

1的二進位制補碼)可見9&5=1。

c語言問題計算

9樓:仲孫金生羊婷

因為sum=a+b;的時候a,b都沒有賦初值。應該先對a

0,b0再參加運算。

10樓:祈蕾杞培

開始定義變數後沒有賦值操作,直接進行了運算。

所以出現這種情況,正確的是。

voidmain()

11樓:網友

順序問題。編譯器是按照循序執行語句。

程式當中你先定義了a,b

並沒有初始化。編譯器給分配了儲存空間但其中的內容並不確定。

所以當執行到sum=a+b的時候就把a,b當中的隨機的值取了出來。

然後你又定義了a,b的值,這是並不影響sum的值。所以可以這樣改。

voidmain()

12樓:魯實丘辛

選b*(p+8)

過程見下:*p=a;//初始時陣列a的首元素的地址賦給了指標變數p說明:在c語言裡陣列名代表陣列首元素,這句話你必須得記住。

推論:*(p+8)

括號裡的優先順序比*號要高,所以先執行。

p+8(p+8與a[8]等價)p+8是地址。

通過上述可知:*(p+8)//其中「

表示「指向」,*p+8)表示「指標變數p所指向的變數」即a[8]元素的值9

c語言運算

13樓:紫禮辜婉

設x=6;執行語句y=(x=5)?(x-2):(x+2);

確認一下你的題是不是這樣?

如果是這樣,請看解題過程:

首先執行(x=5)?(這句的意思是在問x是不是等於5)如果上面是對的,則執行?和:之間的(x-2);

如果是錯的,則執行:後面的(x+2)。

顯然此題x不等於5,執行(x+2),結果y=6+2=8

c語言運算的問題

14樓:一個愛學習的

// 先執行右邊括號裡面的 從左向右執行,//第一步 執行a = 3 ==a = 3// 第二步 執行 b = a-- 因為--在後,所以a先賦值給b 即b=3 a在--,即a = 2

第三步 x的值,在此執行過程中,x取括號裡面最後一次執行的值,即取b的值。

15樓:匿名使用者

b=a--,先將a的值賦給b,a再自減1

a=3,b=a=3,然後a自減1,a=2

x=(a=3,b=a--)右邊為逗號運算子,從左至右執行各語句,並將最後一個語句的計算結果賦給x,對於本題,也就是將b的值賦給。

因此,執行語句x=(a=3,b=a--)後,x的值是3,a的值是2,b的值是3。

16樓:烏綸奇初珍

0/3=0

對於除法運算子的運算屬於算術運算的範疇。

進行算術運算的資料型別一般為:整型(int),長整型(long),短整型(short),字元型(char),實型《實型又分單精度實型(float)雙精度實型(double)>

1.當運算雙方是同型別的話,那麼結果也是一樣的型別,比如如果都為整型(int),那麼結果也是整型。

例:2/4=0;7/2=3;-5/3=-1

採取向0取整的原則。如果雙方是float型,那麼結果也是float型(小數部位是7個有效數字)

2.當運算雙方不是同型別的話,那麼機器就會自動地進行型別轉換。

double<--float

longunsigned

int<--char,short

橫向向左的箭頭是必定轉換的,如果資料型別是char的話必須先轉換為int型,對於縱向的越往上級別越高,也就是兩個資料間低等級的型別要先轉化到那個高等級的資料型別,然後再進行計算,當然結果也就是那個高等級資料型別的形式。

3.還有種強制轉化計算的方式,就是為了得到自己想要的資料型別,而將一個不符合標準的資料型別進行強制轉換,比如float型的資料不能進行求餘運算,所以必須要將他強制轉化為int型方可運算,否則出錯。例:

floata=;(int)a%2=1;

c語言計算問題問題

17樓:匿名使用者

a=1,b=0,c=3

首先看運算子的級別:()關係運算子》賦值運算子整個是一個關係表示式:

從左往右:ik為假 值為0,賦給b,所以b=0

因為是與運算,有一個為假就整體為假,後面就不做,故c=3

18樓:匿名使用者

ik是假的,所以j>k=0;所以b=0,ijk都!=0,所以c=1;

c語言關係運算問題

19樓:匿名使用者

&&是從左向右運算的,先算 m=a>b,由於a>b是false,返回0,所以m=0

是的&&運算為false,因為左邊已經是false,右邊就不運算了。

所以n還是=2

C語言運算問題,C語言運算的問題

include int main printf llf ans 不過接連除了2018次5,答案太小了,輸出0.000000 scanf 是c語言中的一個輸入函式。與printf函式一樣,都被宣告在標頭檔案stdio.h裡,因此在使用scanf函式時要加上 include 在有一些實現中,printf...

c語言問題條件運算子選擇題,C語言問題 條件運算子選擇題

這個是三目運算子。這個是條件表示式,表示如果a為真,則表示式值為b,如果a為假,則表示式值為c 條件表示式具體說明如下 條件語句 if a b max a else max b 可用條件表示式寫為 max a b a b 執行該語句的語義是 如a b為真,則把a賦予max,否則把b 賦予max。使用...

c語言問題題,C語言問題答案

沒考慮邊界資料,給你改了下 int prime int p int primesum int m,int n return sum c語言問題答案 9 a 1,b 3,c 2 必須按scanf格式輸入 10 a 1 1 的值是0 初值賦值只給了每行第一個元素,其餘元素未指定值,預設0。11 1 邏輯...