C语言,可以解释一下怎么得到这个答案的吗?
发布网友
发布时间:2023-07-12 08:15
我来回答
共3个回答
热心网友
时间:2023-07-12 13:56
循环字符数组,当元素是数字时候 执行 n = n*10+s[i]-'0';
第一个元素是数字1,执行n = n*10+1;结果n =1;
再次循环;
第三个元素是数字2,此时 n 的值是1; 执行n = n*10+2;结果 n = 12;
再次循环;
第五个元素是数字3,此时n的值是12;执行n = n*10+3;结果 n = 123
热心网友
时间:2023-07-12 13:57
s[i] >= '0' && s[i] <= '9'表示s[i]为一个数字字符
s[i] - '0'将s[i]作为数字字符转换为对应的数字
n * 10 + a的意思为在n后面加上a(a是只有一位的整数),如当n=12,a=3时,n*10+a=123
所以遍历时遍历的是s中的所有数字字符
并将这些数字字符合在一起看作是一个表示整数的字符串,并将其对应的字符存储于n里
s中数字字符合起来是"123",所以n的值应为123
热心网友
时间:2023-07-12 13:57
首先for循环先是把n初始设置为0,然后把字符串数组遍历一遍,循环条件就是数组元素还没到字符串的结束符号'\0' 即s[i]!='\0'。
if语句是用来判断s[i]的字符是否介于字符‘0’到‘9’之间,即if条件是用于选择s[i]为数字的字符。若if条件为true即s[i]是一个数字字符,则s[i]-'0'是将s[i]的字符ASCII值转换为整数型数字。例如s[i]='6',则s[i]-'0'=6 即将字符'6'转换为了数字6。
n=n*10+s[i]-'0'表示将历史累加值乘以10后把s[i]所表示的数字加在个位上构成新的累加值。例如,初始时n=0。当取到s[i]='1',则n=0*10+1=1;当取到s[i]='2'时,则n=1*10+2=12;当取到s[i]='3'时,则n=12*10+3=123。