面试题4
C语言相关
1.实现atoi()
/* atoi() * 作用:将字符串转换整形 * bug:未对溢出处理 * 版本:v0.1 * 作者:机器学习_佟铁 * 时间:20140712 */ #include<stdio.h> #include<ctype.h> #define N 30 int ato_i(char *s) { int sign=1,result=0; //sign表示正负,result返回结果,非数字字符串返回0 while(isspace(*s)) //忽略空白 s++; if(s && *s=='-') { sign=-1; s++; } if(s && *s=='+') s++; while(s && isdigit(*s)) { result=result*10+(*s-'0'); s++; } result=result*sign; return result; } int main() { char s[N]; scanf("%s",s); //读入到s时,前提是s必须有自己的空间。 printf("%d\n",ato_i(s)); return 0; }
2.对于宏 #define SQUARE(x) (x)*(x)有何错误?
答:如果输入x++,x将被求值两次。
3.如何用一行代码确定n是不是2的幂,不能用循环?
答:(n&n-1)==0?true:false;