Zingy 发表于 2020-9-4 20:42:32

请问可以讲解一下这个程序吗?特别是从第8行开始

baige 发表于 2020-9-4 21:18:35

遍历两个字符串,从0开始,步长为2,提取出来

Zingy 发表于 2020-9-4 21:21:54

baige 发表于 2020-9-4 21:18
遍历两个字符串,从0开始,步长为2,提取出来

s=的那一行是什么意思呢

baige 发表于 2020-9-4 21:27:56

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

aaron.yang 发表于 2020-9-4 21:43:22

鱼币

鱼的七秒记忆 发表于 2020-9-5 08:37:36

鱼币

怀心抱素 发表于 2020-9-5 09:22:25

币币币

aaron.yang 发表于 2020-9-5 20:12:12

Fish Coin{:10_281:}

风过无痕1989 发表于 2020-9-5 22:57:00

本帖最后由 风过无痕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:40

兄弟,这么多人,讲得还不够清楚吗?

乐乐学编程 发表于 2020-9-21 08:39:00

问题没解决,帮你顶上去,让更多的人看到

Zingy 发表于 2020-9-27 15:19:32

风过无痕1989 发表于 2020-9-12 22:58
兄弟,这么多人,讲得还不够清楚吗?

不好意思 前几天忙于期末考试~一直没有来论坛(还有不是兄弟,是小姐姐~~~哈哈哈)
页: [1]
查看完整版本: 请问可以讲解一下这个程序吗?特别是从第8行开始