1.求fun(10)的输出结果
- void fun(int x)
- {
- if(x/2>0)fun(x/2);
- printf("%d",x);
- }
分析:注意这里函数层层嵌套, 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中的数字
- char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}}};
- for(int i=0;i<12;i++)
- printf("%d\t",a[i/6][i/3%2][i%3]);
又如下面:
- 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,
- 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};
- for (int i=0;i<60;i++)
- cout<<a[i/20][i/5%4][i%5]<<";";
- }
3.以下代码实现什么功能?
- void fun(char s1[], char s2[])
- {
- while(s1++=s2++);
- }
A. 比较 B. 连接 C. 复制 D. 反转
分析:面试题。首先检查有没有意义,题目对不对,看选项中有没有答案。代码中把s2的地址赋给s1,显得没有什么意义。修改后的代码如下:
- // test2.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- /*将s2中的字符赋给s1,以'\0'结束,跳出while循环*/
- void fun(char s1[], char s2[])
- {
- while((*(s1++) = *(s2++)) != '\0')
- NULL;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- char bufFrom[10] = "abcdefghi";
- char bufTo[10];
- fun(bufTo,bufFrom);
- for (int i=0; i<10; i++)
- {
- printf("%c\t",bufTo[i]);
- }
- return 0;
- }
阅读(2223) | 评论(0) | 转发(0) |