/ 知识库     / 试卷库

等级2016年春程序员软考( )

函数 main()、test()的定义如下所示。调用函数test时,第一个参数采用传值方式,第二个参数采用传引用方式,man()函数中“ printi(x,y)”执行后,输出结果为【 】。

main(){

int x=1,y=5;

test(x,y);

print(x,y);

}

test (int x,int &a){

a=x+a*2;

x=x+1;

return;

}

A、1,5

B、3,5

C、7,5

D、7,10

7,5

程序执行时调用函数test时,是将第一个实参y的值拷贝给形参x,而将第二个实参x的地址传递给形参a,或者可以理解为在test中对a的修改等同于是对 main()函数中x的修改。因此test执行时,其运算“a=x+a*2”就是“a=5+1*2”,结果是将a(初始值为1)的值修改为7,也就是 main()中x的值变为7。而“x=x+1”仅修改test中x的值,与 main()中的y和x都无关。因此,在 main()函数中执行“ print(x,y)”后,输出的值为“7,5”。

等级2016年春程序员软考( )

函数调用时若实参是数组名,则是将【 】传递给对应的形参。

A、数组元素的个数

B、数组所有元素的拷贝

C、数组空间的起始地址

D、数组空间的大小

数组空间的起始地址

函数调用以数组作为实参时,是将数组空间的首地址传递给对应的形参,要求形参是指针参数。

等级2016年春程序员软考( )

目标程序经过【 】后形成在计算机上运行的可执行程序。

A、汇编

B、反编译

C、预处理

D、链接

链接

等级2016年春程序员软考( )

一个应用软件的各个功能模块可采用不同的编程语言来编写,分别编译并产生【 】。

A、源程序

B、目标程序

C、汇编程序

D、子程序

目标程序

等级2015年秋程序员软考( )

设N和B都是(无符号)整形变量,下面C代码段的功能是计算变量B的二进制表示中【 】。

N=0;

while(B){

    B=B&(B-1);//“&”是按位“与”运算

    N++;

}

A、数字1的个数

B、数字1比数字0多的数目

C、数字0的个数

D、数字0比数字1多的数目

数字1的个数

如果B=0(二进制全0),则计算得到N=0。

如果B非0(二进制表示中含有数字1),则B-1必然是将最靠右的数字1变成0,并将其右面(若存在)连续若干个0变成1。B&(B-1)的结果就是将原来B的最靠右的数字变成0,其他数字不变。

B .........10...0 

B-1 .........01...1 

B&(B-1) .........00...0 

这样,B=B&(B-1)的结果就是清除了B中最靠右的1个数字1。

题中的代码段中,每循环1 次这样的运算,变量 B 中的数字1 就减少 1个,N 就增加:直到B变为全0为止。因此,该代码段的功能就是计算 B 中数字1 的个数。