2025年c加加编程入门(C加加编程入门教学)

c加加编程入门(C加加编程入门教学)基本数据类型 int 用于表示整数 float 用于表示单精度浮点数 double 用于表示双精度浮点数 char 用于表示字符 bool 用于表示布尔值 只能取 或 void 表示无类型 通常用于函数返回类型或指针类型 复合数据类型 数组 由相同类型的元素组成的集合 结构体 由不同类型的成员组成的复合类型 枚举 一组具有命名值的常量 类 一种封装数据和操作的方式

大家好,我是讯享网,很高兴认识大家。



基本数据类型:

int用于表示整数float用于表示单精度浮点数double用于表示双精度浮点数char用于表示字符bool用于表示布尔值,只能取 或 void表示无类型,通常用于函数返回类型或指针类型

复合数据类型:

数组由相同类型的元素组成的集合结构体()由不同类型的成员组成的复合类型枚举()一组具有命名值的常量类()一种封装数据和操作的方式,支持面向对象编程指针()存储内存地址的变量,用于间接访问内存中的数据引用()提供现有变量的别名,用于简化代码和避免复制

引例:

 

讯享网

算数运算符

/可以是两个小数相除,若是两个整数相除则结果向下取整

%为取模

递增递减

++前置递增a=2,b=++aa=3,b=3++后置递增a=2,b=a++a=3,b=2–前置递减a=2,b=–aa=1,b=1–后置递减a=2,b=a–a=1,b=2

所谓前置就是先加1,后置就是先运算

逻辑运算符

运算符术语示例结果!非!a若a为假则!a为真&&与a&&b若a与b都为真则为真,否则为假||或a||b若a与b有一个为真则为真,否则为假

一维数组

3种定义方式:

1)数据类型 数组名[数组长度];

2)数据类型 数组名[数组长度] = {值1,值2,……}

注意:若实际值与长度不同时,自动用0补足

3)数据类型 数组名[] = {值1,值2,……}

讯享网
获取首地址

两种方式:arr或&arr[0]

数组长度统计
 
冒泡排序(后文具体介绍)
  1. 比较相邻元素: 从第一个元素开始,比较相邻的两个元素,如果它们的顺序不正确(比如在升序排序中,前一个元素大于后一个元素),则交换它们。
  2. 一次遍历完成: 经过一次遍历,最大(或最小)的元素会被移到序列的最后位置。
  3. 重复步骤1和2: 重复进行上述步骤,直到序列完全有序。在每次遍历中,待排序序列的长度减一,因为每次遍历都会将一个元素放置到了正确的位置上

二维数组

定义方式

二维数组定义的4种方式:

1)数据类型 数组名[ 行数 ][ 列数 ];

2)数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2} ,{数据3,数据4} };

3)数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4};

4)数据类型 数组名[ ][ 列数 ] = { 数据1,数据2,数据3,数据4}

注意:常用第二种,可读性较强

讯享网
计算行数与列数

二维数组的行数:

二维数组的列数:

地址

二维数组首地址: 或 

二维数组第1个元素的地址:  或 

二维数组第 0 行的地址: 或或 

二维数组第 i 行的地址:或

二维数组第 i 行首元素的地址:或或或

二维数组第 i 行第 j 列元素的地址:或

for循环


讯享网

 

while循环

while(表达式)语句;

while(表达式){

    语句1;

    语句2;

}

例:用while打印数组

讯享网

do-while循环

do{

    语句1;

    语句2;

}

while(条件表达式)

示例:获取输入,直到输入的值为正数为止

 

while和do-while的区别

  1. while 循环
    • 在 循环中,循环条件会在每次循环开始之前被检查。如果条件为真,循环体会执行,然后再次检查条件。如果条件为假,循环终止。
    • 这意味着,如果条件一开始就为假,循环体可能一次都不会执行。
  2. do-while 循环
    • 在 循环中,循环体会先执行一次,然后再检查循环条件。只要条件为真,循环体会继续执行,否则循环终止。
    • 这意味着, 循环至少会执行一次循环体,即使条件一开始就为假。

嵌套循环

示例:水仙花数字

讯享网

单行格式if

 

多行格式if

讯享网

语法

 

结构体创建变量

讯享网

结构体数组

 

结构体指针

讯享网

结构体嵌套

结构体中成员是另一个结构体

主函数为main(),但可以创作其他函数进行运算,只需在主函数中调用即可,以下以阶乘为例

 

STL(Standard Template Library)是 C++ 标准库的一部分,它提供了一组通用的模板类和函数,用于实现常见的数据结构和算法。STL 的设计旨在提供一种高效、灵活和可重用的方法来处理数据结构和算法问题。总的来说,STL库装了许多算法和组件,包含多种函数,可用于开发各类应用程序

基本用法

格式:

讯享网
 

cmp用法

在sort比较函数中传入排序函数,>为降序,<为升序

讯享网

map是一个关联容器,它提供了一种将键与值关联起来的方式,map中的每个元素都是一个键(key-value pair),其中键(key)是唯一的,值(value)则可以不唯一。它基于红黑树(Red-Black Tree)实现。

注意:map不允许容器中有重复的key值,multimap允许容器中有重复的key

格式:

 
讯享网

1)构造

map<T1,T2> mp;map对象默认构造形式map(const map &qmp);拷贝构造函数

2)赋值

map& operator=(const map &mp);重载等号操作符

3)大小和交换

size();

返回容器中元素数目empty();判断容器是否为空swap(st);交换两个集合容器

4)插入和删除

insert(elem);在容器中插入元素clear();清除所有元素erase(pos);删除pos迭代器所指的元素,返回下一个元素的选代器erase(beg,end);删除区间[beg,end)的所有元素,返回下一个元素的迭代器erase(elem);删除容器中值为elem的元素。

5)查找和统计

find(key);查找是否存在key,若存在返回该键的元素的迭代器,若不存在,返回set.end()count(key);统计key的元素的个数

相当于是一个小箱子,每次向箱子顶部塞入数据,遵循先进后出(Last In, First Out,LIFO)的原则。栈可以被看作是一种容器,其中元素按照后进先出的顺序进行插入和删除。

格式:

 

栈的成员函数

.empty()判断栈是否为空,空则返回true.push(…)在栈顶增加元素.pop()在栈顶移除元素.top()返回栈顶元素.size()返回栈的元素数量

代码示例:

讯享网

使用的时候可以看作数组,但他相对于数组来说可以动态扩展,增加长度

1)构造

 
讯享网

2)遍历

v.begin()返回迭代器,这个迭代器指向容器中第一个数据v.end()返回迭代器,这个迭代器指向容器元素的最后元素的下一个位置vector<int>::iterator 拿到这种容器的迭代器类型

第一种遍历方式

 

第二种遍历方式

讯享网

3)赋值

vector& operator=(const vector &v); 重载赋值运算符assign(v.begin(),v.end());将[v.begin(),v.end())区间中的元素赋值给本身assign(n,elem);将n个elem赋值给本身
 

4)容量和大小

empty();判断容器是否为空capacity();容器容量size();容器中元素个数resize(int num);重新指定长度num,变短删末尾元素,变长以默认值填充新位置resize(int num,elem);重新指定长度num,变短删末尾元素,变长以elem填充新位置

5)插入和删除

push_back(elem);尾部插入元素elempop_back();删除最后一个元素insert(const_iterator pos,elem);指向的位置pos处插入一个元素eleminsert(const_iterator pos,int count,elem);指向的位置pos处count元素elemerase(const_iterator pos);指向的位置pos处删除元素erase(const_iterator start,const_iterator end);

删除start到end之间的元素

clear();清空所有元素

6)数据存取

at(int id);返回id处数据

operator[];

返回[]处数据front();返回第一个数据back();返回最后一个数据

7)互换容器

swap(vec);将vec与本身元素互换
讯享网

8)预留空间

reserve(int len);预留len个元素长度

当数据量较大时可以一开始就利用reserve预留空间

string内部封装了许多成员方法,如find,copy,delete,insert,replace等

头文件:#include&lt;string&gt;

1)构造

string();构造空字符串string(const char* s);拷贝s所指向的字符串序列,使字符串s初始化string(const char* s, size_t n);拷贝s所指向的字符串序列的第n个到结尾的字符string(size_t n, char c);将字符c复制n次string(const string& str);拷贝构造函数。使用一个string对象初始化另一个对象string(const string& str, size_t pos, size_t n = npos);拷贝s中从pos位置起的n个字符,若npos&gt;字符串长度,就拷贝到字符串结尾结束
 

2)赋值

string& operator=(const char* s);char*类型字符串赋值给当前的字符串string& operator=(const string &s);把字符串s赋给当前的字符串string& operator=(char c);字符赋值给当前的字符串string& assign(const char *s);把字符串s赋给当前的字符串string& assign(const char s, int n);把字符串s的前n个字符赋给当前的字符串string& assign(const string &s);把字符串s赋给当前字符串string& assign(int n, char c);用n个字符c赋给当前字符串

3)字符串插入、拼接和删除

插入:

void push_back (char c);向字符串末尾追加一个字符

string& insert(size_t pos, const string& str);

插入字符串拷贝string& insert (size_t pos, const char
s);插入c形式的字符串string& insert (size_t pos, const char* s, size_t n);将字符串s的前n个字符插到pos位置
讯享网

拼接:

string& operator+=(const char* str);重载+=操作符string& operator+=(const char c);重载+=操作符string& operator+=(const string& str);重载+=操作符string& append(const char *s);把字符串s连接到当前字符串结尾string& append(const char *s, int n);把字符串s的前n个字符连接到当前字符串结尾string& append(const string &s);同operator+“(const string& str)string& append(const string &s,int pos,int n);

字符用s中从pos开始的n个字符连接到字符串结尾

删除:

string& erase(int pos, int n = npos);删除从pos开始的第n个字符
 

4)查找和替换

int find(const string& str, int pos = 0) const;查找str最后一次位置,从pos开始查找int find(const char s, int pos =0)const;查线s第一次出现位置,从pos开始查找int find(const char s, int pos, int n) const;从pos位置查找s的前n个字符第一次位置int find(const char c, int pos=0) const;查找字符c第一次出现位置int rfind(const string& str, int pos = npos) const;查找str最后一次位置,从pos开始查找int rfind(const char* s, int pos = npos) const;查找s最后一次出现位置.从pos开始查找int rfind(const char* s, int pos, int n) const;从pos查找s的前n个字符最后一次位置int rfind(const char c, int pos = 0) const;查找李符c最后一次出现位置string& replace(int pos, int n, const string& str);替换从pos开始n个字符为字符串strstring& replace(int pos, int n, const char* s);替换从pos开始的n个字符为字符串s

注意:

find是从左往右查找,rfind是从右往左查找

find找到字符串后返回查找的第一个字符位置,找不到就返回-1

replace在替换时,要指定从哪个位置起,替换多少个字符,替换成什么

5)字符串的比较

int compare(const string &s) const;与字符串s比较int compare(const char *s) const:与字符串s比较

注意:若=则返回0,&gt;返回1,&lt;返回-1

讯享网

6)字符串存取

char& operator ;通过[]方式取字符char& at(int n);通过at方式取字符
 

7)子串

string substr(int pos=0,int n = npos) const;返回由pos开始的n个字符组成的字符串
讯享网

基本概念:以有序的方式存储一组唯一的元素。具体来说,使用红黑树(Red-Black Tree)实现,这使得元素在插入时就会按照特定的顺序进行排序,并且保证了查找、插入和删除操作的高效性能。

注意:set不允许容器出现重复元素,multiset允许容器出现重复元素

头文件:#include&lt;set&gt;

遍历:

 

1)构造和赋值

set&lt;T&gt; st;默认构造函数set(sonst set &st);拷贝构造函数set& operator=(const set &st);重载等号操作符
讯享网

2)大小和交换

size();

返回容器中元素数目empty();判断容器是否为空swap(st);交换两个集合容器
 

3)插入和删除

insert(elem);在容器中插入元素clear();清除所有元素erase(pos);删除pos迭代器所指的元素,返回下一个元素的选代器erase(beg,end);删除区间[beg,end)的所有元素,返回下一个元素的迭代器erase(elem);删除容器中值为elem的元素。
讯享网

4)查找和统计

find(key);查找是否存在key,若存在返回该键的元素的迭代器,若不存在,返回set.end()count(key);统计key的元素的个数

先进先出的数据结果,有两个出口,只有队头和队尾能被外界访问,因此不存在遍历的行为

1)构造函数

queue&lt;T&gt; que;queue对象默认构造形式queue(const queue &que);拷贝构造函数

2)赋值

queue& operator=(const queue &que);重载等号操作符

3)数据存取

push(elem);往队尾添加元素pop();从队头移除一个元素back();返回最后一个元素front();返回第一个元素

4)大小

empty();判断堆栈是否为空size();返回栈的大小

C语言风格:

 

C++引入的string类类型(函数及其目的)

Strcpy(s1,s2)

复制字符串s2到字符串s1

Strcat(s1,s2)

连接字符串s2到s1的末尾

Strlen(s1)返回字符串s1的长度Strcmp(s1,s2)

若s1=s2,返回0

若s1&lt;s2,返回值小于0

若s1&gt;s2,返回值大于0

Strchr(s1,s2)返回一个指针,指向s1中字符ch第一次出现的位置Strstr(s1,s2)返回一个指针,指向s1中s2第一次出现的位置

1)对字符数组得输入方法

1.1cin使用空白字符作为一次输入的结尾,并忽略该空字
讯享网

该情况下只能输入一个单词,若输入了多个单词,只会取第一个单词,其余单词被忽略掉

1.2使用getline()/get()函数完成面向行的输入

区别:主要区别在于它们处理输入流的方式: 用于读取整行并丢弃定界符,而 则用于逐字符读取,并保留定界符在输入流中。

#cin.getline()

 

nums:代表从该队列中获取nums-1个字符到line中(最后一个字符为0)若超出nums-1,后面的都无法取到。

delim:指定分界符,表示遇到分界符后当前字符串的输入将停止,其后的会保留在输入队列中作为下一个字符串的开始。

讯享网

#cin.get()

 

get会在输入队列中保留最后的换行符,若不做处理可能出现问题,以下方式可以避免:

讯享网
1.3数字与字符串混合输入
 

2)对string对象的输入方法

讯享网

1)常用函数

2)读写string

 

若要保留输入时的空格,可以使用getline

讯享网

3)cctype头文件

4)用for循环完成cctype各项

 

原理:比较前后两个数字的大小,大的放在后面,依次遍历所有数字

讯享网

原理:

  1. 遍历数组,找到最小(或最大)的元素。
  2. 将找到的最小(或最大)元素与数组的第一个元素交换位置。
  3. 排除第一个元素,对剩余的元素进行相同的操作,即在剩余的未排序部分中找到最小(或最大)的元素,并与该部分的第一个元素交换位置。
  4. 重复以上步骤,直到整个数组排序完成。

缺点:平均时间复杂度为O(n^2),空间复杂度为O(1),性能通常比较差。

 

原理:

  1. 将数组视为两部分,一部分是已排序的部分,一部分是未排序的部分。
  2. 从未排序部分取出第一个元素,在已排序部分中从后往前逐个比较,找到合适的位置插入该元素,使得插入后的部分仍然保持有序。
  3. 重复上述过程,直到未排序部分为空,整个数组就排好序了。

优点:适合小型数据集或部分有序的数据。

讯享网

小讯
上一篇 2025-05-31 12:59
下一篇 2025-05-28 12:35

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/193543.html