2013-07-11 114 views
-4

好吧,這是我必須做的,但我不能使它的工作:雙精度C語言編程指針

a)更改爲浮動而不是整數。並將「0.3」作爲起始值賦予「u」。 b)使用雙精度而不是整數。將「u」的起始值設爲0.3x10^45。

c)使用字符而不是整數。爲「u」分配起始值爲'C'。

#include <stdio.h> 
main() 
{ 
int u = 3; 
int v; 
int *pu; 
int *pv; 
pu = &u; 
v = *pu; 
pv = &v; 

printf("\nu=%d  &u=%X pu=%X *pu=%d", u, &u, pu, *pu); 
printf("\n\nv=%d &v=%X pv=%X *pv=%d", v, &v, pv, *pv); 
} 

如果有人可以修改我的代碼來完成上述任務,我將非常感激。謝謝

+0

您的預期結果是什麼?你有什麼?這段代碼崩潰了嗎? –

+0

我想修改它不會期望某些結果,但要證明使用雙精度 –

+0

如果您沒有預期的結果,那麼您如何評估代碼的「正確性」? –

回答

0

這個問題正在測試一些東西。首先你知道你的類型?您應該知道浮點數被聲明爲float,雙精度數字爲double,字符爲char

其次,您應該知道如何爲這些不同類型分配文字值。對於浮點數字,你可能會使用0.3f,因爲如果沒有這個後綴,默認情況下它會是雙精度的(儘管在這種情況下它不會有任何區別)。對於雙數據庫,您應該知道如何使用科學記數法(字面值應爲0.3e45)。我希望的字符是相當明顯的。

最後,您需要知道printf格式規範中使用的各種類型字符。單精度和雙精度數字都使用相同類型的字符,但根據您的要求,您可以選擇%e,%f%g。我傾向於使用%g作爲一個很好的通用選擇,但我的猜測是他們期望您使用%e作爲double(因爲這會強制使用科學記數法)並且可能使用%f作爲浮點數 - 這取決於您所學的內容。對於您使用%c的字符。

此外,請注意,您應該只替換格式字符串中的%d類型字符。 %X值用於輸出指針的十六進制表示(&upu)。一個指針不會因爲被指向的類型改變而改變爲浮點值或字符 - 當你寫出它時,地址總是一個整數。