计算机二级

下列程序的输出结果是______。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=3B.k=3 a=3 b=2C.k=2 a=3 b=2D.k=2 a=2 b=3

题目

下列程序的输出结果是______。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

D.k=2 a=2 b=3

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

以下程序的输出结果是 () 。 main() { char *s="12134211" ; int v[4]={0 ,0,0,0} ,k,i ; for(k=0 ;s[k] ;k++) { switch(s[k]) { case '1' :i=0 ; case '2' : i=1 ; case '3' : i=2 ; case '4' : i=3 ; } v[i]++ ; } for(k=0 ;k<4;k++) printf("%d ",v[k]) ; }

A.4 2 1 1

B.0 0 0 8

C.4 6 7 8

D.8 8 8 8


A

第2题:

下面程序的输出是 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=%dn",k,a,b);

A.k=3 a=2 b=3

B.k=3 a=3 b=2

C.k=2 a=3 b=2

D.k=2 a=2 b=3


C

第3题:

下列程序的输出结果是______。 main() { char*s="1221"; int k=0,a=0,b=0; do { if(k%2==0) {a=a+s[k]-'0'; continue; } b=b+s[k]-'0'; } while(s[++k]); printf("k=%d a=%d b=%d\n",k,a,b); }

A.k=3 a=4 b=3

B.k=3 a=3 b=3

C.k=4 a=3 b=3

D.k=4 a=2 b=3


正确答案:C
解析:将数字字符串中下标值能被2整除的元素值(字符)转换为数字累加到变量a中,将数字字符串中下标值不能被2整除的元素值(字符)转换为数字累加到变量b中,循环结束时,a、b的值均为3,k是字符结束符的下标值,为4。

第4题:

下面程序的输出结果是 ( ) maint( ) {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' } wnile(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=3

D.k=2 a=2 b=3


正确答案:C

第5题:

以下程序的输出结果是______。 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=98 b=49

B.k=3 a=99 b=50

C.k=2 a=99 b=50

D.k=2 a=98 b=49


正确答案:C
解析:第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。

第6题:

以下程序的输出结果是( )。 main { char*s="12134211"; int v[4]=(0,0,0,0),k,i; for(k=0;s[k];k++) { switch(s[k]) { case1:i=0; case2:i=1; case3:i=2; case4:i=3;} } v[i]++: } for(k=0;k<4;k++)printf("%d",v[k]);

A.4 2 1 1

B.0 0 0 8

C.4 6 7 8

D.8 8 8 8


正确答案:B
本题考查switch,case语句,当k=0时,循环体成立,执行switch后表达式的值为1,执行case1,i的值为0,因为没有break语句,继续执行其后的语句,到最后一个语句时i的值为3,此时v[i]++,v[3]=1,接着执行k++后,k的值为1,当k=1时,循环成立。执行switch后的表达式的值为2,执行case2,i的值为1,因为没有break语句,继续执行其后的语句,到最后一小语句时,i的值为3,此时v[i]++,v[3]=2,接着执行k++后,k的值为2,依次下去,case4也会执行,最后i的值一定为3,到v[3]=8时循环结束,而v[0]~v[2]的值一直没有变化,故选择B选项。

第7题:

下列程序的输出结果是______。 main() { char *s="12134211"; int v[4]={0,0,0,0},k,i; for(k=0;s[k];k++) { switch(s[k]) { case '1':i=0; case '2':i=1; case '3':i=2; case '4':i=3; } vii]++; } for(k=O;k<4;k++) printf("%d ",v[k]); }

A.4211

B.0008

C.4678

D.8888


正确答案:B

第8题:

有以下程序: #include<stdio.h> void fun(int*s) { static int i=0; do{s[J]=s[J]+s[j+I];}while(++j<2); } main( ) { int k.a[l0]={1,2,3,4,5}; for(k=1;k<3;k++)fun(a); for(k=0;k<5;k++)pfintf("%d",a[k]); printf("\n"); } 程序运行后的输出结果是( )。

A.12345

B.23445

C.34756

D.35745


正确答案:D
本题考查静态变量,静态变量有储存已经操作过的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案选择D。

第9题:

以下程序运行后的输出结果是【】。includemain(){int k=1,s=0; do{ if((k%2)!=0)continue;

以下程序运行后的输出结果是【 】。

include<stdio.h>

main()

{ int k=1,s=0;

do{

if((k%2)!=0) continue;

s+=k; k++;

}while(k>10);

printf("s+%d\n",s);

}


正确答案:s=0
s=0 解析:do-while循环结构的形式如下:
do
循环体
while(表达式);
循环的执行过程如下:
①执行do后面循环体中的语句。
②计算while后—对圆括号中表达式的值。当值为非0时,转去执行步骤1;当值为0时,执行步骤3。
③退出do-while循环。
在本题中先判断k是否为偶数,如果不是则结束本次循环,进行下—次的循环条件判定,由于没有改变k的值,k>10的不成立,退出do-while循环,执行后面的printf("s=%d\n",s);语句,因为s=0,所以输出结果为s=0。