-4

好的,所以这是我必须做的,但我不能让它工作:

a) 改为浮点数而不是整数。并将 0.3 作为起始值分配给“u”。

b) 使用双精度而不是整数。将 0.3x10^45 指定为“u”的起始值。

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);
}

如果有人可以修改我的代码来执行上述操作,我将不胜感激。谢谢

4

1 回答 1

0

这个问题正在测试一些东西。首先你知道你的类型吗?您应该知道浮点数用 声明float,双精度数用声明double,字符用声明char

其次,您应该知道如何将文字值分配给这些不同的类型。对于浮点文字,您可能需要使用0.3f,因为没有该后缀,默认情况下它将是双精度的(尽管在这种情况下它不会有任何区别)。对于双精度数,您应该知道如何使用科学记数法(字面值应该是0.3e45)。我希望字符文字对你来说是相当明显的。

printf最后,您应该知道格式规范中使用的各种类型字符。单精度和双精度数字都使用相同类型的字符,但您可以选择或%e,具体取决于您的要求。我倾向于将其用作一个很好的通用选择,但我的猜测是他们希望您使用双精度数(因为这会强制使用科学记数法)并且可能用于浮点数 - 这取决于您所学的内容。对于您使用的字符。%f%g%g%e%f%c

另外,请注意,您应该只替换%d格式字符串中的类型字符。这些%X值用于输出指针 (&upu) 的十六进制表示。指针不会仅仅因为所指向的类型发生变化而变为浮点值或字符 - 当您将地址写出时,它始终是整数。

于 2013-07-12T09:44:57.323 回答