有以下程序: #include #nclude long fun(char s[]) {long n;int sign; for(;isspace(*s);s++); sign=(*s==’一’)?一1:1; if(

admin2019-01-11  22

问题 有以下程序:
  #include
  #nclude
  long fun(char s[])
  {long n;int sign;
    for(;isspace(*s);s++);
    sign=(*s==’一’)?一1:1;
    if(* s==’+’||*s=’一’)s++;
    for(n=0;isdigit(木s);s++)
    n=10*n+(*s一’0’);
    return sign*n;
    }
    main()
    {  char S[]="一26a3";
    printf("%d\n",fun(s));
    }
    程序运行后的输出结果是(    )。

选项 A、一263
B、2
C、0
D、一26

答案D

解析 isspace(c)检查参数c是否为空格字符。若参数c为空格字符,则返回TRUE,否则返回NULL(0)。Isdigit(c)函数检查参数c是否为阿拉伯数字0到9。返回值若为阿拉伯数字,则返回TRUE,否则返回NULL(0)。fun()函数的第一个for循环判断字符串是否为负号。第二个for循环获取符号后面的数字字符,并将它们转化为整数。若遇到了非数字的字符则跳出,最后返回数组的结果。因此,可知首先获取负号,紧接着获取数值26,遇到了字符a,跳出返回一26,因此打印的结果是一26。故答案为D选项。
转载请注明原文地址:https://jikaoti.com/ti/d7a0FFFM
0

最新回复(0)