|
发表于 2020-11-18 01:17:05
|
显示全部楼层
本楼为最佳答案
本帖最后由 jackz007 于 2020-11-18 01:20 编辑
- . . . . .
- num = 0 // 初始化 num 为 0
- do {
- ch = getchar() ;
- if(ch >= '0' && ch <= '9') // 如果 ch 是数字字符
- {
- num = num * 10 + ch - '0' ; // 结合前期 num 求取新值
- } else { // ch 不是数字字符
- if(num) // 如果 num 已经是非零值
- {
- break ; // 那就结束循环
- }
-
- }
- } while(ch != '\n') ; // 如果 ch 不是换行(回车)字符,那就继续循环
- . . . . . .
复制代码
假设键入的字符分别是 '9','2','7', '5' ,'\n',那么,do ... while 将会循环 5 次,下面进行展开
- 第一次:num = 0 , ch = '9' --> num = num * 10 + ch - '0' = 0 * 10 + '9' - '0' = 9
- 第二次:num = 9 , ch = '2' --> num = num * 10 + ch - '0' = 9 * 10 + '2' - '0' = 92
- 第三次:num = 92 , ch = '7' --> num = num * 10 + ch - '0' = 92 * 10 + '7' - '0' = 927
- 第四次:num = 927 , ch = '5' --> num = num * 10 + ch - '0' = 927 * 10 + '5' - '0' = 9275
- 第五次:num = 9275 , ch = '\n' --> ch 是非数字字符,而且,num 值非零,循环结束
复制代码
这样,最终通过键盘得到了整数 9275。 |
|