问题 单项选择题

有以下程序:
#include <stdio.h>
int fun(char s[])
int n=0;
while(*s<=’9’&&*s>=’0’) n=10*n+*s-’0’;s++;
return(n);

main()
char s[10]=’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’;
printf("%d\n",fun(s));

程序的运行结果是( )。

A.9

B.61490

C.61

D.5

答案

参考答案:C

解析: 题目fun()函数中while循环的意思是:判断s所指内容是否为数字字符,如果是数字字符,则计算表达式n=10*n+*s-’0’;。其中*s-’0’的作用是将相应的数字字符转换为数值,例如字符’8’减去字符’0’后,得到的结果就是数值8了。n=10*n+的作用是将累计变量n中原来内容乘以10,然后再加上刚转换的数字字符的数值,例如原来n的值为1,*s现在的内容为’2’,那么执行了n=10*n+*s-’0’;语句后,n的值变为12,如果接下来再来一个’8’字符,执行n=10*n+*s-’O’;语句后,n的值就是128了。故不难看出fun()函数的作用是“将数字字符串转换为相应的十进制数值,碰到非数字字符时结束”。从主函数中定义的字符数组s的初始化内容可以看出,fun()函数返回值应该是61。故应该选择C。

计算题
判断题