2021-03-23 【C++】【字符串】

每日三百行代码 第十八天


万能头文件#include<bits/stdc++.h>

#include<bits/stdc++.h>这个头文件包含以下等等C++中包含的所有头文件:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

等等……

不过在国内oj中,poj,hdu 不支持这个函数

这几个oj的编译器问题,其他国外的oj

还有台湾的oj都支持,CF,Topcoder也都支持。

auto 存储类

自 C++ 11 以来,auto 关键字用于两种情况:声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。

C++98标准中auto关键字用于自动变量的声明,但由于使用极少且多余,在C++11中已删除这一用法。

根据初始化表达式自动推断被声明的变量的类型,如:

auto f=3.14; //double

auto s(“hello”); //const char*

auto z = new auto(9); // int*

auto x1 = 5, x2 = 5.0, x3=‘r’;//错误,必须是初始化为同一类型

static 存储类

static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。

static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。

在 C++ 中,当 static 用在类数据成员上时,会导致仅有一个该成员的副本被类的所有对象共享。

#include

// 函数声明

void func(void);

static int count = 10; /* 全局变量 */

int main()

{

while(count–)

{

func();

}

return 0;

}

// 函数定义

void func( void )

{

static int i = 5; // 局部静态变量

i++;

std::cout << "变量 i 为 " << i ;

std::cout << " , 变量 count 为 " << count << std::endl;

}

变量 i 为 6 , 变量 count 为 9

变量 i 为 7 , 变量 count 为 8

变量 i 为 8 , 变量 count 为 7

变量 i 为 9 , 变量 count 为 6

变量 i 为 10 , 变量 count 为 5

变量 i 为 11 , 变量 count 为 4

变量 i 为 12 , 变量 count 为 3

变量 i 为 13 , 变量 count 为 2

变量 i 为 14 , 变量 count 为 1

变量 i 为 15 , 变量 count 为 0


位运算符

位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:

在这里插入图片描述

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101


A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

下表显示了 C++ 支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:

在这里插入图片描述

赋值运算符

在这里插入图片描述

杂项运算符

在这里插入图片描述


C++ 中 continue 语句的语法:

#include

using namespace std;

int main ()

{

// 局部变量声明

int a = 10;

// do 循环执行

do

{

if( a == 15)

{

// 跳过迭代

a = a + 1;

continue;

}

cout << “a 的值:” << a << endl;

a = a + 1;

}while( a < 20 );

return 0;

}

C++ 中 goto 语句的语法:

#include

using namespace std;

int main ()

{

// 局部变量声明

int a = 10;

// do 循环执行

LOOP:do

{

if( a == 15)

{

// 跳过迭代

a = a + 1;

goto LOOP;

}

cout << “a 的值:” << a << endl;

a = a + 1;

}while( a < 20 );

return 0;

}

a 的值: 10

a 的值: 11

a 的值: 12

a 的值: 13

a 的值: 14

a 的值: 16

a 的值: 17

a 的值: 18

a 的值: 19

在这里插入图片描述


C++ 数学运算

在 C++ 中,除了可以创建各种函数,还包含了各种有用的函数供您使用。这些函数写在标准 C 和 C++ 库中,叫做内置函数。您可以在程序中引用这些函数。

C++ 内置了丰富的数学函数,可对各种数字进行运算。下表列出了 C++ 中一些有用的内置的数学函数。

在这里插入图片描述

C++ 随机数

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

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

#include

#include

#include

using namespace std;

int main ()

{

int i,j;

// 设置种子

srand( (unsigned)time( NULL ) );

/* 生成 10 个随机数 */

for( i = 0; i < 10; i++ )

{

// 生成实际的随机数

j= rand();

cout <<"随机数: " << j << endl;

}

return 0;

}


C++ 字符串

在这里插入图片描述

#include

#include

using namespace std;

int main ()

{

char str1[13] = “runoob”;

char str2[13] = “google”;

char str3[13];

int len ;

// 复制 str1 到 str3

strcpy( str3, str1);

cout << "strcpy( str3, str1) : " << str3 << endl;

// 连接 str1 和 str2

strcat( str1, str2);

cout << "strcat( str1, str2): " << str1 << endl;

// 连接后,str1 的总长度

len = strlen(str1);

cout << "strlen(str1) : " << len << endl;

return 0;

}

当上面的代码被编译和执行时,它会产生下列结果:

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

tr1 到 str3

strcpy( str3, str1);

cout << "strcpy( str3, str1) : " << str3 << endl;

// 连接 str1 和 str2

strcat( str1, str2);

cout << "strcat( str1, str2): " << str1 << endl;

// 连接后,str1 的总长度

len = strlen(str1);

cout << "strlen(str1) : " << len << endl;

return 0;

}

当上面的代码被编译和执行时,它会产生下列结果:

[外链图片转存中…(img-LaolwwlS-1716563891852)]

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

[外链图片转存中…(img-pPLMCaXy-1716563891852)]

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值