
C语言,这题我知道指针p要遍历整个字符串,那填*p++成么?还有,它那个n是累积的和是么?whil
C语言,这题我知道指针p要遍历整个字符串,那填*p++成么?还有,它那个n是累积的和是么?while上边的n跟while下边的n都啥意思啊...
C语言,这题我知道指针p要遍历整个字符串,那填*p++成么?还有,它那个n是累积的和是么?while上边的n跟while下边的n都啥意思啊
展开
展开全部
填成*p++是不行的,因为n=*p-'0'; 这条语句就已经使指针p指向了字符数组的第一个元素了,即s[0],那么在while循环体中,p应该是要指向下一个元素了,即s[1]了,所以要先让p自增1然后再访问所指向的存储单元中的值,即s[1]。所以在while的条件语句中是:*(++p)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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 :
n = *p -'0'; 此时n等于1
第一次循环 n = 1 * 10 + '2' -'0' = 10 + 2 = 12
第二次循环 n = 12 * 10 + '3' -'0' = 120 + 3 = 123
更多追问追答
追问
那如果刨去循环外n的那句话的话,那填*p++就对了吧
(而它这个是把第一个数字在循环外解决掉了)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询