当前位置: 代码迷 >> C语言 >> [求助]潭浩强书上的题目百思不得其解啊
  详细解决方案

[求助]潭浩强书上的题目百思不得其解啊

热度:378   发布时间:2007-07-23 02:27:37.0
[求助]潭浩强书上的题目百思不得其解啊

给一个不多于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  

----------------解决方案--------------------------------------------------------


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

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

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

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


----------------解决方案--------------------------------------------------------
2楼的,首先谢谢你的建议~我一开始考虑过取模运算然后数组正序和逆序输出,但是这样更麻烦,因为题目的给出的是 一个不多于5位的正整数,如果用数组+取模的方法的话每一个Case都要用到一个For循环和数组的正序和逆序的输出相比之下哪一个更麻烦呢?当然如果确定是5位的话你说的方法是要简便许多~这是我的观点,在这还是要谢谢你~
----------------解决方案--------------------------------------------------------
以下是引用sunhangdick在2007-7-23 7:01:15的发言:
2楼的,首先谢谢你的建议~我一开始考虑过取模运算然后数组正序和逆序输出,但是这样更麻烦,因为题目的给出的是 一个不多于5位的正整数,如果用数组+取模的方法的话每一个Case都要用到一个For循环和数组的正序和逆序的输出相比之下哪一个更麻烦呢?当然如果确定是5位的话你说的方法是要简便许多~这是我的观点,在这还是要谢谢你~

要不要我写给你

我说的方法绝对可以用


----------------解决方案--------------------------------------------------------
我还是要请教一下大家为什么为什么int强制转换符去掉后结果不正确?
----------------解决方案--------------------------------------------------------

优先级问题


----------------解决方案--------------------------------------------------------
好吧~我看看~谢谢啦`我学习C才半年,所以还要请你多多指教啊~
----------------解决方案--------------------------------------------------------
优先级问题?我不懂列,希望你能说明白点好吗?谢谢~

----------------解决方案--------------------------------------------------------


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

由心地佩服你……

你大有前途呀……
----------------解决方案--------------------------------------------------------
呵呵~这个…我们先不说这个程序的长度问题啦,你帮我解释一下那个为什么非要INT类型强制转换符,我是真的想了好就也不知道为什么啊~真的谢谢你啦~帮帮忙啦~
----------------解决方案--------------------------------------------------------
  相关解决方案