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

admin2013-02-23  12

问题 有以下程序      #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));     }

选项 A、9
B、61490
C、61
D、5

答案C

解析 题目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。
转载请注明原文地址:https://kaotiyun.com/show/IoJp777K
0

最新回复(0)