2011.9.27到某公司的Android面试(C/java/Android)题目总结

9.27 面试

1.写一个C语言的宏,求两个传入的数的绝对值的和。
①#define add(a,b) (((a) < 0? -(a) : (a)) + ((b) < 0? -(b) : (b)))

#define abs(a) ( (a) < 0? -(a) : (a) )
#define add(a,b) (abs(a) + abs(b))

2.用java或者C倒置字符串"abcd" -> "dcba"


//把第一个放到最后
/*void firstToLast(char str[],int len){

 if(len <= 1) return;

 char temp = str[0];
 int i;
 for(i = 1; i < len; i++){
  str[i - 1] = str[i];
 }
 str[len - 1] = temp;
}

void reverseString(char str[],int len){
 int i = 0;
 for(;i < len -1; i++){
  firstToLast(str,len - i);
 }
}*/


void reverseString(char str[],int len){
 int i,j;
 char temp;
 for(i = 0;i < len; i++){
  temp = str[0];
  for(j = 1; j < len - i;j ++){
   str[j - 1] = str[j];
  }
  str[len - i - 1] = temp;
 }
}

3. C语言中 a++ 与 ++a 的区别(很多相关的填空题)

4. C语言的逗号表达式的求值顺序问题(在a++,与++a问题中有多个逗号表达式)
 ---->区别:a++先使用a原来的值,使用后在让a的值自加一, ++a先将a的值加一,然后使用改变后的a的值。
例如:

 int inc(int a)
 {
  printf("intc : %d\n",a);
  return a++;
 }
 
main函数中:
 int a = 1;

 printf("%d\n",a++);  //1

 printf("%d\n",++a);  // 3

 printf("%d,%d\n",a,inc(a++));  //4,3
 printf("%d\n",a);  //4
 printf("%d\n",inc(++a));//5

 //printf("%d\n",++3); //语法错误

posted @ 2011-09-27 17:53  誑逩の蝸犇  阅读(281)  评论(0编辑  收藏  举报