有人想过用字符(ASCII码)实现模拟十进制加数运算吗?

、浅浅笑 2018-10-08 11:46:11
有人想过用字符(ASCII码)实现模拟十进制加数运算吗?就是用字符数组实现数字递增并且逢十进一。我写了一个,但是bug繁多,运行基本卡到死,求救各位常驻论坛的老师同学帮我优化下。。

代码如下:(这是一段函数,输入的n代表数字起始位数,比如n = 5就是从10000到99999递增,不考虑在这个范围之外的数)

void flo(int n)
{
char *array = NULL;
array = (char*)calloc(n, sizeof(char));
array[n] = 0;
for (int i = 0; i < n; i++)
{
array[i] = '0';
}
array[0] = '1';
printf("%s\n", array);
for (int i = 0; i < pow(10, n); i++)
{
for (int t = n - 1; t >= 0; t--)
{
if (array[t] >= '9')
{
array[t] = '0';
if (t > 0)
{
array[t - 1] += 1;
break;
}
else
{
break;
}
}
}
if (array[n - 1] != '0')
{
array[n - 1] ++;
}
}
printf("%s\n", array);
free(array);
}




谢谢,我不是伸手党,我考虑了好久,求帮助下,再次感谢,另外,由于,math.h里的pow函数好像只能出来double类型的,我就自己写了一个pow函数,用法一样,也放在这里。我上边的函数用了这个。

int pow(int a, int b)
{
int i = 0, result = 1;
for (i; i < b; i++)
{
result *= a;
}
return result;
}


谢谢(心‘’)
...全文
340 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
十八道胡同 2018-10-13
  • 打赏
  • 举报
回复
谢谢邀请。


这个其实就是大数运算。

找bug就是根据你自己的逻辑然后一步一步debug,看下代码运行是否符合你的预期。
hilevel 2018-10-11
  • 打赏
  • 举报
回复
codewars上有道求大整数平方根的问题,里面不少实现(包括我的)都基于用string实现整数的四则运算。
有兴趣的话可以看一下~
https://www.codewars.com/kata/challenge-fun-number-10-integer-square-root/solutions/cpp

、浅浅笑 2018-10-09
  • 打赏
  • 举报
回复
自己顶一下………………………………
、浅浅笑 2018-10-08
  • 打赏
  • 举报
回复
记得核心一定是字符,别用数.......

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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