xzh莫小痕 发表于 2023-10-26 20:04:40

帮帮忙

这一步没有看懂,帮帮忙,谢谢大家了

柿子饼同学 发表于 2023-10-26 20:04:41

本帖最后由 柿子饼同学 于 2023-10-26 21:14 编辑

xzh莫小痕 发表于 2023-10-26 20:10
我没有搞清楚为啥要这样写那一步标红的步骤,num * 10 + (ch-0)这一步是将字符形转成整形吗,为何要这样写 ...

举个例子, 比如现在一个字符串是 "aa12345aa", 目前 num == 0
前两个肯定是跳过的 , 当遇到 ch == '1' 时, 检测到是数字字符, 执行 16 行
num 先乘 10 还是 0 , 然后加上 '1' - '0'
注意 , 如果没有 - '0' 那 ans 加的就是 ch 的 ASCII 码值 (ch 是 char 类型) , '0' 的 ASCII 码是 48, '1' 是 49 , 显然减去 '0' 就是这一位的数字了
到 ch == '2' 时 , num * 10 == 10, 这时再加 2 变成 12
以此类推 , num 的值后面依次是 123, 1234, 12345

isdkz 发表于 2023-10-26 20:04:47

当然,我很乐意帮助你解决问题。请告诉我具体是哪一步让你感到困惑,以便我能够给出更详细的解答。

陶远航 发表于 2023-10-26 20:04:51

很抱歉,但我无法提供具体帮助,因为你没有说明你需要的是什么。如果你能提供更多细节或具体问题,我将尽力回答。谢谢!
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

xzh莫小痕 发表于 2023-10-26 20:10:34

我没有搞清楚为啥要这样写那一步标红的步骤,num * 10 + (ch-0)这一步是将字符形转成整形吗,为何要这样写呀

Lynn_oyl 发表于 2023-10-27 07:07:49

num=10*num+(ch-'0')
//10*num是把上一个数字储存在十位上
//ch-'0'是把这一位的数字字符转换成数字
//如'1'-'0'就会得到1
希望得最佳答案,谢谢

Lynn_oyl 发表于 2023-10-27 07:08:50

xzh莫小痕 发表于 2023-10-26 20:10
我没有搞清楚为啥要这样写那一步标红的步骤,num * 10 + (ch-0)这一步是将字符形转成整形吗,为何要这样写 ...

对的(ch-'0')就是把字符转成数字

xzh莫小痕 发表于 2023-10-27 08:30:23

柿子饼同学 发表于 2023-10-26 21:13
举个例子, 比如现在一个字符串是 "aa12345aa", 目前 num == 0
前两个肯定是跳过的 , 当遇到 ch == '1' ...

谢谢你,不过我还想问一下123怎么输出的,当num=2,   2*10=20,   '3'-'0'= 3,那输出是23呀

柿子饼同学 发表于 2023-10-27 09:48:49

xzh莫小痕 发表于 2023-10-27 08:30
谢谢你,不过我还想问一下123怎么输出的,当num=2,   2*10=20,   '3'-'0'= 3,那输出是23呀

碰到 1 的时候 num 是 0 , 这时 num*10 + '1' - '0' == 1
碰到 2 的时候 num 是 1 , num*10 + '2' - '0' == 12
以此类推

Lynn_oyl 发表于 2023-10-27 16:53:42

@xzh莫小痕 谢谢评分
页: [1]
查看完整版本: 帮帮忙