| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1579 人关注过本帖
标题:学习C语言,数据类型强制转换的问题
只看楼主 加入收藏
jiajia2
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-4-12
收藏
 问题点数:0 回复次数:2 
学习C语言,数据类型强制转换的问题

#include "Stdio.h"
main()
{
long int num;
int indiv,ten,hundred,thousand,ten_thousand,place;
printf("Please input the number:");
scanf("%ld",&num);
if(num>9999)
place=5;
else if(num>999)
place=4;
else if(num>99)
place=3;
else if(num>9)
place=2;
else
place=1;
printf("位数为:%d\n",place);

ten_thousand=(int)(num/10000);
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-thousand*1000-ten_thousand*10000)/100;
ten=(int)(num-hundred*100-thousand*1000-ten_thousand*10000)/10;

indiv=(int)(num-ten*10-hundred*100-thousand*1000-ten_thousand*10000);
switch(place)
{
case 5:printf("每一位数字为:%3d%3d%3d%3d%3d\n",ten_thousand,thousand,hundred,ten,indiv);
printf("反序的数字为:");
printf("%3d%3d%3d%3d%3d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4:printf("每一位数字为:%3d%3d%3d%3d\n",thousand,hundred,ten,indiv);
printf("反序的数字为:");
printf("%3d%3d%3d%3d\n",indiv,ten,hundred,thousand);
break;
case 3:printf("每一位数字为:%3d%3d%3d\n",hundred,ten,indiv);
printf("反序的数字为:");
printf("%3d%3d%3d\n",indiv,ten,hundred);
break;
case 2:printf("每一位数字为:%3d%3d\n",ten,indiv);
printf("反序的数字为:");
printf("%3d%3d\n",indiv,ten);
break;
case 1:printf("每一位数字为:%3d\n",indiv);
printf("反序的数字为:");
printf("%3d\n",indiv);
break;

}
getch();
}

这是谭浩强课本后的一个习题的源程序。这个程序的调试结果是对。
考虑到优先级的问题,类型转换运算符要比除法运算符高,因此,我加了括号。如下,蓝色的地方:
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-thousand*1000-ten_thousand*10000)/100;
ten=(int)(num-hundred*100-thousand*1000-ten_thousand*10000)/10;

在重新调试的时候,有时候就会出现问题。比如,输入12345就没有问题,输入45678就出现问题。
(win-tc 1.8调试)
不知道是怎么回事,请大侠解释一下。

[此贴子已经被作者于2007-4-12 17:52:40编辑过]

搜索更多相关主题的帖子: C语言 num place thousand 
2007-04-12 17:44
Javal
Rank: 1
等 级:新手上路
威 望:1
帖 子:108
专家分:0
注 册:2006-5-7
收藏
得分:0 
C-FREE 3.5下運行沒有問題

猝然临之而不惊,无故加之而不怒 /?spaced" target="_blank">Linux C资料
2007-04-12 18:01
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
thousand=(int)((num-ten_thousand*10000)/1000l);

加个l(小写L)试试...
不是很清楚~``

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-12 18:22
快速回复:学习C语言,数据类型强制转换的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038456 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved