C語言的題目問題,C語言題目簡單的題目?

2021-08-16 12:11:39 字數 3982 閱讀 9053

1樓:在下姓周

結果是 4

>> 是c語言中的右移運算子,它將運算元按位右移,即把低位去掉然後在高位補0或者補1

當運算元是無符號數或者正數時,高位補0; 是負數時高位補1如:無符號數 11100000 右移3位的結果為:00011100有符號數 11100000 右移3位的結果為:

11111100所以 8 也就是二進位制的 1000 >> 1 的結果為 100(高位的0省略),即十進位制的 4

另在二進位制中,每個數位的位權為2,所以右移 n 位就相當於除以 2的n次方

2樓:

輸出十進位制數 4和回車

8的二進位制是1000,在c語言中,由2(或4,由你所用的編譯器決定)位元組表示。就是說它在計算機總表示為:0000 0000 0000 1000

右移(>>)就是將概資料依次右移一位,最低位溢位(丟棄),最高位補零

以上二進位制碼右移後變為:0000 0000 0000 0100 ,也就是十進位制的4

因為右移後所有位的位權都用要有減一,由那麼原來的2^n變為2^(n-1),所以相當於除以2

相反若為左移就相當於乘以2(注意,左移時是最低位補0,最高位丟棄)

再舉個列子:9右移後得4

0000 0000 0000 1001>>0000 0000 0000 0100

(最低位丟棄)

3樓:匿名使用者

樓上正解

r>>1 這個是移位操作

4樓:匿名使用者

應當輸出十進位制數 4

8的二進位制是00001000,右移1位後,00000100,十進位制數 4

5樓:匿名使用者

>>的意思是位右移一位,要先將8化為二進位制1000,右移一位就是0100,轉化為十進位制就是4了,明白嗎?

6樓:匿名使用者

4;r>>1相當於除以2

c語言題目簡單的題目?

7樓:

定義陣列,長度必須是個確定的值,char p[n],這樣肯定不對

字元比較,,不用strcmp,這個是比較字串的,只用用if( p[i]== 'a' )這樣就可以了

str[i]是個什麼?看不出來

8樓:武聰司寇璐

要看區別直復

接,替換到語句中

制就明白了:

1,設有一以下巨集定義

#define

width

80#define

length

width+40

則執行賦值語句

v=length*20

v=?替換得:

v=80+40*20

這顯示不是你想要結果

2,設有一以下巨集定義

#define

width

80#define

length

(width+40)

則執行賦值語句

v=length*20

v=?替換得:

v=(80+40)*20

所以一看就明白結果是不一樣的。

9樓:匿名使用者

mian

else if(str[i]=='b')

else if(str[i]=='c')

}printf("%d,%d,%d",a,b,c);}

10樓:匿名使用者

#include

int main()

;while((c=getchar())!專='\n')屬r[c-'a']++;

printf("%d %d %d",r[0],r[1],r[2]);

return 0;}

11樓:青島第一仙女

?啊啊啊啊啊啊啊啊啊

12樓:匿名使用者

11111111111

c語言的問題,這道題怎麼做啊? 50

13樓:匿名使用者

考你遞迴的用法:

10送入fun(10)

void fun(int n)

n/2=5,條件為真,呼叫函式fun(5),printf("%d",10%2);被壓棧

n/2=2,條件為真,呼叫函式fun(2),printf("%d",5%2);被壓棧

n/2=1,條件為真,呼叫函式fun(1),printf("%d",2%2);被壓棧

n/2=0,條件為假,列印printf("%d",1%2);也就是1

由於棧是先進後出的,所以反相出棧,列印printf("%d",2%2);也就是0

然後列印printf("%d",5%2);也就是1

然後列印printf("%d",10%2);也就是0

所以結果為:1010

14樓:洪冷鬆

四題選項b和d明顯是相反條件啊,你只要判斷出d是等價的,b肯定就是不等價的啊。

再說題意,while( e ) 就是說只有e的值為0的時候,條件判斷結果為:false

d選項中 ( e != 0 ),當 e 的值為 0 的時候,條件判斷為假:false----等價

b選項中 ( e == 0 ), 當 e 的值為 0 的時候,條件判斷為真:true----不等價

綜上,選b

15樓:聽不清啊

這個題,就是選擇答案d。

圖中,if(n/2)其實就是等價於if(n/2!=0),考慮到n是正數,它也就等價於if(n>1)

總之,第一次呼叫,就滿足條件,進行遞迴呼叫:fun(5)…………具體見圖所示(一個紅框,就是一次函式呼叫):

依輸出的先後次序,總的輸出就是:1010

16樓:匿名使用者

fun(10);

fun: n=10, n/2不等於0成立,fun(n/2); [n/2=5]

fun: n=5, n/2不等於0成立,fun(n/2); [n/2=2]

fun: n=2, n/2不等於0成立,fun(n/2); [n/2=1]

fun: n=1, n/2不等於0不成立,printf輸出:1fun:

n=2, printf輸出:0,累計輸出:10fun:

n=5, printf輸出:1,累計輸出:101fun:

n=10, printf輸出:0,累計輸出:1010printf輸出:

換行並不是a

17樓:自我程式設計

列印1010。

這是遞迴函式每次執行到呼叫自己的時候,要等呼叫的那個執行完

才會返回繼續執行下一條語句。

也就是說

if(n/2)fun(n/2);//每一次呼叫自己的這一句執行結束,才會執行下面的列印。

printf("%d",n%2);

所以每一層都會列印自己的變數n%2的值。

而最先執行列印的是最裡一層的呼叫,整個執行過程分別是fun(10)->fun(5)->fun(2)->fun(1)。

既列印1%2,2%2,5%2,10%2,也就是1010。

18樓:夏天的小紅花

這是一個把十進位制數n轉換為二進位制數的程式,選擇答案d。程式的執行是這樣的,裡面判斷語句的功能就是說,如果n除以2的值大於0,就進行遞迴呼叫。這個語句也可以寫成為如果n大於1就進行遞迴呼叫。

等到遞迴呼叫返回時,再輸出這個n除以2的餘數,但是這個操作是要等遞迴呼叫返回後才輸出的,所以是最後一次呼叫的時候的輸出是最靠前的。這樣就實現了反向除二取餘數的功能,也就是說把n轉換為二進位制進行輸出。

C語言程式設計題目,乙個C語言程式設計題目

include int main 先乘以10000得到一bai個整數。需要du判斷是正數還是zhi 負數,執行 5還 或是 5,這dao個整數再專除以10000,即可屬得到你要求的結果了。include include double double3 double x int main double ...

C語言程式設計題目

include void main printf d d n c1,c2 main printf f n c2 我驗證過,可以。方法一 直接法 include stdio.h void main 方法二 函式呼叫法 include stdio.h int big int i,int j void m...

c語言題目請問這個結果是多少,c語言題目答案是多少

sum 0,a 1,i 1 i 8成立,開始迴圈 sum sum a sum 0 1 1 i i 2 a a i a 1 2 2 i 8成立,繼續迴圈 sum sum a sum 1 2 3 i i 3 a a i a 2 3 6 i 8成立,繼續迴圈 sum sum a sum 3 6 9 i i...