#include <stdio.h>
#include <string.h>
int main()
{
char ch[2][5] = { "1981","0921" }, * p[2];
int i, j, s = 0;
for (i = 0; i < 2; i++)
p[i] = ch[i];
for (i = 0; i < 2; i++)
for (j = 1; j <= 3; j += 2)
s = 10 * s + p[i][j] - '0';
printf("%d\n", s);
return 0;
}
请教一下这道题目
这段代码的作用是读入两个字符串并将它们中奇数位上的数字提取出来并相加,最后输出结果。
具体实现过程如下:
代码的输出结果为:30
s = 10 * s + p[i][j] - '0';//把数组p的第i行,从字符串的形式转为整型值的形式。
for (j = 1; j <= 3; j += 2)
看这里,双重循环的内层j只会取1和3两个值
原始数据"1981","0921" ,取出来不就是9191吗
s = 10 * s + p[i][j] - '0';这个代码就是把字符减去'0'变数字,然后拼进int里面,最终是个int型的9191
另,你自己既然有IDE可以进行验证,设个断点一步一步跟,看它到底是怎么执行的,不要靠猜