题目要求
下面程序的输出是( )。
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);
思路分析
看到这个题目感觉不大好做,但是不好做不代表不能做,分开都能看懂,整合起来也一样,不要怕
考试的时候没计算机编译器就依据已知数据一步一步的推算呗
第1次循环中,k=1,不执行if分支,s[k]=‘2’,因此b=2,a=2 因s[k+1]=‘1’进入第2次循环,k=2,执行if分支,s[k]=‘1’,使a=3,进而提前结束本次循环,s[k+1]=‘\0’,则退出循环,所以k=2,a=3,b=2。
撸写代码
#include<stdio.h>
int 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);
return 0;
}