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

admin2009-01-15  29

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

答案4

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

最新回复(0)