1樓:張三**
分類: 電腦/網路 >>程式設計 >>其他程式語言。
問題描述:1.在c語言中,char型資料在記憶體中的儲存形式是___
a)補碼 b)反碼 c)原碼 d)ascii碼。
答案是d,但是在某些資料中說到「資料在記憶體中是以補碼形式存放的」,這使我有些迷惑不解,請各位不吝指教。
2.表示式18/2*sqrt(的資料型別為___
a)int b)float c)double d)不確定。
答案是c,我不清楚,為什麼不能是b選項。
3.已知 int k=7,x=12
求:1. x%=(k%=5)
2. x%=k-k%5
3. x%=(k-k%5)
4. (x%=k)-(k%5=5)
4.設變數n為float型,m為int型,則以下能實現將n中的數值保留小數點後兩位,第三位進行四捨五入運算的表示式是___
a) n=(n*100+
b) m=n*100+,n=m/
c) n=n*100+
d) n=(n/100+
答案是b,請問a,c,d錯在**。
謝謝各位前輩指教,後輩謝謝了。
解析: 1 概念模糊。補碼,反碼,原碼; 在彙編書上稱為機器數的「碼制」,大部分機器使用補碼制。
ascii碼其實是一種字元**,通用的。一臺計算機的碼制是不能改變的,他是計算機的硬體屬性。ascii碼是軟體屬性,在ascii碼中,32h代表的是空格鍵,你也可以設計一種介面程式,讓32h代表別的字元。
c語言中,char的儲存型別是:「佔用一個位元組的型別」(就叫位元組型吧),機器數的碼制是補碼,儲存的數值所代表的字元符合ascii規則。
2 sqrt()函式的儲存型別是double型。(可檢視數學函式表)
3 這個沒營養哦,(1)x=0 k=2 (2)x=0 k=7 (3) x=2 k=7 (4) error!
4 建議你複習資料型別一章吧,a 的效果僅僅是數值加大了,b 的正確,輸出n仍然有六位小數點,但是,充千分位開始,後面的都是零。
c 明顯錯誤,數值n很明顯的加大了100多倍。
d 數值加大了。
功夫呀。
c語言問題,求大佬解答
2樓:細雨在微笑
【示例**如下,用 中文c 編譯】
#定義 最大輸入個數 10000
整數型別 甲,個數=0, 輸入數[最大輸入個數],統計=0;
小數型別 和=0,平均值;
重複直到 甲 等於 0;
圖形輸出詞語(「輸入的正整數個數為:」)
圖形輸出整數(個數,10);圖形換行();
平均值 = 和 除 個數;
圖形輸出詞語(「輸入正整數的平均值為:」)圖形輸出小數(平均值);圖形換行();
步進迴圈(甲=0;甲《個數;甲++ 如果( 輸入數[甲] >平均值 ) 統計++;
圖形輸出詞語(「大於平均值的正整數個數為:」)圖形輸出整數(統計,10);圖形換行();
【執行 結果如下圖】
請教c語言的問題
3樓:紀景明枚書
既然sum_power(n,k)=pow(n,k)+sum_power(n-1,k)
你至少要定義sum_power(0,k)及sum_power(1,k)兩個初值。
另外你的k是什麼?好象沒有意義喲。
求高手解答,c語言問題
4樓:很浪的碰碰車
當使用者按下某個鍵時,1.鍵盤會檢測到這個動作,並通過鍵盤控制器把掃描碼(scan code)傳送到計算機;
鍵盤掃描碼跟具體的硬體有關的,不同廠商對同一個鍵的掃描碼有可能不同。
2.計算機接收到掃描碼後,將其交給鍵盤驅動程式;
3.鍵盤驅動程式把這個掃描碼轉換為鍵盤虛擬碼;
虛擬碼與具體硬體無關,不同廠商的鍵盤,同一個鍵的虛擬碼總是相同的。
3.然後,鍵盤驅動程式把該鍵盤操作的掃描碼和虛擬碼以及其它資訊傳遞給作業系統;
4.作業系統將獲得的資訊封裝在一個鍵盤訊息中,並把該鍵盤訊息插入到訊息列隊。
5.通過windows的訊息系統,該鍵盤訊息被送到某個視窗中;
6.視窗所在的應用程式接收到訊息後,可以瞭解到有關鍵盤操作的資訊,然後決定作出一定的響應。
37,38,39,40就是ascii碼,也就是虛擬碼。而且方向鍵值是有兩個,第一個是有符號數-32,你第二張圖裡的判斷ch==224,判斷是它的無符號數,跟-32是一樣的。第二個就是它的真實鍵值,你可以用下面的**檢視(c++)
int main()
return 0;
}至於為什麼取出的是72,75,77,80應該是直接取了掃描碼,我用其他程式語言測了下,取出來的只是ascii37,38,39,40。如果想那樣呼叫就重新定義一下吧。
個人理解,僅供參考。
5樓:匿名使用者
這個問題牽涉到鍵盤的掃描碼和windows虛擬鍵碼的概念。
對xt鍵盤以及之後的相容鍵盤而言,0x48,0x4b,0x4d,0x50分別是上、左、右、下方向鍵的鍵盤掃描碼(在早期linux核心程式中可以看到)。該值與具體的硬體裝置相關,例如xt機鍵盤與at機鍵盤的差異就很大;
而vk_up,vk_left,vk_right,vk_down則是在windows上層應用程式中使用的虛擬鍵碼,它掩蓋了底層可能由不同硬體帶來的編碼差異,使得上層可以使用統一的鍵盤編碼。
另外: 0x48 = 72, 0x4b = 75,0x4d = 77,0x50 = 80
0x25 = 37,0x26 = 38,0x27 = 39,0x28 = 40
這只是16進位制值與10進位制值之間的轉換。
6樓:匿名使用者
恩!其實這些數是相同的!
我現在不方便模擬!不過我認為:
你的前倆個**裡的是鍵盤上的上下左右鍵,上面兩幅圖的數值第一幅是16進位制的,第二幅是10進位制的。
而你的下面倆張**是鍵盤上的w,s,a,d!第三幅是10進位制的,第四幅是6進位制。
7樓:仲奇正
0x代表16進位制,也就是說0x48 = 72,0x50 = 80,0x4b = 75,0x4d = 77,;
而vk_up、wk_down等等,是巨集定義,定義即為對應的數字。如果你要用的話,建議你去了解一點win32程式設計的東西,其中的鍵盤訊息有講這些。
8樓:匿名使用者
0x代表16進位制,換算成十進位制之後數字就對上0x25=37,0x48=72
9樓:magic_旭
肯定以中定義的為準啊,0x25它是一個十六進位制數,對應的十進位制也就是37,
求助一個c語言問題
10樓:
a+k<=i+k 是一個布林值(邏輯值)
若 a+k<=i+k,則 i=1;否則 i=0;
當 i 為數值變數,i = 布林值,布林值自動轉換為 0 or 1
a 沒有錯。
c 錯a=a++,i++;
作為賦值語句,逗號「,」應為分號「;」
作為變數定義,a++未知。
c語言的問題,求助解答。
11樓:★徐笑人生
1. (z>=y>=x)? 1:0
z>=y就是對的,所以為1 ,然後1>=x不對,所以為0,所以整個表示式為0
2. z>=y&&y>=x
z>=y對為1 ,y>=x對為1,1&&1,所以答案為1,a
12樓:傲天雪鷹
答案是:a
(z>=y>=x)?1:0即(1>=x)?1:0 所以答案是 0
>=的優先順序大於&& 所以1&&1 答案是:1所以選a. 01
13樓:匿名使用者
(z>=y>=x)? 1:0
結果為1.若z>=y>=x為真,則得1,否則得0.
z>=y&&y>=x
結果為1。 z>=y和y>=x都為真,&&為與運算。都為真才為真(即1),否則0。
14樓:匿名使用者
b (1)首先判斷()裡的真假,也就是1或0,是1就選第一個,0就是第二個。
(2)分別判斷 z>=y、y>=x的值,都是1就輸出1,其他就是0。
加分啊!!!
15樓:匿名使用者
選az>=y是邏輯表示式,其值只能為1或0z>=y值是0
0>=x值是0
&&運算是先運算左邊值,如果左邊值是1,則再運算右邊值;否則直接返回0
請教一個c語言問題,求高手指教 40
16樓:匿名使用者
思路基本沒錯,**也基本正確,個別地方出錯了。
1、由於acm是先全部輸入再統一輸出,你用一個max來儲存肯定有問題,可以需要事先宣告一個陣列來儲存結果。下面**裡是用動態記憶體申請陣列。
2、就是排序比較的時候,你有個問題,估計是手誤:if(i!=t),實際上應該是if(j!
=t)。因為i是外層迴圈,j才是你要排序的迴圈。 這個手誤導致的結果比較嚴重,範例輸出是沒問題,但其它資料會有問題。
我驗證了好幾組資料基本沒問題。下面把修改的地方都標出來了,你可以參照一下。
#include
#include
#include
int main()
}for(j=0;jfor(k=j+1;kif(strstr(st[k],st[j])=st[k])
}for(i=0;ifree(output);/修改,釋放記憶體。
return 0;}
17樓:匿名使用者
好的 我等會過來ac他。
明天吧 我等會要睡覺了。
18樓:延鑫虎清華
都是跟break的吧,若跟continue的話就是結束本次迴圈,繼續執行下一次迴圈。
19樓:仁斯實嘉澤
非常抱歉,我的看書不仔細讓熱心的大家費心了!事實是這樣的,case語句如果被含在一個迴圈體中,後面是可以跟continue的,意思還是結束本次迴圈。因為用手機上網,不方便發程式舉例子了。
謝謝大家!如果還有什麼問題,很高興和大家繼續**!
c語言程式設計高手請進謝謝,C語言程式設計,高手請進,謝謝
根據樓上提供的進行優化,已經除錯成功的 去掉了註釋,考慮到各個機器的輸入法問題,所有的printf 內容都換成英文 include include include include define null 0 define len sizeof struct student define file d...
c語言程式設計問題,高手請進
倒數第7行 有錯誤 定義的是i 不是y int s 1,i 我看了一下 你的 你的不完善 如果是2進位制 只能表達從 1 255 之間的數。如果是三進位制 也只能表達 0 19682 之間的數。 十進位制轉二進位制,知道演算法就很簡單啊 你想問什麼,能否具體點? 呼叫函式怎麼形參有一個y 函式體內又...
C語言的幾個問題,c語言的幾個問題
分析如下 1.用exit語句種植執行報告錯誤。優點 處理簡便,直接終止程式,並可以將錯誤通知給作業系統。缺點 無論在哪個函式中執行,程式會直接終止,沒有機會對錯誤進行進一步處理。2.以函式的返回值區別正確返回或錯誤返回。缺點 函式多層呼叫時,需將錯誤資訊層層傳遞。3.設定一個整形變數的函式引數以區別...