一道北京某公司的招聘测试题

huailairen 2004-08-08 09:11:42
做一个8进制到10进制的转换函数。 函数名 :int get10(int A8) 将A8进行处理,返回A8的10进制数。
例:
void main()
{
printf("%d",get10(22));
}
运行的结果应该为:
18
我觉得有点意思,所以试了一下代码如下:
int get10(int A8)
{int tempA8; /*A8的正值表示*/
int numup; /*两个用来表示不断增加的区间,实现取得8进制数的每一位数值*/
int numdown;
int jz; /*用于8进制的乘法*/
int m,n; /*临时变量*/
int result; /**返回结果/
numup=10;
mumdown=1;
jz=1;
rusult=0;

if (A8<0){tempA8=-A8}
if (A8>0){tempA8=A8}
if (A8=0){tempA8=0;}

while(tempA8>numup)
{
m=tempA8%numup; /*小弟一般用vb和delphi很少用到c,记得%号是求余运算*/
n=m/numdown; /*/号好象是处法运算*/
result=result+n*jz;
numup=numup*10;
numdown=numdown*10;
jz=jz*8
}
n=tempA8/numdown;

if (A8<0)return -(result+n*jz);
if (A8>0)return (result+n*jz);
if (A8=0)return 0;
}

代码应该是这些。
不知道为什么考官认为我的答案不对,现在也没搞清错在那里?!!!,各位高手帮帮忙!!!
...全文
425 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
VinCoer 2004-08-11
  • 打赏
  • 举报
回复
注意一下细节!
BinaryTreeEx 2004-08-09
  • 打赏
  • 举报
回复
就是那个现场作题,当场录用的那个?建议别去,我上过当。
danielzhu 2004-08-09
  • 打赏
  • 举报
回复
UP
老夏Max 2004-08-09
  • 打赏
  • 举报
回复
对于变量的范围要适当的考虑,即输入的有效性。
变量的初始化工作一般要做!
变量的定义要清晰。
这些简单的问题一般考察的都是这些!
javajavajavajava 2004-08-09
  • 打赏
  • 举报
回复
你的程序不对吧,很多变量没有初值

neo954 2004-08-09
  • 打赏
  • 举报
回复
int main(void)
{
printf ("%d\n", get10(22));
}

int pow(int x, int y)
{
int i = 0;
int r = 1;
for (i = 0; i < y; ++i)
{
r *= x;
}
return r;
}

int get10(int A8)
{
int sign = 1;
int result = 0;
int digit = 0;
if (A8 < 0)
{
sign = -1;
A8 *= -1;
}
while (A8 > 0)
{
result += (A8 % 10) * pow(8, digit);
A8 /= 10;
++digit;
}
return sign * result;
}

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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