有以下程序 #include main() { char *s="12134"; int k=0, a=0 ; while( s[ k +1 ] ) { k++; if ( k % 2 ==0 ) { a = a + ( s[ k ] - ’0’

admin2015-07-28  27

问题 有以下程序
#include
main()
{
char *s="12134";
int k=0, a=0 ;
while( s[ k +1 ] )
{
k++;
if ( k % 2 ==0 )
{
a = a + ( s[ k ] - ’0’ +1 ) ;
continue;
}
a = a + ( s[ k ] - ’0’ );
}
printf (" k=%d a=%d\n", k, a );
}
程序运行后的输出结果是( )。

选项 A、k=4 a=12
B、k=5 a=15
C、k=6 a=11
D、k=3 a=14

答案A

解析 while循环的条件为s[k+1]不为?\0?,循环开始即让k自加1,相当于s[++k]不为?\0?。所以遍历s指向的字符串除首位元素的之后的字符串,a累加s指向字符串中每个元素对应的数字,若元素下标为偶数则多加1。字符串后4位元素"2134"中下标为偶数的元素个数为2,所以a=2+1+3+4+2=12,k记录的是统计的元素个数,为4,所以答案选A。
转载请注明原文地址:https://kaotiyun.com/show/ZzDp777K
0

最新回复(0)