有以下程序 #include <ctype.h> #include <stdio.h> long fun( char s[] ) { long n; int sign; for( ; isspace(*s); s++ );

admin2020-11-27  23

问题 有以下程序
#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));
}
程序运行后的输出结果是

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

答案D

解析 isspace(c)检查参数c是否为空格字符,也就是判断是否为空格('')、水平定位字符('\t')、归位键('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f')的情况。若参数c为空格字符,则返回TRUE,否则返回NULL(0)。Isdigit(c)函数检查参数c是否为阿拉伯数字0到9。返回值若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。fun()函数的第一个for循环判断字符串是否负号。第二个for循环获取符号后面的数字字符,并将它们转化为整数。遇到了非数字的字符跳出,最后返回数组的结果。因此,可知首先获取负号,紧接着获取数值26,遇到了字符a,跳出返回-26,因此打印的结果是-26。故答案为D选项
转载请注明原文地址:https://jikaoti.com/ti/zjD0FFFM
0

最新回复(0)