求教 感觉自己的脑子不够使了

活宝_往昔 2013-05-07 09:46:10
如何将一个10进制的数字的各位取出 例如一个4位数5468如何将它的各位取出。。。又或者将一个更高位数的数字的各位取出 。。。有什么算法吗 ?还是老老实实的不停的进行除和取余操作。。。。。。。。。。。。自己想不出来,,有什么好的方法吗
...全文
335 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2013-05-08
  • 打赏
  • 举报
回复
1、取余数,除法; 2、转成字符串
starforce08 2013-05-08
  • 打赏
  • 举报
回复
十进制确实没什么好方法,用不了位运算。
就是那个党伟 2013-05-08
  • 打赏
  • 举报
回复
楼上各位建议都不错 10进制取各位 做个while循环,代码很简介的
buyong 2013-05-08
  • 打赏
  • 举报
回复
1 老老实实的不停的进行除和取余操作 2 sprintf(s,"%s", num);
示申○言舌 2013-05-08
  • 打赏
  • 举报
回复

void QuGeWei( int n )
{
    int p = n;
    while( p >= 10 )
    {
        printf( "%d", p%10 );
        p = p/10;
    }
}
活宝_往昔 2013-05-08
  • 打赏
  • 举报
回复
引用 8 楼 wangboyue 的回复:
可以转换为字符型然后按位取,不过还是觉得用除法、取余比较好
怎么用数组做 求具体点的解释
活宝_往昔 2013-05-08
  • 打赏
  • 举报
回复
引用 20 楼 sd6866334 的回复:
[quote=引用 19 楼 sd6866334 的回复:]

#include <stdio.h>

int main()
{
	int n;
	printf("请输入数字:");
	scanf("%d", &n);
	printf("\n");
	while(1)
	{
		int temp = n % 10;
		n = n / 10;
		if(temp > 0 || n > 0)
		{
			printf("%d ", temp);
		}
                else
                {
                        break;
                }
	}

	return 0;
}

差了一个break;哈[/quote] 我们么有学C语言,有些语法看不懂啊 能不能用C++写个 再想问问能不能解释下你用C写的这个程序 谢谢啦
wizard_tiger 2013-05-08
  • 打赏
  • 举报
回复
感觉变成字符串还不如除和取余呢,至少要转换成字符串,最后还要转换回来。
wangboyue 2013-05-08
  • 打赏
  • 举报
回复
可以转换为字符型然后按位取,不过还是觉得用除法、取余比较好
乱舞大螃蟹 2013-05-08
  • 打赏
  • 举报
回复
引用 19 楼 sd6866334 的回复:

#include <stdio.h>

int main()
{
	int n;
	printf("请输入数字:");
	scanf("%d", &n);
	printf("\n");
	while(1)
	{
		int temp = n % 10;
		n = n / 10;
		if(temp > 0 || n > 0)
		{
			printf("%d ", temp);
		}
                else
                {
                        break;
                }
	}

	return 0;
}

差了一个break;哈
乱舞大螃蟹 2013-05-08
  • 打赏
  • 举报
回复

#include <stdio.h>

int main()
{
	int n;
	printf("请输入数字:");
	scanf("%d", &n);
	printf("\n");
	while(1)
	{
		int temp = n % 10;
		n = n / 10;
		if(temp > 0 || n > 0)
		{
			printf("%d ", temp);
		}
	}

	return 0;
}

zaixiankaifa 2013-05-08
  • 打赏
  • 举报
回复
10位取余是个好办法
赵4老师 2013-05-08
  • 打赏
  • 举报
回复
int d=5468;
char s[11];
printf("%d %d %d %d\n",d/1000,(d/100)%10,(d/10)%10,d%10);

sprintf(s,"%d",d);
printf("%d %d %d %d\n",s[0]-'0',s[1]-'0',s[2]-'0',s[3]-'0');
「已注销」 2013-05-08
  • 打赏
  • 举报
回复
char cr[20] = {0}; int i = 123456; sprintf_s(cr,"%d",i); for (int j=0; j<20;++j) { if (cr[j] == 0) break; cout<<cr[j]; }
sniffer12345 2013-05-08
  • 打赏
  • 举报
回复
你这要求我记得以前好像弄过 好像是通用CRM算法中有一个高效的实现
自信男孩 2013-05-07
  • 打赏
  • 举报
回复
貌似现在只用到了定义法,就是除和取余。
老王爱上猫 2013-05-07
  • 打赏
  • 举报
回复
不想除,就转成字符串吧..
折翼断JJ 2013-05-07
  • 打赏
  • 举报
回复
5468%1000=5; (5468-5000)%100=4; (5468-5000-400)%10=6; (5468-5000-400-60)=8;
BeanJoy 2013-05-07
  • 打赏
  • 举报
回复
转换成字符串,剩下的就会了吧。
hugett 2013-05-07
  • 打赏
  • 举报
回复
除和取余有什么不好吗。。
加载更多回复(1)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧