问题 单项选择题

若有如下程序: main() {char a[]={"1234"};int i,t=0; for(i=0;a[i]>='0'&&a[i]<='9';i+=2) t=10*t+a[i]一-'0'; printf("%d\n',t);} 则程序运行后的输出结果是( )。

A.13

B.1234

C.24

D.123

答案

参考答案:A

解析: 程序中首先以字符串常量定义并初始化了一个字符数组a,此时数组a包含5个元素{'1','2','3','4','\0'},然后定义了一个变量t,并初始化为0。接下来是一个for循环,循环变量i从0开始每次递增2,循环条件a[i]是一个数字字符。因为a[0]、a[2]分别是数字字符'1'、'3'而a[4]不是,所以循环体执行了两次,第一次执行前t为0,执行后t=10*t+a[i]-'0'=10*0+'1'-'0'=1,所以第二次执行结果为t=10*t+a[i]-'0'=10*1+'3'-'0'=13。程序运行后的输出结果是13,本题选A。

单项选择题
单项选择题