有以下程序  #include<stdio.h>  main()  {char *s="01234";   while(*(++s)!=’\0’)   {switch(*s-’0’)   {case 0:   case 1:putchar(*s+1);

admin2022-10-24  27

问题 有以下程序
 #include<stdio.h>
 main()
 {char *s="01234";
  while(*(++s)!=’\0’)
  {switch(*s-’0’)
   {case 0:
   case 1:putchar(*s+1);break;
   case 2:putchar(*s+1);break;
   case 3:putchar(*s+1)l;
   default:putchar(*s+1);break;
   }
  }
 }
 程序执行后的输出结果是(          )。

选项 A、22345
B、2345
C、12345
D、23445

答案D

解析 程序首先定义一个字符指针s,指向一个常量字符串“01234”;接着while循环的循环条件每次将s指向下一个字符,然后判断s指向的字符是否为空字符“\0”,若不是,则执行循环体,将当前字符与“0”的ASCII差值作为switch语句的常量表达式,执行对应的case语句。指针s指向空字符“\0”时,则终止循环,程序结束。从常量字符串“01234”可知,循环过程中s指向的各个字符分别是1、2、3、4。当*s是字符“1”时,*s-’0’的值为1,执行case1语句,输出*s+l,即字符“2”;当*s是字符“2”时,*s-’0’的值为2,执行case 2语句,输出*s+1,即字符“3”;当*s是字符“3”时,*s-’0’的值为3,执行case 3和default语句,两次输出*s+1,即字符“4”;当*s是字符“4”时,*s-’0’的值为4,执行default语句,输出*s+1,即字符“5”。综上,程序输出结果为23445。故本题答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/NDkp777K
0

相关试题推荐
最新回复(0)