上周我的老师要求我开发一个程序,该程序接受一个字符串(准确地说是整数流)并为字符串中的每个数字计算字符串中数字的总和,即。
如果输入是31456
- 第一个循环什么都不做(3 左边没有数字,总和结果为 0)
- 第二个循环结束于 3(求和结果为 3)
- 第三个循环以 1 结束(结果为 3+1 = 4)
- 第 4 次循环结束于 4(结果为 3+1+4 = 8)
- 第 5 次循环结束于 5(结果为 3+1+4+5 = 13)
- 第 6 次循环结束于 6(结果为 3+1+4+5+6 = 19)
我确实提交了一个工作项目,但它充满了意大利面条代码(嵌套循环,如果字符串长度小于循环数则结束)这不是一个干净的方法。我想知道并研究了很多关于这种情况的徒劳。我还没有找到在 C 中没有嵌套 for 循环的任何方法(或者也许我放弃得太快了?)
再说一次,我不是要你们回答我的问题,而是想知道是否有一种方法可以在没有嵌套循环的情况下做到这一点(如果输入长度 > 嵌套循环数就会出现问题)。
最佳答案
这是我的建议:停止“循环”思考,开始“步骤”思考。如果输入字符串有 n
个字符,则您有 n+1
个步骤。
现在,思考以下三个问题:
- 你知道第一步的解法吗(没有数字)?
- 给定步骤
k
的解,如何计算步骤k+1
的解? - 如何将问题 1 和 2 结合起来,仅用一个循环就可以解决整个问题?
因为这是作业,所以我让你从这里开始。
关于c++ - 计算数字的总和乘以字符串的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8341239/