学习c++的第六天

目录

数字

定义数字

数学运算

随机数

数组

声明数组

初始化数组

访问数组元素

综合示例

多维数组

指向数组的指针

传递数组给函数

从函数返回数组


数字

定义数字

在下面这个例子中,我们定义了不同类型的数字变量,并给它们赋予不同的值,然后使用cout语句将它们输出到标准输出。

#include 
using namespace std;

int main() {
   // 数字定义
   short  s;
   int    i;
   long   l;
   float  f;
   double d;
   
   // 数字赋值
   s = 10;      
   i = 1000;    
   l = 1000000; 
   f = 230.47;  
   d = 30949.374;
   
   // 数字输出
   cout << "short  s: " << s << endl;
   cout << "int    i: " << i << endl;
   cout << "long   l: " << l << endl;
   cout << "float  f: " << f << endl;
   cout << "double d: " << d << endl;

   return 0;
}

在上述代码中,我们定义了 short、int、long、float 和 double 等不同类型的数字变量,然后为它们赋予了不同的值。通过使用 cout 输出流,我们将每个变量的值输出到屏幕上。最后,我们返回0表示程序正常结束。

数学运算

在 C++ 中,除了可以创建各种函数,还包含了各种有用的函数供您使用。这些函数写在标准 C 和 C++ 库中,叫做内置函数。C++ 内置了丰富的数学函数,可对各种数字进行运算。为了利用这些函数,需要引用数学头文件 。下表列出了 C++ 中一些有用的内置的数学函数。

  1. double cos(double): 返回弧度角(double类型)的余弦值。
  2. double sin(double): 返回弧度角(double类型)的正弦值。
  3. double tan(double): 返回弧度角(double类型)的正切值。
  4. double log(double): 返回参数的自然对数。
  5. double pow(double, double): 假设第一个参数为x,第二个参数为y,则该函数返回x的y次方。
  6. double hypot(double, double): 返回两个参数的平方和的平方根,即返回一个直角三角形的两个直角边构成的斜边长度。
  7. double sqrt(double): 返回参数的平方根。
  8. int abs(int): 返回整数的绝对值。
  9. double fabs(double): 返回任意浮点数的绝对值。
  10. double floor(double): 返回不大于传入参数的最大整数。

以下是一些使用C++内置数学函数的示例代码,

#include 
#include  // 包含cmath头文件以使用内置数学函数
using namespace std;

int main() {
   double x = 4.0;
   double y = 2.0;

   // 求幂运算x^y
   cout << "x ^ y = " << pow(x, y) << endl;

   // 求sin值
   cout << "sin(x) = " << sin(x) << endl;

   // 求cos值
   cout << "cos(x) = " << cos(x) << endl;

   // 求tan值
   cout << "tan(x) = " << tan(x) << endl;

   // 求自然对数ln(x)
   cout << "ln(x) = " << log(x) << endl;

   // 求绝对值
   cout << "abs(-10) = " << abs(-10) << endl;

   // 求平方根
   cout << "sqrt(y) = " << sqrt(y) << endl;

   // 求向下取整
   cout << "floor(2.7) = " << floor(2.7) << endl;

   return 0;
}

输出结果:

x ^ y = 16
sin(x) = -0.756802
cos(x) = -0.653644
tan(x) = 1.15782
ln(x) = 1.38629
abs(-10) = 10
sqrt(y) = 1.41421
floor(2.7) = 2

请注意,这些函数的参数和返回值类型可能会根据具体的函数而有所不同。

随机数

在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。

下面是一个关于生成随机数的简单实例。实例中使用了 time() 函数来获取系统时间的秒数,通过调用 rand() 函数来生成随机数:

#include 
#include  // 包含cstdlib头文件以使用rand()和srand()函数
#include  // 包含ctime头文件以使用time()函数
using namespace std;

int main() {
    // 使用当前时间作为种子来初始化随机数生成器
    srand(time(0));

    for (int i = 0; i < 5; ++i) {
        // 生成一个0到RAND_MAX之间的随机数
        int randomNumber = rand();

        cout << "随机数" << i + 1 << ": " << randomNumber << endl;
    }

    return 0;
}

这个示例代码通过调用srand()函数使用当前时间作为种子来初始化随机数生成器。然后,使用rand()函数生成一个0到RAND_MAX(在标准库中定义的一个常量)之间的随机数。在循环中,我们生成了五个随机数并将它们打印出来。

请注意,由于rand()函数生成的只是伪随机数,因此每次程序运行时生成的随机数序列都是相同的。通过使用不同的种子,例如时间戳,可以改变生成的随机数序列。在示例中,使用time(0)函数获取当前时间的秒数作为种子。

输出结果:

随机数1: 24984
随机数2: 11894
随机数3: 19196
随机数4: 20985
随机数5: 13702

数组

声明数组

在C++中,可以使用数组来存储一组相同类型的元素。声明一个数组需要指定元素的类型和数组的名称,以及数组的大小(元素的数量)。

以下是几种常见的数组声明方式:

1、静态声明:

// 声明一个包含5个整数的数组
int myArray[5];

2、动态声明:

// 声明一个动态大小的整数数组,大小在运行时确定
int size;
cout << "请输入数组大小:";
cin >> size;
int* myArray = new int[size];

请注意,在使用动态声明时,需要使用new运算符来为数组分配内存,并在不再需要数组时使用delete[  ]运算符释放内存。 

3、声明并初始化:

// 声明一个包含5个元素的整数数组,并初始化为特定的值
int myArray[] = {1, 2, 3, 4, 5};

无论采用哪种方式声明数组,都可以通过索引来访问和操作数组中的元素。例如,myArray[0]表示数组中的第一个元素,myArray[1]表示数组中的第二个元素,依此类推。 

初始化数组

在C++中,可以使用多种方式对数组进行初始化。以下是几种常见的数组初始化方法:

1、直接初始化:

int myArray[] = {1, 2, 3, 4, 5};

这种方式使用花括号 {} 将元素逐个列出,并按照顺序将它们赋值给数组。 

2、默认初始化:

int myArray[5] = {};

这种方式会将数组的所有元素都初始化为其对应类型的默认值,对于整数数组来说,默认值是0。 

3、指定部分元素的初始化:

int myArray[5] = {1, 2}; // 第一个和第二个元素被初始化为1和2,其他元素默认初始化为0

这种方式会对指定的元素进行初始化,其他未指定的元素将会被默认初始化。 

4、使用循环初始化:

int myArray[5];
for (int i = 0; i < 5; ++i) {
    myArray[i] = i + 1;
}

这种方式可以在使用循环结构时逐个赋值数组元素。

需要注意的是,数组一旦被初始化,其大小就不能改变。如果需要动态调整数组的大小,可以考虑使用动态分配的数组(例如使用new运算符)或使用C++中的动态数组容器(如std::vector)。

访问数组元素

在C++中,可以使用下标运算符 [  ] 来访问数组元素。下标从0开始,表示数组中的第一个元素。

以下是一些示例代码,展示如何访问数组元素:

int myArray[5] = {1, 2, 3, 4, 5};

// 通过下标访问数组元素
int firstElement = myArray[0]; // 数组的第一个元素,值为1
int thirdElement = myArray[2]; // 数组的第三个元素,值为3

// 使用循环遍历数组并访问每个元素
for (int i = 0; i < 5; i++) {
    std::cout << "myArray[" << i << "] = " << myArray[i] << std::endl;
}

需要注意的是,当使用下标访问数组元素时,需要确保数组下标不越界。否则会导致未定义的行为,可能会访问到不属于数组的内存空间,导致程序崩溃或产生其他错误。

综合示例

#include 

int main() {
    // 创建一个包含5个整数的数组
    int myArray[5] = {1, 2, 3, 4, 5};

    // 访问数组元素并打印输出
    std::cout << "数组元素:" << std::endl;
    for (int i = 0; i < 5; ++i) {
        std::cout << "myArray[" << i << "] = " << myArray[i] << std::endl;
    }

    // 计算数组元素的和
    int sum = 0;
    for (int i = 0; i < 5; ++i) {
        sum += myArray[i];
    }
    std::cout << "数组元素的和为:" << sum << std::endl;

    // 查找数组中的最大值
    int max = myArray[0];
    for (int i = 1; i < 5; ++i) {
        if (myArray[i] > max) {
            max = myArray[i];
        }
    }
    std::cout << "数组中的最大值为:" << max << std::endl;

    return 0;
}

输出结果:

数组元素:
myArray[0] = 1
myArray[1] = 2
myArray[2] = 3
myArray[3] = 4
myArray[4] = 5
数组元素的和为:15
数组中的最大值为:5

多维数组

在C++中,多维数组是指包含多个维度的数组。它是由多个一维数组组成的,可以理解为数组的数组。可以使用多种方式声明和初始化多维数组。

以下是几种常见的多维数组的声明和初始化方法:

1、声明和初始化一个二维数组:

int myArray[3][4] = {{1, 2, 3, 4},
                     {5, 6, 7, 8},
                     {9, 10, 11, 12}};

这表示一个3行4列的二维数组,其中每个元素都被初始化为指定的值。 

2、使用循环初始化多维数组:

int myArray[3][4];
for (int i = 0; i < 3; ++i) {
    for (int j = 0; j < 4; ++j) {
        myArray[i][j] = i * 4 + j + 1;
    }
}

这种方式使用嵌套的循环来逐个赋值多维数组的元素。

需要注意的是,多维数组在内存中是以连续的块存储的,其中每个维度的大小必须是已知的。数组的第一个索引表示行数,第二个索引表示列数。

访问多维数组的元素使用类似于一维数组的方式,使用多个下标运算符 [] 进行访问,例如 myArray[row][column]。

以下是一个访问多维数组元素的示例:

int element = myArray[1][2]; // 访问第2行第3列的元素,值为7

实例

#include 

int main() {
    // 声明和初始化一个3行4列的二维数组
    int myArray[3][4] = { {1, 2, 3, 4},
                         {5, 6, 7, 8},
                         {9, 10, 11, 12} };

    // 访问数组元素并打印输出
    std::cout << "二维数组元素:" << std::endl;
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            std::cout << "myArray[" << i << "][" << j << "] = " << myArray[i][j] << std::endl;
        }
    }

    // 计算数组元素的和
    int sum = 0;
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            sum += myArray[i][j];
        }
    }
    std::cout << "二维数组元素的和为:" << sum << std::endl;

    // 查找数组中的最大值
    int max = myArray[0][0];
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            if (myArray[i][j] > max) {
                max = myArray[i][j];
            }
        }
    }
    std::cout << "二维数组中的最大值为:" << max << std::endl;

    return 0;
}

输出结果:

二维数组元素:
myArray[0][0] = 1
myArray[0][1] = 2
myArray[0][2] = 3
myArray[0][3] = 4
myArray[1][0] = 5
myArray[1][1] = 6
myArray[1][2] = 7
myArray[1][3] = 8
myArray[2][0] = 9
myArray[2][1] = 10
myArray[2][2] = 11
myArray[2][3] = 12
二维数组元素的和为:78
二维数组中的最大值为:12

指向数组的指针

在C++中,指针可以用来指向数组。可以使用指针来访问数组的元素,或者将指针作为参数传递给函数以便在函数中操作数组。

下面是一个示例代码,演示了如何使用指针来访问数组的元素:

#include 

int main() {
    int myArray[5] = {1, 2, 3, 4, 5};  // 声明和初始化一个包含5个元素的数组

    int* ptr = myArray;  // 将指针ptr指向数组myArray的第一个元素

    // 使用指针访问数组元素并打印输出
    for (int i = 0; i < 5; ++i) {
        std::cout << "myArray[" << i << "] = " << *(ptr + i) << std::endl;
    }

    return 0;
}

在上面的示例中,我们声明并初始化了一个包含5个元素的数组myArray。然后,我们将指针ptr指向数组的第一个元素。通过使用指针和偏移量的方式,我们可以访问数组的各个元素,并通过解引用操作符*来获取元素的值。

除了上述示例中的访问方式,还可以使用下标运算符[]来访问数组元素。例如,可以使用ptr[i]来访问数组的第i个元素。

输出结果:

myArray[0] = 1
myArray[1] = 2
myArray[2] = 3
myArray[3] = 4
myArray[4] = 5

传递数组给函数

在C++中,可以通过传递指向数组的指针或者使用引用来将数组作为参数传递给函数。下面是两种常见的方法:

1、传递指向数组的指针:

#include 

// 函数接受一个指向数组的指针作为参数
void printArray(int* arr, int size) {
    for (int i = 0; i < size; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}

int main() {
    int myArray[5] = {1, 2, 3, 4, 5};

    // 将数组myArray的首地址传递给printArray函数
    printArray(myArray, 5);

    return 0;
}

上述示例中,printArray函数接受一个指向整型数组的指针和数组的大小作为参数。在main函数中,我们将数组myArray的首地址传递给printArray函数。 

2、使用引用传递数组:

#include 

// 函数接受一个引用参数来传递数组
void printArray(int (&arr)[5]) {
    for (int i = 0; i < 5; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}

int main() {
    int myArray[5] = {1, 2, 3, 4, 5};

    // 将数组myArray作为引用传递给printArray函数
    printArray(myArray);

    return 0;
}

上述示例中,printArray函数接受一个对整型数组的引用作为参数。在main函数中,我们将数组myArray作为引用传递给printArray函数。

这两种方法都可以实现将数组传递给函数,并在函数中操作数组元素。你可以根据具体需求选择使用哪种方法。

从函数返回数组

在C++中,函数可以返回指向数组的指针或使用引用来返回数组。下面是两种常见的方法:

1、返回指向数组的指针:

#include 

// 函数返回指向整型数组的指针
int* getArray() {
    static int myArray[5] = {1, 2, 3, 4, 5};
    return myArray;
}

int main() {
    // 使用指针接收函数返回的数组首地址
    int* ptr = getArray();

    // 打印输出数组元素
    for (int i = 0; i < 5; ++i) {
        std::cout << *(ptr + i) << " ";
    }
    std::cout << std::endl;

    return 0;
}

上述示例中,getArray函数返回一个指向整型数组的指针。在main函数中,我们使用指针接收函数返回的数组首地址,并打印输出数组元素。 

2、使用引用返回数组:

#include 

// 函数使用引用参数返回整型数组
void getArray(int (&arr)[5]) {
    for (int i = 0; i < 5; ++i) {
        arr[i] = i + 1;
    }
}

int main() {
    int myArray[5];

    // 将数组myArray作为引用传递给getArray函数
    getArray(myArray);

    // 打印输出数组元素
    for (int i = 0; i < 5; ++i) {
        std::cout << myArray[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

上述示例中,getArray函数使用引用参数返回整型数组。在main函数中,我们将数组myArray作为引用传递给getArray函数,并打印输出数组元素。

这两种方法都可以实现从函数中返回数组。你可以根据具体需求选择使用哪种方法。

你可能感兴趣的:(C++,学习,c++,开发语言,1024程序员节)