江苏网友来相约

江苏的网友,不如来这里相约吧,我是江苏省海门市人,这里也许能找到你知心朋友。

103 成员713 主题4,022 回复0 张照片

高手帮助---实验二的问题

@
@南方
2001-01-10 10:31
main()
{int a,b;
float d,e;
char c1,c2;
double f,g;
long m,n;
unsigned int p,q;
a=61;b=62;
c1='a';c2='b';
d=3.56;e=-6.87;
f=3157.890121;g=0.123456789;
m=50000;n=-60000;
p=32768;q=40000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
运行结果:
a=61,b=62
c1=a,c2=b
d= 3.56,e= -6.87
f= 3157.890121,g= 0.123456789000
m=50000,n=-60000
p=32768,q=40000


把第8~13行改为:
a=61;b=62;
c1=a;c2=b;
f=3157.890121;g=0.1234567;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;

其运行结果
a=-15536,b=5536
c1==,c2=>
d=3157.89,e= 0.12
f= 3157.890121,g= 0.123456700000
m=50000,n=-60000
p=50000,q=5536
由上可见给字符型变量赋值必须用‘‘括起来,否则会出错;而a、b是带符号的整型数,它的最大范围为-32768~+32767,而现在赋给它的值超出了这个范围,也输出了错误的结果;p、q是不带符号的整型数,它的最大范围为0~65535,而给q赋的值是-60000,所以产生了q=5536的错误。

将p,q改用%o格式(八进制)输出
p=100000,q=12640
为何会出现这样的结果????
@
@南方
2001-01-10 23:54
请教高手---实验二的问题
main()
{int a,b;
float d,e;
char c1,c2;
double f,g;
long m,n;
unsigned int p,q;
scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.12f\n",a,b,c1,c2,d,e);
printf("f=%f,g=%f\nm=%d,n=%d\np=%o,q=%o\n",f,g,m,n,p,q);
}
运行,输入
61,62,a,b,3.56,-6.87,3,157.890121,0.123456789,50000,-60000,37678

运行结果:
a=61,b=62
c1=a,c2=b
d= 3.560000,e=-6.869999885559
f=3.000000,g=157.890121
m=0,n=0
p=11165,q=40

e,p,q为什么会出现这样的结果 ,请高手详细解答。



L
luck8888_cn
2001-01-11 03:06
你有几点错误!
main()
{int a,b;
float d,e;
char c1,c2;
double f,g;
long m,n;
unsigned int p,q;
printf("Input the data:\n");
scanf("%d,%d,%c,%c,%f,%f,%f,%f,%d,%d,%d,%d",
&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.6f\n",a,b,c1,c2,d,e);
printf("f=%f,g=%f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
这是我修改后的程序,你可以对照着看:
1.是double,long,unsigned在输入时还是以原来格式输入,但在输出时要以规定格式输出。
2.p是unsigned,所以不可能是负数,而你在输入时是以负数形式输入的,所以输出时会出现你所看到的情况!
3.m你定义的是long形式,然而你输入时是小数,所以在输出时会把你的小数部分截去,只留下整数部分,结果为0。
4.e的结果错误,是很正常的,因为浮点数的小数部分只能精确到小数后面6位,你超过以后系统会给你加一些数补充,前面一个数也是这样,不信你可以试试。
5.q定义的是unsigned型的在计算机中,在输入时会以内码的形式存放,所以在以十六或八进制输出时会出错,不过紧此32768特殊。但以unsigned十进制输出就没有问题了!
@
@南方
2001-01-11 03:42
多谢luck8888_cn
实验里的题目改来改去,然后让你说明错误的原因,让它搞残了,现在好了。多谢多谢!
L
luck8888_cn
2001-01-11 03:50
不用谢!你下次有什么问题可以到我的俱乐部去发表,好么?
zlj.hotclub.com.cn
N
nun
2001-01-11 04:07
luck8888_cn
你还真是内行啊,我们真是谢之不尽
*
*小幸*
2001-01-11 20:25
多谢指导
真的很感谢你的帮助。最近怎么在QQ上遇不到你了。
L
luck8888_cn
2001-01-14 06:07
不好意思
真是不好意思,这几天我哪儿的机器不能上网,对不起了!
*
*小幸*
2001-01-15 00:17
只要你能来我们大家就高兴。现在你可要来了,这里也是你的啦,也是半个主人了喽。
L
luck8888_cn
2001-01-17 17:19
我当然会来啦,要不怎么能行呢?弄不好小幸会把我加入黑名单的!呵呵!
*
*小幸*
2001-01-18 03:36
不会不会的啊。真的希望天天在这里见到你哦。
一颗牵挂的心从此无法空闲,我会等你回来的...........
江苏网友来相约
L
luck8888_cn
2001-01-18 03:39
是么?
你真的希望天天在此见到我么?
*
*小幸*
2001-01-19 05:20
当然啦,你不相信吗?
一颗牵挂的心从此无法空闲,我会等你回来的...........
江苏网友来相约
L
luck8888_cn
2001-01-20 20:34
相信!
我当然相信你的话了,我也希望在此看到你啊!
1 / 1

登录后回复。