单选题
有以下程序
#include <stdio.h>
int fun(char s[])
{ int n=O;
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));
}
【正确答案】
C
【答案解析】[解析] 本题考查的知识点是:while循环的简单应用。
题目fun()函数中while循环的意思是:判断s所指内容是否为数字字符,如果是数字字符,则计算表达式11=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-"0";语句后,n的值就是128了。故不难看出fun()函数的作用是“将数字字符串转换为相应的十进制数值,碰到非数字字符时结束”。从主函数中定义的字符数组s的初始化内容可以看出,fun()函数返回值应该是61。故应该选择C。