当前位置: 代码迷 >> C语言 >> 给一个不多于5位的正整数,要求:分别输出没一位数字
  详细解决方案

给一个不多于5位的正整数,要求:分别输出没一位数字

热度:441   发布时间:2007-04-23 16:07:22.0
给一个不多于5位的正整数,要求:分别输出没一位数字
给一个不多于5位的正整数,要求:
分别输出没一位数字

问下这道题的算法...
搜索更多相关的解决方案: 整数  数字  输出  

----------------解决方案--------------------------------------------------------
具体自己想,用/和%运算即可...

呵呵~有些东西还是自己解决的好~总之就这两种运算就能解决问题
----------------解决方案--------------------------------------------------------
char *itoa(int value,char *string,int radix)
将整数value转化为以radix基数的字符串,这个字符串存入到string中.
例如:
itoa(100,string,10);string中的结果:100
itoa(100,string,8); string中的结果:144
itoa(100,string,16); string中的结果:64
itoa(100,string,2); string中的结果:1100100

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

试一试这个函数.


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

谢谢2楼的,我想我知道怎么算了,谢谢


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

这个函数不大懂?????????????


----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{ int num,i,j=10,k=1,sum=0,a,bit=1;//bit为数的位数

scanf("%d",&num);

a=num;

while((a=a/10)!=0)
bit++;

for(i=0;i<bit;i++)
{ a=num%j;
a=a/k;
j*=10;
k*=10;
sum=sum+a;
}
printf("the sum is %d ",sum);
getch();
}


----------------解决方案--------------------------------------------------------
以下是引用wen1000在2007-4-23 17:54:46的发言:

这个函数不大懂?????????????

就是把整型数据转化为字符串.


----------------解决方案--------------------------------------------------------
main( )
{
long a;
int digits ,a5,a4,a3,a2,a1;
printf("\nInput a number(<100000) ");
scanf("%ld",&a);
if(a/10000>0) digits=5;
else if(a/1000>0) digits=4;
else if(a/100>0) digits=3;
else if(a/10>0) digits=2;
else digits=1;
printf("The number %ld contains %d digits",a,digits);
printf("\n");
switch(digits)
{
case 5:printf("%d ",a5=a/10000);
case 4:printf("%d ",a4=a%10000/1000);
case 3:printf("%d ",a3=a%1000/100) ;
case 2:printf("%d ",a2=a%100/10);
case 1:printf("%d ",a1=a%10);
}
printf("\n");
switch(digits)
{
case 5:printf("%d %d %d %d %d",a1,a2,a3,a4,a5);break;
case 4:printf("%d %d %d %d ",a1,a2,a3,a4);break;
case 3:printf("%d %d %d ",a1,a2,a3);break;
case 2:printf("%d %d ",a1,a2);break;
case 1:printf("%d ",a1);
}
printf("\nEnd");
}
试一试这个嘛,我们刚刚也在做这个程序,我用了这个,感觉不错
----------------解决方案--------------------------------------------------------
以下是引用限量版猪头在2007-4-23 18:17:10的发言:
#include<stdio.h>
void main()
{ int num,i,j=10,k=1,sum=0,a,bit=1;//bit为数的位数

scanf("%d",&num);

a=num;

while((a=a/10)!=0)
bit++;

for(i=0;i<bit;i++)
{ a=num%j;
a=a/k;
j*=10;
k*=10;
sum=sum+a;
}
printf("the sum is %d ",sum);
getch();
}

我的方法是正解~而且可以大于5位,只要把输入的数类型改成double就可


----------------解决方案--------------------------------------------------------
  相关解决方案