下程序的输出结果是
int main()
{
char ch[2][5]={"6937","8254"},*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=0;p[i][j]>'\0' && p[i][j]<='9';j+=2)
s=10 * s+p[i][j]- '0';
pritnf("%d\n",s);
}
答案为6385哦~
首先第一个for循环目的是为了将ch数组中的数全部复制给了p数组。
后面的双重循环中,内循环只有在第p[i][j]为数字且不等于‘\0’时才继续循环。当i为0,判断p[i][j]的值是否为数字,若为数字就将这个数字放进s中。内循环的步进为2,因此走完'6'后就直接跳一个,开始判断‘3’了
两个字符串转换为数字,输出:6385
int main()
{
char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];//将ch[i]每行首地址,赋值指针数组p
for(i=0;i<2;i++)
for(j=0;p[i][j]>'\0' && p[i][j]<='9';j+=2)//"6937" ==> 6 3 ,"8254" ==>8 5
s=10 * s+p[i][j]- '0'; //将字符转换为数字,得到4位数的整数
printf("%d\n",s); //输出4位数:6385
return 0;
}