有以下程序: #include<etype.h> #include<stdio.h> long fun(char s[]) {long n;int sign; for(;isspace(*s);s++); sign=(*s==’-’)?-1:1; if(*

admin2020-06-16  5

问题 有以下程序:
#include<etype.h>
#include<stdio.h>
long fun(char s[])
{long n;int sign;
for(;isspace(*s);s++);
sign=(*s==’-’)?-1:1;
if(*s==’+’||*8==’-’)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://kaotiyun.com/show/UKCp777K
0

相关试题推荐
最新回复(0)