C语言,这题我知道指针p要遍历整个字符串,那填*p++成么?还有,它那个n是累积的和是么?whil

C语言,这题我知道指针p要遍历整个字符串,那填*p++成么?还有,它那个n是累积的和是么?while上边的n跟while下边的n都啥意思啊... C语言,这题我知道指针p要遍历整个字符串,那填*p++成么?还有,它那个n是累积的和是么?while上边的n跟while下边的n都啥意思啊 展开
 我来答
My_Persistence
2016-01-13 · TA获得超过3470个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:457万
展开全部
填成*p++是不行的,因为n=*p-'0'; 这条语句就已经使指针p指向了字符数组的第一个元素了,即s[0],那么在while循环体中,p应该是要指向下一个元素了,即s[1]了,所以要先让p自增1然后再访问所指向的存储单元中的值,即s[1]。所以在while的条件语句中是:*(++p)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
furious_tauren
2016-01-13 · TA获得超过4056个赞
知道大有可为答主
回答量:1913
采纳率:100%
帮助的人:805万
展开全部

n = *p -'0';  假设你输入的的是556, *p 等于 '5',其ascii 码是53, 减去'0'(asiic是48)就是整数5。

所以这句就是把字符型数字转化为整形。


只能添 *(++p), 这是因为第一个字符已经在 n=*p-'0'; 转整并赋值给n了,接下来要处理的是下一个字符。


n=n *8+ *p-'0';  因为是8禁止,所以乘以8。

整个过程,因为八进制不容易理解,拿十进制做个例子,如果你输入的是123 :

  1. n = *p -'0';  此时n等于1

  2. 第一次循环 n = 1 * 10 + '2' -'0' = 10 + 2 = 12

  3. 第二次循环 n = 12 * 10 + '3' -'0' = 120 + 3 = 123

更多追问追答
追问
那如果刨去循环外n的那句话的话,那填*p++就对了吧
(而它这个是把第一个数字在循环外解决掉了)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式