永发信息网

main() {char *s="121"; int k=0,a=0,b=0; do {k++; if (k%2==0) {a=a+s[k]-'0';conti

答案:4  悬赏:0  手机版
解决时间 2021-01-25 05:21
  • 提问者网友:夢醒日落
  • 2021-01-24 23:54
main() {char *s="121"; int k=0,a=0,b=0;
do {k++;
if (k%2==0)
{a=a+s[k]-'0';continue;}
b=b+s[k]-'0';a=a+s[k]-'0';
}while(s[k+1]);
printf("k=%d a=%d b=%d \n",k,a,b);}
A.k=3 a=2 b=3 B.k=3 a=3 b=2 C.k=2 a=3 b=2
最佳答案
  • 五星知识达人网友:长青诗
  • 2021-01-25 01:31
k=1时if不执行,此时a=2,b=2,s[1+1]=1满足while,在执行do,此时k=2,执行if,a=3.然后继续do,则a=4,b=3然后跳出循环体,故k=2,a=4,b=3
全部回答
  • 1楼网友:由着我着迷
  • 2021-01-25 05:15
选择 C 自己可以到编译器上跑一下看看效果,这种有代码的还是实践下比较好理解
  • 2楼网友:長槍戰八方
  • 2021-01-25 04:15
选答案C。因为s[3]=='\0'
  • 3楼网友:行路难
  • 2021-01-25 02:45
第一次循环:因为c='a‘,switch(c++),c++为'a',c为’b',执行case 'a':k++;break后k为1,k++后k为2. 第二次循环:因为c='b‘,switch(c++),c++为'b',c为’c',执行case 'b':k--后,k为1,没有遇到break,继续执行case 'c':k+=2;break;k=k+2,复制之后,k为3,k++后,k为4. 第三次循环:c='c‘,switch(c++),c++为'c',c为‘d',执行case 'c':k+=2;break后,k为6,k++后k为7.第四次循环:c='d‘,switch(c++),c++为'd',c为‘e',执行case 'd':k=k%2;continue,求余之后赋值,k为1,遇到contine语句结束本次循环,开始下一次循环。 第五次循环:因为c='e‘,switch(c++),c++为'e',c为‘f',执行case 'e':k=k*10;break,k为10,k++后k为11. 第六次循环:因为c='f‘,switch(c++),c++为'f',c为‘g',执行default:k/3后,k为3,k++后k为4。因为此时c为’g',所以循环结束,所以最终输出结果为4,不是12.谢谢!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯