c++上课题目

1. 引用的声明及访问

代码:

复制代码
#include<iostream>
using namespace std;
int x = 5, y =10;
int &r = x;//r为x的变量别名
void print()
{
    cout << "x=" << x << "y" << y << "r=" << r << endl;
    cout << "  Address of x" << &x << endl;//输入变量x的内存地址
    cout << "Address of y" << &y << endl;
    cout << "Address of r" << &r << endl;
}
int main() 
{
    print() ;//调用输出函数
    r = y;//赋值
    print() ;
    y = 100;//再赋值
    x = y - 10;//x,y同时改变
    print();
    return 0;
}

运行结果:

复制代码
x=5 y=10 r=5
  Address of x: 0x7ffeefbff53c
Address of y: 0x7ffeefbff538
Address of r: 0x7ffeefbff53c
x=10 y=10 r=10
  Address of x: 0x7ffeefbff53c
Address of y: 0x7ffeefbff538
Address of r: 0x7ffeefbff53c
x=90 y=100 r=90
  Address of x: 0x7ffeefbff53c
Address of y: 0x7ffeefbff538
Address of r: 0x7ffeefbff53c

2. 通过引用参数修改实际参数的值

代码:

复制代码
#include <iostream>
using namespace std;
void swap ( int &x, int &y )//引用参数成为实际参数变量额、的别名
{
    int t = x;
    x = y;
    y = t;
}
int main () 
{
    int a = 3, b = 5, d = 20, c = 10;
    cout << "a=" << "  b=" << b << endl ;
    swap (a,b) ;
    cout << "a=" << a << " b=" << b << endl;
    swap ( c, d);
    cout << "c=" << c << " d=" << d << endl;
}

运行结果:

复制代码
a = 3 b = 5
a =5 b = 3
c =10 d = 20
c = 20 d =10

3. 三种参数的使用示例

复制代码
#include<iostream>
using namespace std;
int Fun(const int &x, int &y,int z)
{
    y++;
    z++;
    return y;
}
int main () 
{
    int a= 1, b = 3, c = 3, d = 0;
    cout << "a=" << a << "B=" << b << "c=" << c << "d=" << d << endl;
    d =Fun(a, b, c);
    cout << "a=" << a << " b=" << b << "c=" << c << "d=" << d << endl;
    return 0;
}

结果:

复制代码
a=1 b=2 c=3 d=0
a=1 b=3 c=3 d=3

4.动态空间管理示例

复制代码
#include<iostream>
#include <ctime>
#include <cmath>
#include <iomanip>
using namespace std;
const int N =30;
int main() 
{
    int *p, *sum, i;
    sum= new int (0);
    p = new int (N);
    if(p==NULL) {
        cout << "allocation failure.\n";
        return 0;
    }
    srand( time(NULL));
    for(i =0; i < N;i++)
    {
        p[i] = rand() % 100;
        if(p[i] %2)
            (*sum) ++;
    }
    for(i=0;i <N;i++)
    {
        cout << setw(4) << p[i];
        if((i+1) % 10==0)
        cout << endl;
    }
    cout << "the number of odd is:" << *sum << endl;
    delete []p;
    delete sum;
    return 0;
}

运行结果:

复制代码
  43  66  71  26  11  46  64  80  24  31
 36  56  42  88  40  82  10  85  68  69
 84  47  91  44  14  57  88  40  56  18
the number of odd is: 10

5. 异常处理的步骤

复制代码
#include<iostream>
using namespace std;
int divide(int x, int y) 
{
    if(y == 0) throw y;
    return x /y;

}
int main () 
{
    int a = 10 , b= 5, c =0 ;
    try
    {
        cout <<"a/b" << divide ( a,b) << endl;
        cout <<"b/a" << divide ( b,a) << endl;
        cout <<"a/c" << divide ( a,c) << endl;
        cout <<"c/b" << divide ( c,b) << endl;
    }
    catch (int ) 
    {
        cout << "except of divide zero" << endl;

     }
     cout << "calculate finished" << endl;
     return 0;
     
}

运行结果

复制代码
 a/b2
b/a0.5
except of divide zero
calculate finished

6.课后习题

1.
复制代码
#include <iostream>
using namespace std;
int main()
{
    int a, b, c;
    char ch;
    cin >> a >> ch >> b >> c;
    cout << a << endl << ch << endl << b << endl << c;
    return 0;
}

运行结果:

复制代码
1
A
2
3
2.
复制代码
#include <iostream>
using namespace std;
int main()
{
    int arr[4] = {1, 2, 3, 4}, i;
    int *a = arr;
    int &p = a; 
    p++;
    *p = 100;
    cout << *a << "\t" << *p << endl;
    for (i = 0; i < 4; i++)
        cout << arr[i] << "\t";
    cout << endl;
    int b = 10;
    p = &b;
    cout << *a << "\t" << *p << endl;
    for (i = 0; i < 4; i++)
        cout << arr[i] << "\t";
    cout << endl;
    return 0;
}

运行结果:

复制代码
100  100
1  100  3  4
10  10
1  100  3  4
3.
复制代码
#include <iostream>
using namespace std;
int i = 0;
int main()
{
    int i = 5;
    {
        int i = 7;
        cout << "i=" << i << "::i=" << ::i << endl;
        cout << "::i=" << ::i << endl;
        ::i = 1;
        cout << "::i=" << ::i << endl;
    }
    cout << "i=" << i << endl;
    cout << "please input x,y:";
    ::i = 6;
    i += ::i;
    ::i = 100;
    cout << "i=" << i << endl;
    cout << "::i=" << ::i << endl;
    return 0;
}

运行结果:

复制代码
i=7::i=0
::i=0
::i=1
i=5
please input x,y:
i=6
::i=100
4.
复制代码
#include <iostream>
using namespace std;
void f(double x = 50.6, int y = 10, char z = 'A');
int main()
{
    double a = 216.34;
    int b = 2;
    char c = 'E';
    f();
    f(a);
    f(a, b);
    f(a, b, c);
    return 0;
}
void f(double x, int y, char z)
{
    cout << "x=" << x << "\t" << "y=" << y << "\t";
    cout << "z=" << z << endl;
}

运行结果:

复制代码
x=50.6   y=10   z=A
x=216.34   y=10   z=A
x=216.34   y=2   z=A
x=216.34   y=2   z=E
5.
复制代码
#include <iostream>
using namespace std;
int & s(const int &a, int &b)
{
    b += a;
    return b;
}
int main()
{
    int x = 500, y = 1000, z = 0;
    cout << x << '\t' << y << '\t' << z << '\n';
    s(x, y);
    cout << x << '\t' << y << '\t' << z << '\n';
    z=s(x, y);
    cout << x << '\t' << y << '\t' << z << '\n';
    s(x, y) = 200;
    cout << x << '\t' << y << '\t' << z << '\n';
    return 0;
}

运行结果:

复制代码
500    1000    0
500    1500    0
500    2000    2000
500    200    2000
6.
复制代码
#include <iostream>
using namespace std;
void fun(int x, int &y)
{
    x += y;
    y += x;
}
int main()
{
    int x = 5, y = 10;
    fun(x, y);
    fun(y, x);
    cout << "x=" << x << ",y=" << y << endl;
    return 0;
}

运行结果:

复制代码
x=25 , y=25

完成方式:根据书本例题,在vs code上打出代码,并运行结果,复制到markdown里面,我有时还使用豆包,我认为比起deepseek来豆包的反应时间更短,而且用了这么就我也习惯了他的使用方式。有事因为某些原因,代码不能运行也可以直接在豆包里面,得到解答并直接运行.

相关推荐
木子.李34717 分钟前
排序算法总结(C++)
c++·算法·排序算法
闪电麦坤951 小时前
数据结构:递归的种类(Types of Recursion)
数据结构·算法
freyazzr1 小时前
C++八股 | Day2 | atom/函数指针/指针函数/struct、Class/静态局部变量、局部变量、全局变量/强制类型转换
c++
小熊猫写算法er2 小时前
终极数据结构详解:从理论到实践
数据结构
Gyoku Mint2 小时前
机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
人工智能·python·算法·机器学习·pandas·ai编程·matplotlib
纪元A梦2 小时前
分布式拜占庭容错算法——PBFT算法深度解析
java·分布式·算法
fpcc2 小时前
跟我学c++中级篇——理解类型推导和C++不同版本的支持
开发语言·c++
px不是xp3 小时前
山东大学算法设计与分析复习笔记
笔记·算法·贪心算法·动态规划·图搜索算法
-qOVOp-3 小时前
408第一季 - 数据结构 - 栈与队列的应用
数据结构