冒险岛无名村任务流程:诚请高手帮忙解题(C语言)

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 12:31:23
近日翻看大一学的C语言教材时,发现几个问题,希望热心的同志帮帮忙,解决一下,因为不久就考试2级了.
问题:
No.1:main()
{ long y=-43456;
pringf("y=%08ld,y);
}
答案得出来是 : -0043456 , 请问程序里8l前面的0的作用,跟答案中前面加上的两个0有何关系,为什么?
No.2:#include <stdio.h>
main()
{ int a;float b,c;
a=12;b=365.2114;
c=(float)a+b;
printf("a=%d,b=%f,c=%f\n",a,b,b);
}
这题答案是: a=12,b=365.211395,c=377.211395
请讲解一下,为什么原来的365.2114变成了365.211395而不是365.211400
No.3:scanf函数里面说了一句话,"对于实型数据,scanf不允许用精度控制",我理解成:因为scanf函数形式:scanf("格式控制字符串",地址列表).所以键入的数据必须按照格式控制字符串所要求的格式键入,然后保存在地址列表里边.所以对于一个正确的scanf函数,前面要求什么格式,我键入的格式就是什么格式,但这里有个题跟我想的有点矛盾:
scanf(" _%f_%e",&x,&y) ,它键入的x,y分别为:8.5 71.82 ,我认为f应该对应6位小数,而它键入的是8.5?e对应71.82我觉得也不对.请教一下,谁帮我讲解一下,不胜感激!
另外,我对了数据类型理解的不够,谁能帮我讲讲,比如说:普通整型,长整型,短整型,无符号整型,双精度实型,单精度实型这些是如何区分的?
对于问题一,为什么前面是两位0,请说得详细点好吗?分就给你了,解答了这个问题

问题一:8表示输出至少占八位,而前边的0表示不足八位的用0补齐,超过八位的按照实际输出

问题二:http://zhidao.baidu.com/question/10527679.html
你可以用VC++6.0的调试过程清楚的看到每一个值的变化

如果把float改为double,输出就是365.211400

问题三:"对于实型数据,scanf不允许用精度控制"并不是指输入必需一致

对于几种变量的区别,推荐运行sizeof()函数看看

-0043456 , 请问程序里8l前面的0的作用,跟答案中前面加上的两个0有何关系,为什么?

8是表示占8位输出 如果数字的位数比8大就按实际输出 如果小就要占位 0就是在多余的位上输出0

问题 2 http://zhidao.baidu.com/question/10527679.html