liuhongrun2022 发表于 2023-7-29 22:16:37

本帖最后由 liuhongrun2022 于 2023-7-29 22:20 编辑

xzh莫小痕 发表于 2023-7-29 22:08
各位大佬,我好像没看懂,我以我自己有限的知识,说一下我的理解就是,ch=getchar(),指的就是我输入的字符 ...

ch=getchar(),指是接受一个字符
if(ch>='0'&&ch<='9')指的是如果ch为字符型的0-9,那么就执行第16行
第16行的作用,我局个例子
我输入了1234
第一回:收到'1',num = 0*10+1 = 1
第二回:收到'2',num = 1*10+2 = 12
第三回:收到'2',num = 12*10+3 = 123
第三回:收到'2',num = 123*10+4 = 1234

第16行会将num末尾插入新输入的那个数字!!!


给个最佳答案呗{:10_254:}

ASCII码对照表:
https://pic3.zhimg.com/v2-99d2c2240b51e0dc2772927113111992_b.webp?consumer=ZHI_MENG

香蕉那个不拿拿 发表于 2023-7-29 22:18:30

xzh莫小痕 发表于 2023-7-29 22:16
大佬,我想问一下,ch的ACSII码由getchar()赋值给的,getchar()是有我输入的字符和字符串提供的,如果假 ...

好比输入一下字符“123aa”
前三个数字(字符形式)可以正常读取
但是读取到aa时
14行的代码判断他不是数字,会退出循环
字母的ASCLL码值有一张图,等会给你发过来

香蕉那个不拿拿 发表于 2023-7-29 22:19:15

本帖最后由 香蕉那个不拿拿 于 2023-7-29 22:21 编辑


ASCLL码对照表

xzh莫小痕 发表于 2023-7-29 22:21:20

香蕉那个不拿拿 发表于 2023-7-29 22:18
好比输入一下字符“123aa”
前三个数字(字符形式)可以正常读取
但是读取到aa时


大佬,你说的退出循环指的是123aa,123继续循环,aa退出循环是吗

香蕉那个不拿拿 发表于 2023-7-29 22:21:58

xzh莫小痕 发表于 2023-7-29 22:21
大佬,你说的退出循环指的是123aa,123继续循环,aa退出循环是吗

是的
sum保存的值也是123

tommyyu 发表于 2023-7-29 22:22:03

xzh莫小痕 发表于 2023-7-29 22:16
大佬,我想问一下,ch的ACSII码由getchar()赋值给的,getchar()是有我输入的字符和字符串提供的,如果假 ...

1. 部分字符在运算的时候可以转化成ASCII码,和getchar没有关系
2. 字符串转化不了,字符才可以
3. ascii对照表 -> http://c.biancheng.net/c/ascii/

香蕉那个不拿拿 发表于 2023-7-29 22:23:06

123的时候正常遍历
当遍历到aa时
检测到不符合要求
退出循环

香蕉那个不拿拿 发表于 2023-7-29 22:24:06

这是因为a这一些字符他的ASCLL值不在0-9之间,也就不是数字

香蕉那个不拿拿 发表于 2023-7-29 22:26:39

本帖最后由 香蕉那个不拿拿 于 2023-7-29 22:42 编辑

0-9数字的ASCLL码值是连在一块的即为48 - 57

tommyyu 发表于 2023-7-29 22:33:24

香蕉那个不拿拿 发表于 2023-7-29 22:26
0-9数字的ASCLL码值是连在一块的即为80 - 89

《80~89》

xzh莫小痕 发表于 2023-7-29 22:33:27

香蕉那个不拿拿 发表于 2023-7-29 22:26
0-9数字的ASCLL码值是连在一块的即为80 - 89

大佬,退出循环我的理解就是计算机直接将不符合要求的直接舍弃

香蕉那个不拿拿 发表于 2023-7-29 22:43:16

emm,退出循环就是不再运行循环内的代码块
页: 1 [2]
查看完整版本: 帮帮忙,谢谢啦