以下程序的输出结果是 【 17 】 。
int fun(int *x,int n)
{ if(n==0) return x[0];
else return x[0]+fun(x+1,n-1);
}
main( )
{ int a[]={1,2,3,4,5,6,7}; printf("%d\n",fun(a,3));}
A.7
B.8
C.9
D.10
以下程序的输出结果是______
nt fun(int*x,int n)
{if(n==0)
return x[0];
else return x[0]+fun(x+1,n-1);
}
main()
{int a[]={1,2,3,4,5,6,7};
printf(“%d\n”,fun(a,3));
}
10
● 函数fun1()、fun2()的定义如下所示,已知调用fun1 时传递给形参x的值是-5,若以引用调用(call by reference)的方式调用fun2,则函数fun1的返回值为 (33) ;若以值调用(call by value)的方式调用fun2,则函数fun1的返回值为 (34) 。
fun1(int x) fun2(int x) int a=x-1;
x = fun2(a);
return a-x; x=x+10;
return 3*x;
(33)A. -18 B. -11 C. -8 D. 0
(34)A. -18 B. -11 C. -8 D. 0
答案:A、C
值调用时,原传递参数值不会被修改!
如果是值传递:那么对于fun1中:a=x-1=-6;x=fun2(a)=fun2(-6);那么在fun2中,x=x+10=-6+10=4,返回3*x=12;这时原参数a=-6并不会被修改,也就是说a的值还是-6;这时,a-x=-6-12=-18;
对于引用调用,在fun2中执行语句x=x+10=-6+10=4时,这时a的值也被修改,变为4,所以返回到fun1中执行a-x时应该为a-x=4-12=-8。
(21)在一个虚拟存储系统中,分配给某个进程3 页内存,开始时这3 页内存为空。页面访问序列是 l、2、
3、4、2、1、5、6、2、1、2、3、7、6、3。若采用最近最久未使用(LRU)页面淘汰算法,缺页次数为( )。
A)10
B)12
C)14
D)16
2012年阿里巴巴校园招聘阿里云C+笔试试题1、(2分)1)请列出两个线程(或进程)死锁的三个必要条件2)当异常(Exception)发生的时候,智能指针(SmartPointer)的析构函数是被谁调用的?3)一般的台式机硬盘一次随机读写大约需要多少毫秒(0.1ms、1ms、10ms、100ms)?4)除了应用程序的系统调用之外,LinuxKernel中的代码在什么情况下还有机会运行?2、(1分)求下面函数的返回值。输入x的值为2012。int func(int x)int countx=0;while(x)+countx;x=x&(x-1);return countx;3、(1分)一进程在执行时,如果按下列页号访问:1、2、3、4、2、1、5、6、2、1、2、3、7、6、3。进程占用4页物理内存,采用FIFO淘汰算法和LRU淘汰算法时,各产生多少次缺页中断?分别写出使用两种方法时,依次被淘汰的页面号以及最后内存空间中剩余的页面。4、(1分)写出下列程序的输出结果:#includeusing name space std;int main() char *a=”Aliyun”; char *b=&a; *b=”programming test”; char *c=+a; a=”talents.”; return printf(“%cn,*+c); 5、(1分)连接A、B两地的公路长240km,现各有一列汽车分别从两地出发相向而行,各自保持匀速50km/h和30km/h。有一鸟儿也和A地的汽车一起从A地出发,以65km/h的速度沿公路朝B地飞行;当它遇到B地的汽车的时候,折返往A飞;再遇到A地汽车的时候,折返往B飞;如此往返。请问当A、B两地出发的汽车相遇的时候,鸟儿飞行了多少km?6、(1分)一个骰子有6个面,分别是1个1、2个2、3个3。请问平均需要抛多少次骰子才能使1、2、3这三面都至少出现一次。7、(1分)请实现一个递归函数将一个字符串反转(字符串最大长度为100)。例如:如果char *str=”abcdef”,反转后的字符串str为“fedcba”。8(2分)请编写测试用例,来判断某一个文件系统中的一个函数实现是否符合规范定义。该函数名为:bool VailidataPath(char* path),其作用是检测用户输入路径是否合法。 系统合法的路径名称规范要求必须同时满足以下四个规则:a) 字符串长度最短为1,最长为2048。b) 只允许出现大小写字母、数字、下划线(_)和斜杠(/)中的一种或多种字符;c) 斜杠(/)禁止连续出现;d) 路径中禁止包含字符串“/delete/”。注意:本题不要求实现ValidataPath()函数,只要求写出测试用例。9、(2分)下面的代码定义一个value为int的节点组成的二叉树的数据结构: struct Node Node * left, right; int value; ;已知二叉树最大深度为10,请实现一函数宽度优先遍历该二叉树并打印所有节点的值。以下深度为4的二叉树遍历宽度优先历结果为:8、5、12、3、6、10、15、1、4、9、11、13、20。851236101514911132010、(3分)给出26个小写字母(az)在一份文档里面的绝对位置信息列表(位置按从小到大顺序,以整数vector形式存在)。例如:字母a出现在4、29、40个字符位置,字母b出现在第10、38、74个字符位置。文档本身可能包含非英语字母字符。请编写一个程序判断给定小写英文单词是否在文档中出现。bool find(vector pos26, char* word);
有以下程序:void f(int *x,int *y){ int *t; t=x; x=y ;y=t; *x=*y;}main(){ int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p>q) { f(p,q);p++;q--} for(i=0;i<8;i++)printf("d,",a[i]);}程序运行后的输出结果是( )。A.8,2,3,4,5,6,7,1,B.5,6,7,8,1,2,3,4,C.1,2,3,4,5,6,7,8,D.8,7,6,5,4,3,2,1,
有以下程序: #include<stdio.h> int f(int x) {int y; if(x==0||x==1)return(3); y=x*x-f(x-2); return y; } main() {int z; z=f(3);printf("%d\n",z); } 程序的运行结果是( )。
A.0
B.9
C.6
D.8
下列程序的输出结果是( )。 void f(int*x,int*y) {int t; t=*x,*x=*y;*y=t; } main() {int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p<q) {f(p,q);p++;q--;} for(i=0;i<8;i+)printf("%d,",a[i]); }
A.8,2,3,4,5,6,7,1
B.5,6,7,8,1,2,3,4
C.1,2,3,4,5,6,7,8
D.8,7,6,5,4,3,2,1
A.x := []int{1, 2, 3,4, 5, 6,}
B.x := []int{1, 2, 3,4, 5, 6}
C.x := []int{1, 2, 3,4, 5, 6}
D.x := []int{1, 2, 3, 4, 5, 6,}
以下数组定义中错误的是______。
A.int x[][3]={0};
B.int x[2][3]={{1,2},{3,4},{5,6}};
C.int x[][3]={{1,2,3},{4,5,6}};
D.int x[][3]={1,2,3,4,5,6};