给定任意大小的一个数,怎么样最快的取出它的各位?

icelover 2003-04-11 05:17:08
利用tc作为编程环境,给定一个任意长度的数(在所定义的类型所能表示的范围之内),有些什么方法可以取出它的每一位,其中那种方法最快呢?
谢谢
...全文
104 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
DavidBone 2003-04-14
  • 打赏
  • 举报
回复
ding
w803007 2003-04-12
  • 打赏
  • 举报
回复
怎么样把float型转换成字符型?

yaos 2003-04-12
  • 打赏
  • 举报
回复
比如
m的n位,进制k

temp = 1;
for (i=0;i<=k;i++)
temp*=k;
temp1=m%temp;
temp=temp/k;
temp=temp1/temp;

输出temp
xdspower 2003-04-12
  • 打赏
  • 举报
回复
n=M%10;
m=M/10;
再做个循环就得了,循环终止条件是m==0;
willbin 2003-04-12
  • 打赏
  • 举报
回复
n=M%10;
m=M/10;
再做个循环就得了.
mr_oydy 2003-04-11
  • 打赏
  • 举报
回复
来个一预处理版本吧 :)

/* TC 2.0 */
#include <stdio.h>

#define MAKE_XNUM(s,n) XNUM(s,n)
#define XNUM(s,n) *(((#s)+sizeof(#s))-n-1)
#define NUM 7854

void main(){
clrscr();
printf("%c\n", MAKE_XNUM(NUM, 2)); // 取十位
printf("%c\n", MAKE_XNUM(94560, 4)); // 取万位

}
zidanjxnu 2003-04-11
  • 打赏
  • 举报
回复
呵呵
我觉得还是用那个字符串的好
把它当作一个字符处理!不过楼上的那个while语句应该改为for语句!
enova 2003-04-11
  • 打赏
  • 举报
回复
取2,8,16进制的每一位我还懂,10进制嘛,呵呵……
enova 2003-04-11
  • 打赏
  • 举报
回复
移位运算符是对2进制而言的,移位了只是相当于*2^i 或 /2^i方啊
enova 2003-04-11
  • 打赏
  • 举报
回复
取模;换成字符串,再取出特定位置的字符
上面都贴了(来晚了~)
来个递归的:
void aa(int x) {
if (x>10) {
aa(x/10);
cout<<(x % 10);
}
else cout<<x;
}
void main()
{
unsigned long x;
cin >> x;
aa(x);
}

移位?考虑一下
icelover 2003-04-11
  • 打赏
  • 举报
回复
能不能用移位做
liqn 2003-04-11
  • 打赏
  • 举报
回复
你说的任意大小的一个数?
那到底是多大?
如果说不用计算机的话,
用眼睛看那不是很快!
你说呢?
不过真要用计算机的话,
就求余吧?
我反正是这么做的。

谢谢观看!
junyuwang20 2003-04-11
  • 打赏
  • 举报
回复
有小数时只要忽略小数点就行了
junyuwang20 2003-04-11
  • 打赏
  • 举报
回复
假设输入为i:

char a[20];
int len;
int j;
memset(a, 0x00, sizeof(a));
sprintf(a, "%d", i);
len = strlen(a);
while(j = 0; j < len; j++)
{
printf("%c", a[j]);
}

ok了
huibird 2003-04-11
  • 打赏
  • 举报
回复
如果有小数,例如23.1472,那用上面的可以吗?
NowCan 2003-04-11
  • 打赏
  • 举报
回复
int a;

cin>>a;

while(a)
{
cout<<a%10;
a/=10;
}
「已注销」 2003-04-11
  • 打赏
  • 举报
回复
大哥用“模”%啊!!!我记得我的一本C++上有的,现在没在身边了。
point_to 2003-04-11
  • 打赏
  • 举报
回复
#include <iostream>
#include <math.h>
using namespace std;
int fn( int &a)
{
int i=10;
int mm=0;//判断有几位数!
int sum=0;
while(a/i)
{i*=10;
mm++;}

for(i=1;i<=mm+1;i++)
{
sum+=a%10;
cout<<a%10<<endl;
a/=10;

}

return sum;
}


void main()
{
int a;
cout<<" input a:";
cin>>a;

//while ( a>10)
a=fn(a);
cout<<a<<endl;//位数和

}
Januarius_ 2003-04-11
  • 打赏
  • 举报
回复
自己手动计算吧,数再大也不会太慢的
比如104
百位 104/100
十位 (104 - 104/100*100)/10
个位 (104-104/100*100-(104 - 104/100*100)/10*10)/1
以次类推

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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