回 帖 发 新 帖 刷新版面

主题:高精度运算的输入

我是名高中生,学习C++才4个月,我朋友把他的《信息技术奥赛教程》借我看
我看到第一个问题就晕了,特来向大家请教一下:
高精度运算的输入
高精度运算是把输入的数字逆序转换成数组实现数据的贮存再根据数组的下标
对应位数来加减的,但是,怎样才能把输入的数字按位数转换为数组???
比如我输入:12345678901234567890123
我希望数组中是:  [3,2,1,0,9,8,7,6,5,…………2,1]
(逆序转换是我自己想的,我认为这样可以方便对齐位数)
还有键盘输入的是一个值还是一个字符串?
请帮帮我,我学习C++后感觉思路是越来越乱
谢谢

回复列表 (共6个回复)

沙发

我自己先回一个
我用的教材是<<C++ Primer Plus(第五版)>>作者是美国的 Stephen Prata

板凳

初学就看c++ primer
起点有些太高了吧
键盘输入一个字符串比较方便
string.h里提供了字符串逆序的函数
至于你的想法
可以这么做

读入字符串a
将字符串a逆序
for i->0~a[i]!='\0'
  firstnumber[i]=atoi(a[i]);
这样就达到了你的要求

3 楼

谢谢啊,这是《信息技术奥林皮克竞赛教程--基础篇》的列题
非常感谢

4 楼

加减从低位开始算,把低位放在前是比较好的。未来的牛人啊~~

5 楼

有时侯思路有点乱,我才学C++,有时遇到问题不知道从何入手
这是缺乏经验吗?但是另一位学C++的又告诉我不要形成定向思维
(他用的教材是《黑魔方——C++基础教程》清华大学出版)
我不知道该怎么继续学习了,是多练习现成的还是多创新呢?

6 楼

逆序存放我认为用栈来实现再合适不过了

运算的时候从两个栈各弹出一个值相加,然后保留进位,循环至结束。

我觉得这个问题的思路与你用何种语言无关

建议楼主多看些数据结构方面的书

我来回复

您尚未登录,请登录后再回复。点此登录或注册