#C1105. 函数参数传递专项练习

函数参数传递专项练习

C++ 函数参数传递 专项练习(10 题)

本卷共 10 题:单项选择题 7 题、判断题 1 题、多项选择题 2 题。

一、单项选择题

  1. 下方代码的输出结果是?
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
  • 编译报错
  1. 已有函数 int getTotal(int x, int y, int z, int k);,int sum = __________; 横线处正确的调用语句是

{{ select(2) }}

  • getTotal
  • getTotal(phy, chem, bio, geo)
  • getTotal(int phy, chem, bio, geo)
  • getTotal(x, y, z, k)
  1. 关于 C++ 值传递、指针传递、引用传递,下列说法正确的是

{{ select(3) }}

  • 值传递时,函数形参是实参的独立副本,修改形参不会影响实参
  • 指针传递时,函数内无法通过指针修改外部变量的值
  • 引用传递时,引用变量在定义之后可以重新绑定到另一个变量
  • 值传递与引用传递的运行效率完全相同,没有任何区别
  1. 下方代码执行后输出结果是?
void func(int &x){ x *= 2; }
int main(){
    int m = 6;
    func(m);
    cout << m;
    return 0;
}

{{ select(4) }}

  • 6
  • 12
  • 0
  • 编译报错
  1. 下方代码的输出是?
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
  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
  1. 已知 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

二、判断题

  1. 饭卡充值程序 void addMoney(int money){ money += 40; },主函数中 int card = 50; addMoney(card); cout << card;,控制台最终输出 90。

{{ select(8) }}

  • 正确
  • 错误

三、多项选择题

  1. 关于 C++ 函数三种传参方式,描述正确的是

{{ multiselect(9) }}

  • 值传递拷贝独立副本,函数内修改不影响外部原始变量
  • 指针传递直接操作原变量内存,可修改实参真实数据
  • 引用是原变量别名,无需拷贝副本,能直接修改外部值
  • 结构体变量无法作为函数形参传入
  1. 关于参数传递,下列说法正确的有

{{ multiselect(10) }}

  • 值传递生成独立副本,改形参不影响实参
  • 引用传递可直接改实参且无拷贝开销
  • 指针传递通过解引用可改实参
  • 引用绑定后可重新绑定到另一变量