| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3027 人关注过本帖
标题:[求助]潭浩强书上的题目百思不得其解啊
只看楼主 加入收藏
sunhangdick
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-19
收藏
 问题点数:0 回复次数:39 
[求助]潭浩强书上的题目百思不得其解啊

给一个不多于5位的正整数,要求:1)求出它是几位数 2)分别输出每一位 3)按逆序输出各位

#include<stdio.h>
main()
{
long int number;
int indiv,ten,hunderd,thousand,tenthousand,place;
printf("Please enter a number:\n");
printf("Please enter a number(0~99999):");
scanf("%ld",&number);
if(number>9999)
place=5;
else
if(number>999)
place=4;
else
if(number>99)
place=3;
else
if(number>9)
place=2;
else
if(number>=0)
place=1;
tenthousand=number/10000;
thousand=(int)(number-tenthousand*10000)/1000;
hunderd=(int)(number-tenthousand*10000-thousand*1000)/100;
ten=(int)(number-tenthousand*10000-thousand*1000-hunderd*100)/10;
indiv=number-tenthousand*10000-thousand*1000-hunderd*100-ten*10;
printf("Every palce is\n:");
switch(place)
{
case 5 : printf("%d %d %d %d %d\n",tenthousand,thousand,hunderd,ten,indiv);
printf("The opposite palce is\n:%d %d %d %d %d\n",indiv,ten,hunderd,thousand,tenthousand);
break;

case 4 : printf("%d %d %d %d\n",thousand,hunderd,ten,indiv);
printf("The opposite palce is\n:%d %d %d %d\n",indiv,ten,hunderd,thousand);
break;

case 3 : printf("%d %d %d\n",hunderd,ten,indiv);
printf("The opposite palce is\n:%d %d %d\n",indiv,ten,hunderd);
break;

case 2 : printf("%d %d\n",ten,indiv);
printf("The opposite palce is\n:%d %d\n",indiv,ten);
break;

case 1 : printf("%d",indiv);
printf("The opposite palce is\n:%d\n",indiv);
break;
default : printf("error");
}
getch();

}
输入数字:98765 是正确的,输出:
9 8 7 6 5
5 6 7 8 9
如果把红字的(int)强制转换符去掉结果就出现:
9 74 658 6557 3
3 6557 658 74 9
我要说的是"/"是取整数部分怎么会出现这样的情况,请大家帮帮忙~谢谢~

搜索更多相关主题的帖子: 潭浩强 number 百思不得其解 place 
2007-07-23 02:27
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 


这么简单的问题你也用这么多代码……

粗略算了下:45行代码(我佩服你的毅力)

提示:用数组来存储信息,用取模运算来得到每个位数上的值

[此贴子已经被作者于2007-7-23 4:45:24编辑过]


自我放逐。。。
2007-07-23 04:44
sunhangdick
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-19
收藏
得分:0 
2楼的,首先谢谢你的建议~我一开始考虑过取模运算然后数组正序和逆序输出,但是这样更麻烦,因为题目的给出的是 一个不多于5位的正整数,如果用数组+取模的方法的话每一个Case都要用到一个For循环和数组的正序和逆序的输出相比之下哪一个更麻烦呢?当然如果确定是5位的话你说的方法是要简便许多~这是我的观点,在这还是要谢谢你~
2007-07-23 07:01
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
以下是引用sunhangdick在2007-7-23 7:01:15的发言:
2楼的,首先谢谢你的建议~我一开始考虑过取模运算然后数组正序和逆序输出,但是这样更麻烦,因为题目的给出的是 一个不多于5位的正整数,如果用数组+取模的方法的话每一个Case都要用到一个For循环和数组的正序和逆序的输出相比之下哪一个更麻烦呢?当然如果确定是5位的话你说的方法是要简便许多~这是我的观点,在这还是要谢谢你~

要不要我写给你

我说的方法绝对可以用


自我放逐。。。
2007-07-23 07:02
sunhangdick
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-19
收藏
得分:0 
我还是要请教一下大家为什么为什么int强制转换符去掉后结果不正确?
2007-07-23 07:03
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 

优先级问题


自我放逐。。。
2007-07-23 07:09
sunhangdick
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-19
收藏
得分:0 
好吧~我看看~谢谢啦`我学习C才半年,所以还要请你多多指教啊~
2007-07-23 07:10
sunhangdick
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-19
收藏
得分:0 
优先级问题?我不懂列,希望你能说明白点好吗?谢谢~
2007-07-23 07:11
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 


我回复你的问题是因为我看你的毅力(45行代码写这么简单的程序)

由心地佩服你……

你大有前途呀……

自我放逐。。。
2007-07-23 07:13
sunhangdick
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-19
收藏
得分:0 
呵呵~这个…我们先不说这个程序的长度问题啦,你帮我解释一下那个为什么非要INT类型强制转换符,我是真的想了好就也不知道为什么啊~真的谢谢你啦~帮帮忙啦~
2007-07-23 07:16
快速回复:[求助]潭浩强书上的题目百思不得其解啊
数据加载中...
 
   



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

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