簡單的C語言小問題,二級筆試的一道題

2022-11-18 04:36:30 字數 3276 閱讀 2034

1樓:黃邦勇帥哥哥

這是什麼題,可能與編譯器有關吧,我使用vc++2005,輸出的是後面的@@@@@,不會輸出ssss,而且也得到b+c=0,因為直接輸出b+c就是0。如果要說輸出前面的ssss的話,就只有一種可能,就是-1被表示為補碼,然後再與1相加,結果就有可能不是0

2樓:匿名使用者

if(a=b+c)

if中應該為邏輯式

改為if(a==b+c)

3樓:匿名使用者

我在vc++6.0中編譯執行,結果是@@@@@,你的理解是正確的

4樓:匿名使用者

if(a=b+c)

應該是if(a==b+c)

5樓:匿名使用者

這位同學,讓我們先看看if(a=b+c),這個語句的意思是把b+c的值賦值給a。

6樓:匿名使用者

這題沒有錯誤。答案sssss是正確的。注意if(a=b+c)和if(a==b+c)是不同的。

括號裡面if(a=b+c)的值是1,即輸出sssss。若if(a==b+c)裡面的值也是1即a==b+c 2==1+1。在c語言中『=』和『==』是不同的。

『=』表示賦值『==』表示我們數學中的等號。

7樓:匿名使用者

沒搞錯吧,我執行的結果是@@@@@啊

8樓:銀一某男

不解...我也要考二級,...週六呢

一道計算機二級c語言真題 求解 如圖 這是筆試題 所以不要直接給我個答案 說讓我執行程式

9樓:匿名使用者

這個題的考點就是 移位運算子('<<' 和 '>>')<< 是左移運算子

>> 是右移運算子

運算子後的數字就表示需要移動的位數

比如,a<<2,就表示把a的2進位制值向左移動2位。

簡單的說,每向左移動一次,相當於在原來的十進位制值乘以2。

因此這個題,相當於將a向左移動3位,答案就是12*2*2*2=96

10樓:百味人生獨自行

a<<2 表示a 左移兩位,數值上相當於a的十進位制數乘以4

a<>n 數值上相當於a的十進位制數除以2的n次方

所以答案樓主自己算吧。。。

11樓:匿名使用者

a的二進位制為 0000 0000 0000 1100

左移2位後: 0000 0000 0011 0000

左移1位後: 0000 0000 0110 0000,十進位制即為:96

一道計算機二級c語言真題 求解 如圖 這是筆試題 有答案了 求過程

12樓:匿名使用者

大小寫有誤,定義變數的時候應該是小寫i。

第一個迴圈把n全置零。

後兩個迴圈巢狀,但是n一共就2個元素,實際只執行了4次。

n[0]=n[0]+1 → n[0]=1

n[1]=n[0]+1 → n[1]=2

n[0]=n[1]+1 → n[0]=3

n[1]=n[1]+1 → n[1]=3

這樣看,「好像」結果是3,但是……注意for迴圈的求值過程,執行最後一次i++後,i=2,不符合迴圈條件所以i迴圈結束,這時i=2,也就是printf輸出的是n[2],但n只有0、1兩個元素,所以這段程式的輸出結果不確定,正確的應該是printf("%d\n",n[--i]);或者i-1也行。

也就是說,題錯了 ╮(╯_╰)╭

13樓:

你第二行打錯了 i 應該小寫i,不然程式就錯了

最後i=2,n[i]應該為空字元;

我用tubo c驗證了,最後列印出來的是-38;

一道計算機二級c語言真題 求解 如圖 這是筆試題 所以不要直接給我個答案

14樓:匿名使用者

c語言對邏輯短路的定義:

(表示式1)&&(表示式2) 如果表示式1為假,則表示式2不會進行運算,即表示式2「被短路」

但如果表示式1為真,則表示式2同樣會進行運算(表示式1)||(表示式2) 如果表示式1為真,則表示式2不會進行運算,即表示式2「被短路」

但如果表示式1為假,則表示式2還會進行運算a=1,b=2;

c=a++||b++;

由於a++>0,為真,可以看出b被短路,所以結果b=2.a=2.

如若改一下

a=1,b=2;

c=a++&&b++;

結果b=3.a=2.

簡單理解就是有時候系統執行量是很大很大的,為了減少執行時間,省去了後面的運算。

希望能幫到你理解

15樓:

在c標準中,有這樣的規定:

在「exp1 && exp2」 中如果exp1為false,則不再計算exp2的值

在「exp1 ¦ ¦ exp2」 中如果exp1為true,則不再計算exp2的值

這種機制被稱為」邏輯短路「,一是為了優化,更重要的是為了提高**的可移植性,避免產生二義性

16樓:匿名使用者

短路法則,a++為真就不會計算後面的b++,所以b還是2

計算機二級考試,c語言。 最後一道題,程式結果顯示正確,但是每次運

17樓:匿名使用者

一般出現這種情況,都是由於有某一個或幾個應該賦初始值的變數沒有賦值造成的。也可能是二維(或多維)陣列執行時超出陣列界限造成。還有其它可能性,要看你的具體程式才能確定到底是**出錯了。

18樓:殘若惜雨

正常是沒有提示的,看看提示情況再修改一下程式

全國計算機二級c語言考試最後一道程式設計題,因為題目看少了一個字所以寫錯了一句話,最後的結果也錯了,但

19樓:岔路程式緣

給不給分或者給分的多少取決於打分標準的規定。

一般考試都有一個打分標準,一般來講綜合題目可以分步給分(詳細給出做到哪一步給多少分)。

閱卷老師都是根據打分標準的規定給分。

所以,這也不隨閱卷老師的心情給分。——如果打分標準規定「最後結果不正確不給分」也是有可能的。

所以,我等人也不能確切告訴你到底給不給分,大家都是根據自己的經驗猜。

我的建議是:隨它去吧,別太糾結了。

20樓:匿名使用者

會帶小部分或者一半的分吧應該

C語言的小問題,C語言的一個小問題。

s格式符表示輸出的是字串,後面對應的引數用字元陣列或是字元指標,c則是輸出單個字元,引數為該字元的ascii碼。char a 12 是字元陣列,賦值 hello world 後成為字串,賦值後,a 0 h a 1 e a 2 l a 3 l a 4 o a 5 空格 a 6 w a 7 o a 8 ...

有關C語言的小問題,關於C語言的幾個小問題

line 69 函式showarr,parr是指向結構體的指標,你這裡要訪問的應該是它的成員陣列parr pbase void showarr struct arr parr ps1 這個問題在編譯階段通常會有警告的,因為printf格式符 d是整數,你給的parr i 跟它是不匹配的,會引起 fo...

簡單的C語言問題,C語言程式設計問題

include void swap int p1,int p2 void main 這裡用引用,p1和p2既是入參又是出參void swap int p1,int p2 執行結果如下 從錯誤提示來看,是型別不相容。這個在c裡面是合法的,算warning,但在c 中是錯誤。用gcc可以編譯過去 roo...