1.下面程序一共会在屏幕上输出多少个“-” ?
#include<iostream> #include<stdio.h> #include<sys/types.h> #include<unistd.h> using namespace std; int main( ) { int i; for(i = 0; i < 2; i++) { cout<<"-\n"; fork( ); cout <<"-\n"; } cout << endl; return 1; }
解答:
第一个‘-’为第一次循环的第一个,后面4个为fork子进程的,循环第二次主进程2个,fork进程1个,一共8次,Ubuntu输出8个,参考答案为9个,不明所以、
2. 该段代码的输出结果是?
#include<iostream> using namespace std; int nest(int i) { if (i < 0 ) return 0; else if (i == 0) return 1; else return nest(i-1) + nest(i-2) + i; } int main( ) { cout << nest(7)<< endl; return 1; }
//本题应该倒着计算比较容易nest(-1) = 0;nest(0) = 1;nest(1) = nest(-1) + nest(0) + 1 = 2;nest(2) = nest(1) + nest(0) + 2 = 2+1+2=5;nest(3) = nest(2) + nest(1) + 3 = 5+2+3=10;nest(4) = nest(3) + nest(2) + 4 = 10+5+4=19;nest(5) = nest(4) + nest(3) + 5 = 19+10+5=34;nest(6) = nest(5) + nest(4) + 6 = 34+19+6=59;nest(7) = nest(6) + nest(5) + 7 = 59+34+7=100;
3.下面协议中用于WWW传输控制的是?答案:HTTP(超文本传输协议)
URL:资源定位符
SMTP:简单邮件传输协议
HTML:超文本标记语言
4.以下表达式选择结果。( )
std::string str1("trend"); std::string str2("micro"); std::string& strs = str1; std::string* ptrs = &str1; strs = str2; ptrs = &str2;
答:
strs = micro, * ptrs = micro
引用在初始化以后赋值操作是无效的,
5.请选择正确的数字填充:某缓存系统采用LRU(近期最少使用算法)淘汰算法,假定缓存容量为4,并且初始为空,那么在顺序访问以下数据项的时候1,5,1,3,2,4,1,2出现缓存命中的次数是__。最后缓存中即将准备淘汰的数据项是(3,3 )
最后在缓存中的排列为12534,1命中的次数为3,在命中4的时候3将淘汰
6.请选择表达式 '0' + 1 的结果(本题数值均为十进制)?
字符‘0’的ASCLL的值为48,所以结果为49
7.线程是CPU调度和分派的基本单位,进程操作系统的基本单位(资源竞争)
8.以下表达式选择结果
int a = 0; int b = (a=-1) ? 2:3; int c = (a=0) ? 2:3;(a=-1)表达式的值为1,所以b=2,(a=0)表达式的值为0,所以c=3;
9.编程题一为剑指offer上的题:
1.给出一个二叉树,用一个函数确定是否有一条从根节点到叶子节点的路径,这个路径上所有节点的值加在一起等于给定的sum的值。函数声明hasPathSum已经给出,写出程序设计思路并且实现该函数。尽量提供多种实现方法
struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; bool hasPathSum(TreeNode *root, int sum) { if (root == NULL)//递归终止条件 { return false; } if (sum<0)//如果路径中前几个点大于sum提前结束 { return false; } if (root->left==NULL&&root->right==NULL)//最后一个节点 { return false; } return hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val); }
2. 请编写一个函数将字符串s2添加到字符串s1的末端,函数不受s1、s2空间大小的限制。可以利用常用字符串函数strlen,strcpy,strcat,strcmp,strstr实现
简单不在贴代码