Chinaunix首页 | 论坛 | 博客
  • 博客访问: 466170
  • 博文数量: 40
  • 博客积分: 1178
  • 博客等级: 少尉
  • 技术积分: 578
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-28 21:27
文章分类

全部博文(40)

文章存档

2012年(3)

2011年(29)

2010年(7)

2009年(1)

分类: C/C++

2011-02-22 09:25:00

1.求fun(10)的输出结果
  1. void fun(int x)
  2. {
  3.     if(x/2>0)fun(x/2);
  4.     printf("%d",x);
  5. }
分析:注意这里函数层层嵌套, fun(1)为最内层,fun(10)为最外层,依次输出fun(1),fun(2),fun(5),fun(10),的得到结果1,2,5,10。注意并非10,5,2,1。
 
2.stack data (栈)存在于

A.rom, B .flash C .eeprom D.ram E .none of the above

分析:D.ram。ROM的全称是Read Only Memory,即只读存储器,flash ,eeprom都是ROM家族
的一员,RAM是Random Access Memory的简称,意为随机存取存储器,也就是内存了。不管
是堆还是栈都是放在内存里的。
 
3.在空格处填上合适的语句,顺序打印出a中的数字
  1. char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}}};
  2.     for(int i=0;i<12;i++)
  3.         printf("%d\t",a[i/6][i/3%2][i%3]);
又如下面:
  1. int a[3][4][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,
  2. 30,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60};
  3. for (int i=0;i<60;i++)
  4. cout<<a[i/20][i/5%4][i%5]<<";";
  5. }

 

3.以下代码实现什么功能?
  1. void fun(char s1[], char s2[])
  2. {
  3.        while(s1++=s2++);
  4. }

A.  比较   B.  连接   C.  复制    D.  反转

分析:面试题。首先检查有没有意义,题目对不对,看选项中有没有答案。代码中把s2的地址赋给s1,显得没有什么意义。修改后的代码如下:
  1. // test2.cpp : 定义控制台应用程序的入口点。

  2. //


  3. #include "stdafx.h"

  4. /*将s2中的字符赋给s1,以'\0'结束,跳出while循环*/
  5. void fun(char s1[], char s2[])
  6. {
  7.     while((*(s1++) = *(s2++)) != '\0')
  8.         NULL;
  9. }

  10. int _tmain(int argc, _TCHAR* argv[])
  11. {
  12.     char bufFrom[10] = "abcdefghi";
  13.     char bufTo[10];
  14.     fun(bufTo,bufFrom);

  15.     for (int i=0; i<10; i++)
  16.     {
  17.         printf("%c\t",bufTo[i]);
  18.     }
  19.     return 0;
  20. }
阅读(2161) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~