2013-07-11 82 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)。一个指针不会因为被指向的类型改变而改变为浮点值或字符 - 当你写出它时,地址总是一个整数。