选择题   有以下程序:
    #include<ctype.h>
    #include<stdio.h>
    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));
    }
    程序运行后的输出结果是
 
【正确答案】 D
【答案解析】 isspace(c)检查参数c是否为空格字符。若参数c为空格字符,则返回TRUE,否则返回0。isdigit(c)函数检查参数c是否为阿拉伯数字0~9。返回值若为阿拉伯数字,则返回TRUE,否则返回0。fun函数的第一个for循环判断字符串是否为负号。第二个for循环获取符号后面的数字字符,并将它们转化为整数。遇到了非数字的字符跳出,最后返回数组的结果。因此,可知首先获取负号,紧接着获取数值26,遇到了字符a,跳出返回-26,因此打印的结果是-26。故答案为选项D。