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来豆包的反应时间更短,而且用了这么就我也习惯了他的使用方式。有事因为某些原因,代码不能运行也可以直接在豆包里面,得到解答并直接运行.

相关推荐
今天要早睡_20 分钟前
C++01_入门基础复习
开发语言·c++
Nuanyt26 分钟前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
Fuyo_11193 小时前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试
w_zero_one4 小时前
递归算法(一)
java·开发语言·算法
Chen_harmony5 小时前
七、STL与string类
开发语言·c++
xxxiugou1235 小时前
C++命名空间与引用全解析
开发语言·c++
风影同志783245 小时前
20 个比特能装下多少行情?——实测拆解 Kronos 的 K 线分词器
算法
写的都是BUG6 小时前
APK 里的钥匙,一直就放在门口:聊聊加固真正该做什么
前端·算法
用户7624117567056 小时前
第十五章 人工智能基础
c++
地平线开发者6 小时前
CLIP 的零样本分类:一组文本如何变成图像分类器?
算法