对于双精度的浮点数num,设计一个名为depart的函数,得到num的整数部分和小数部分,并将结果返回至main 函数。
(1).给出设计思路和depart函数的原型;
(2).给出函数实现的关键程序代码.
下列程序的输出是什么?【 】
#include<stdio.h>
void swap(int p1,int p2){
int *temp=&p1;
p1=p2;
p2=*temp;
}
int main(void){
int i=1,j=2;
swap(i,j);
printf("%i=%d,j=%d\n",i,j);
return 0;
}
A、i=1,j=2
B、i=2,j=1
C、i=1,j=1
D、i=2,j=2
函数main()、f()的定义如下所示。调用函数f()时,第一个参数采用传值(call byvalue)方式,第二个参数采用传引用(call byreference)方式,main()执行后输出的值为【 】。
main() {
int x=2;
f(1,x);
print(x);
}
f(int x int &a) {
x=2*a+1;
a=x+3;
return;
}
A、2
B、4
C、5
D、8
实现函数调用时,形参具有独立的存储空间。在传值方式下,是将实参的值拷贝给形参;
在传引用方式下,是将实参的地址传递给形参,或者理解为被调用函数中形参名为实参的别名,因此,对形参的修改实质上就是对实参的修改。
本题中,函数调用f(1,x)执行时,形参x的初始值为1,a的值为2,经过运算“x=2*a+1”,修改了函数f()的形参x的值(x的值改为5),再经过运算“a=x+3”后,a的值改为8,a实质上是main()函数中x的别名,因此返回main()函数之后,x的值为8。
若程序中定义了三个函数f1、f2和f3,并且函数f1执行时会调用f2、函数f2执行时会调用f3,那么正常情况下,【 】。
A、f3执行结束后返回f2继续执行,f2结束后返回f1继续执行
B、f3执行结束后返回f1继续执行,f1结束后返回f2继续执行
C、f2执行结束后返回f3继续执行,f3结束后返回f1继续执行
D、f2执行结束后返回f1继续执行,f1结束后返回f3继续执行
在发生嵌套调用时,需按照后进先出的方式进行返回。若函数 f1执行时调用f2、函数f2执行时调用f3,那么正常情况下,函数f3执行结束后会返回 f2继续执行,f2 结束后返回f1。
一个变量通常具有名字、地址、值、类型、生存期、作用域等属性,其中,变量地址也称为变量的左值(1-value),变量的值也称为其右值(r-value)。当以引用调用方式实现函数调用时,【 】。
A、将实参的右值传递给形参
B、将实参的左值传递给形参
C、将形参的右值传递给实参
D、将形参的左值传递给实参
进行函数调用时,需要向被调用函数传递信息,传值调用是将调用函数(caller)中实参的值(右值)传递给被调用函数(callee)中的形参,引用调用是将调用函数中实参的地址(左值)传递给被调用函数。