有下列程序  #include<stdio.h>  main()  {   char *P="6938";   int i,s=0;   for(i=3;i>=0;i--)   s=10*s+p[i]-’0’;   printf("

admin2022-10-24  35

问题 有下列程序
 #include<stdio.h>
 main()
 {
    char *P="6938";
    int i,s=0;
    for(i=3;i>=0;i--)
      s=10*s+p-’0’;
    printf("%d\n",s);
 }
 程序运行后的输出结果是(          )。

选项 A、8396
B、6938
C、3869
D、3689

答案A

解析 程序首先定义一个字符指针p,使其指向一个字符串“6938”。然后通过for循环使用逆序的方式遍历字符串的各个字符,并将各个字符当作整数参与算术运算。其中,“p-’O’”的含义是将字符串中的数字字符转换成对应的整数;“10*s+p-’0’”是将上一次运算结果乘10后与转换后的整数相加,再累加到s中。所以for循环执行完后,字符串“6938”按照逆序的顺序将每个字符转换成对应的整数输出。故本题答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/dHkp777K
0

最新回复(0)