请问可以讲解一下这个程序吗?特别是从第8行开始
遍历两个字符串,从0开始,步长为2,提取出来 baige 发表于 2020-9-4 21:18遍历两个字符串,从0开始,步长为2,提取出来
s=的那一行是什么意思呢 Zingy 发表于 2020-9-4 21:21
s=的那一行是什么意思呢
用于把提取的字符变为整数的,如题目:
s = 10 * 0 + '6' - '0' = 6
s = 10 * 6 + '3'-'0' = 63
s = 10 * 63 + '8' - '0' = 638
s = 10 * 638 + '5' - '0' = 6385
鱼币 鱼币 币币币 Fish Coin{:10_281:} 本帖最后由 风过无痕1989 于 2020-9-5 23:03 编辑
#include <stdio.h>
void main()
{
char ch={"693","825"},*p ;
int i,j,s = 0;
for (i=0;i<2;i++)
p=ch;
for (i=0;i<2;i++)
for (j=0;p>='0' && p<='9';j+=2)
s = 10 * s + p - '0';
printf("%d\n",s);
}
第8行的循环条件简单不用说了,第9行的循环条件是:0 <= p[ i ][ j ] <= 9,j += 2 是步进2,等价于 j = j + 2
第10行的意思是:s = 10 * s + p[ i ][ j ] - '0' = 10 * s + p[ i ][ j ] - 48 (这里的 p[ i ][ j ] 值与后面的 '0' 都要转换为 ASCII 码来计算,原因是 s 是整型)
于是循环两次的结果如下:
s = 10 * s + p - '0' = 10 * 0 + 54 - 48 = 6
s = 10 * s + p - '0' = 10 * 6 + 51 - 48 = 63
s = 10 * s + p - '0' = 10 * 63 + 56 - 48 = 638
s = 10 * s + p - '0' = 10 * 638 + 53 - 48 = 6385
PS:重新编辑是因为变成了斜体,看着不方便
兄弟,这么多人,讲得还不够清楚吗? 问题没解决,帮你顶上去,让更多的人看到 风过无痕1989 发表于 2020-9-12 22:58
兄弟,这么多人,讲得还不够清楚吗?
不好意思 前几天忙于期末考试~一直没有来论坛(还有不是兄弟,是小姐姐~~~哈哈哈)
页:
[1]