#C1105. 函数参数传递专项练习
函数参数传递专项练习
C++ 函数参数传递 专项练习(10 题)
本卷共 10 题:单项选择题 7 题、判断题 1 题、多项选择题 2 题。
一、单项选择题
- 下方代码的输出结果是?
void swapNum(int *m, int &n){ int tmp=*m; *m=n; n=tmp; }
int a=350,b=120; swapNum(&a,b); cout<<a<<" "<<b;
{{ select(1) }}
- 350 120
- 120 350
- 350 350
- 编译报错
- 已有函数
int getTotal(int x, int y, int z, int k);,int sum = __________;横线处正确的调用语句是
{{ select(2) }}
getTotalgetTotal(phy, chem, bio, geo)getTotal(int phy, chem, bio, geo)getTotal(x, y, z, k)
- 关于 C++ 值传递、指针传递、引用传递,下列说法正确的是
{{ select(3) }}
- 值传递时,函数形参是实参的独立副本,修改形参不会影响实参
- 指针传递时,函数内无法通过指针修改外部变量的值
- 引用传递时,引用变量在定义之后可以重新绑定到另一个变量
- 值传递与引用传递的运行效率完全相同,没有任何区别
- 下方代码执行后输出结果是?
void func(int &x){ x *= 2; }
int main(){
int m = 6;
func(m);
cout << m;
return 0;
}
{{ select(4) }}
- 6
- 12
- 0
- 编译报错
- 下方代码的输出是?
void change(int a, int &b, int *c){ a+=2; b+=4; *c+=6; }
int x=1, y=1, z=1;
change(x, y, &z);
cout << x << " " << y << " " << z;
{{ select(5) }}
- 3 5 7
- 1 5 7
- 3 1 7
- 1 1 1
- 下方代码的输出是?
int x = 2;
void test(int &x){ x += 4; }
int main(){
int x = 7;
test(x);
cout << x << " " << ::x;
return 0;
}
{{ select(6) }}
- 11 2
- 7 6
- 11 6
- 7 2
- 已知
int x = 6; void add(int &x){ x += 5; },main 中定义int x = 9;并调用add(x);,随后执行cout << x << " " << ::x;输出为?
{{ select(7) }}
- 14 6
- 9 6
- 14 11
- 6 14
二、判断题
- 饭卡充值程序
void addMoney(int money){ money += 40; },主函数中int card = 50; addMoney(card); cout << card;,控制台最终输出 90。
{{ select(8) }}
- 正确
- 错误
三、多项选择题
- 关于 C++ 函数三种传参方式,描述正确的是
{{ multiselect(9) }}
- 值传递拷贝独立副本,函数内修改不影响外部原始变量
- 指针传递直接操作原变量内存,可修改实参真实数据
- 引用是原变量别名,无需拷贝副本,能直接修改外部值
- 结构体变量无法作为函数形参传入
- 关于参数传递,下列说法正确的有
{{ multiselect(10) }}
- 值传递生成独立副本,改形参不影响实参
- 引用传递可直接改实参且无拷贝开销
- 指针传递通过解引用可改实参
- 引用绑定后可重新绑定到另一变量
相关
在以下作业中: