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

2022-04-29 10:22:03 字數 5936 閱讀 3825

1樓:匿名使用者

#include

int main()

printf("%llf",ans);

}不過接連除了2018次5,答案太小了,輸出0.000000

2樓:

scanf()是c語言中的一個輸入函式。與printf函式一樣,都被宣告在標頭檔案stdio.h裡,因此在使用scanf函式時要加上#include 。

(在有一些實現中,printf函式與scanf函式在使用時可以不使用預編譯命令#include 。)它是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。

擴充套件資料:

1、int scanf(const char * restrict format,...);

函式 scanf() 是從標準輸入流stdio (標準輸入裝置,一般指向鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應地址的變數中。

函式的第一個引數是格式字串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的資訊並儲存於可變引數列表中對應的指標所指位置。每一個指標要求非空,並且與字串中的格式符順次對應。

空白字元會使scanf函式在讀操作中略去輸入中的一個或多個空白字元。一個非空白字元會使scanf()函式在讀入時剔除掉與這個非空白字元相同的字元。

3樓:有發麴問薇

==是條件運算子,判斷兩者是否相等

首先i=2,j=4

(++i==j--)是一個表示式,++i先i值加1,再執行語句,故執行時i=3

j--是執行語句後j值減一,故執行時j=4i不等於j,所以i==j這個表示式值為假,假即為0n=0如有問題,請追問

4樓:亢金藺雅志

n=2因為按照優先順序,和符號(&&)在前面運算,繼而從左往右運算,計算到m=a>b為假時,後面的就不再計算了,此式判定為假,所以n的值依然為2

c語言運算的問題

5樓:一個愛學習的

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

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

// 即a = 2,b = 3,x = 3希望我的回答能對你有所幫助!

6樓:匿名使用者

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

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

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

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

7樓:烏綸奇初珍

0/3=0

0/1=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

|long

|unsigned

|int<---char,short

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

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

float

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

關於c語言的位運算~的問題,求助!

8樓:匿名使用者

x = 11 -> 0000 1011~x -> 1111 0100

負數以補碼方bai式儲存的du,要換算成十進位制,先zhi把1111 0100取反(除開dao

符號回位),答再加1,這時為1000 1100 (1000 1011 + 1),為-12。

大概是這樣,你再具體查下補碼

9樓:吶傷誰聆聽

int裡第一位是符號位,0代表正數,代表負數。並且正數用原碼儲存,負數內用補碼

儲存(這樣做是能容將二進位制加法與減法統一,自己悟一下,很高明的方法)。11110010 第一位是1 所以是負數,所以是補碼。補碼轉原碼要取反加一(除了符號位),所以取反10001101。

再加一10001110 就是-14了。手機打字,希望你能理解。具體的搜尋關鍵字補碼來學習就行。望採納

10樓:匿名使用者

第一,輸出的是-12

第二,~是二進位制取反,不是取補碼

c語言矩陣運算問題

11樓:瘋狂小鳥

fin[3][3] = a[i][j] x b[i][j];改為fin[i][j] = a[i][j]*b[i][j];

因為fin[3][3]不是矩陣fin的座標,而且這個座標不應該是固定值,應該是變化的

乘法的符號是*不是x。

望採納。。。。。。

c語言基本運算子問題 *a++ = *b++

12樓:汽水

因為這是後置運算。如果你不弄明白前置元算與後置運算的區別,這類問題都容易出錯。

前置運算:

舉例:++a=++b;

執行順序是:

a=a+1;

b=b+1;

a=b;

後置運算:

舉例:a++=b++;

a=b;

a=a+1;

b=b+1;

再回到你上面的問題:

*a++=*b++;

執行順序是:

*a;*b;

*a=*b;

a++;

b++;

最後輸出的就是a[1],b[1],明白了沒有?

13樓:

*a++=*b++;

的確是相當於

*(a++)=*(b++);

由於++在後

所以又相當於

*a=*b;

a++;

b++;

所以執行後

第一句*a=*b;

則相當於

res[0]=asd[0]=2,那麼此時res陣列就成了int res[2]=;

a++ ----------a指向res[1]b++ ----------b指向asd[1]所以*a=res[1]=9

*b=asd[1]=6

14樓:雨吻月

*a++=*b++的分解步驟

1 *a=*b; // res[2]=;

2 b=b+1; //b指向6的地址3 a=a+1; //a指向9的地址所以 *a=9,*b=6

*號和++是單目運算子,優先順序相同,但是結合方向是從右至左。就是把*號右面的看成一個整體,

也就是*(a++)=*(b++); 因為++在後,所以最後做增1,先做*(a)=*(b), 然後b++, a++;

15樓:侯家瑋

*a++=*b++; 樓主啊,你這是想把asd的值賦值給res裡面吧,但是這裡只交換了一次,只交換一次啊。

交換之後的res=、asd=;只改變了陣列的第一個元素值,第二個就沒變,當然還是原來的9,6了。

16樓:匿名使用者

*a++=*b++;這裡,++與* 號的優先順序都比等號高,等他們都執行完,9=6,是這個東西,這是什麼意思?

注意:++與*是同一級運算子,結合方向有運算方向決定,不是你講的++優先*號,

呵呵,想來是這裡的問題。你看**,比較哈就知道了。

高手指教,相互學習。

17樓:人帥自有天幫

*a++ = *b++,從中可以看出,首先把*b所指向的值賦值給*a,就是asd[2]中的2把res[2]中的5給覆蓋了;其次就是*a和*b再來執行"++"這個運算子,並指向下一個陣列元素並且輸出9,6。

* 和++的優先順序是一樣高的,但是它們的運算方向是從右到左!!!

*a++就是等於*(a++) 但此時要是輸出*a++,會輸出的值等於*a,然後再把指標變數會指向下一個資料

樓主所**的結果為6,6是不對的,*a++=*b++ *b只會給*a賦值一次,就是把*b所指向的值賦值給*a所指向的值;然後通過「++」指標會指向下一個陣列元素,但絕不會再給*a賦值;樓主所**的結果為6,6,實際上樓主是指標指向下一個陣列元素,並且給*a 的值覆蓋了;

18樓:天下丶蒼生

=的優先順序要高於++,也就是說先進行了b賦值於a的運算,再進行了b++和a++的操作,所以輸出的是9,6 執行完以後,res陣列變成了,asd陣列還是

19樓:與子如初見

誰告訴你++的運算優先順序高於*的?

貌似是++做右運算子的時候優先順序是最低的,做左運算子的時候是最高的。

20樓:匿名使用者

你答應輸出陣列看看,陣列res應該是[6,9],你把*b++的值付給了a的首地址。

c語言printf裡簡單的運算問題

21樓:匿名使用者

冪函式pow的返回值是double型別,不經過型別轉換,直接以整型格式%d輸出會出現異常;

結合以上**,pow(2,2)的值為浮點數4.0,4.0的二進位制編碼,低32位全是0,所以會輸出0

22樓:u無力哀嘆丶

因為pow具有多個過載函式 需要通過返回值來確定他的型別如果你直接pow(2,2) 編譯器不知道你呼叫的是哪個pow 所以是未定義行為

編譯器應該報錯的 這段**是有問題的

正確的就是給出返回型別 int c/double c = pow(2,2); 這樣編譯器就能唯一的找到對應的pow(是返回int的那個 還是返回double的那個 又或是其他)

c語言數**算的問題

23樓:匿名使用者

#include

#include

#include

void encrypt(char *str)else if(ascii>=48&&ascii<=57)else if(ascii>=58&&ascii<=64)else if(ascii>=65&&ascii<=90)else if(ascii>=91&&ascii<=126)code[i]=(char)ascii;

} code[i]='\0';

printf("code:%s\n",code);

free(code);

}int main()

c語言中括號運算子的問題

24樓:匿名使用者

(a=10,b=a+5)

這是一個逗號表示式,它將以逗號為界,從左到右依次計算每個表示式的值,最後返回最右邊的表示式的值,具體到這個式子就是:

先計算a=10,然後再計算b=a+5,所以b=10+5=15,並且最後返回b的值,也就是15

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

第一問 假設x為0 則!x為1,而!x 即!1 所以結果為0,反之,x為1時結果也為1,即 是判斷x的值是否為 1等價,所以應該結果為c,布林型的話 答案也可以是b 第二問 這是個優先順序的問題 等符號運算是自右向左執行的,優先順序小於加減乘除,執行後賦值,因此a a a a 為 a為 6 2.a ...

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語言位運算的問題

x 11 0000 1011 x 1111 0100 負數以補碼方bai式儲存的du,要換算成十進位制,先zhi把1111 0100取反 除開dao 符號回位 答再加1,這時為1000 1100 1000 1011 1 為 12。大概是這樣,你再具體查下補碼 int裡第一位是符號位,0代表正數,代表...