基本数据类型:
复合数据类型:
引例:
算数运算符
/可以是两个小数相除,若是两个整数相除则结果向下取整
%为取模
递增递减
所谓前置就是先加1,后置就是先运算
逻辑运算符
一维数组
3种定义方式:
1)数据类型 数组名[数组长度];
2)数据类型 数组名[数组长度] = {值1,值2,……}
注意:若实际值与长度不同时,自动用0补足
3)数据类型 数组名[] = {值1,值2,……}
获取首地址
两种方式:arr或&arr[0]
数组长度统计
冒泡排序(后文具体介绍)
- 比较相邻元素: 从第一个元素开始,比较相邻的两个元素,如果它们的顺序不正确(比如在升序排序中,前一个元素大于后一个元素),则交换它们。
- 一次遍历完成: 经过一次遍历,最大(或最小)的元素会被移到序列的最后位置。
- 重复步骤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的区别:
- while 循环:
- 在 循环中,循环条件会在每次循环开始之前被检查。如果条件为真,循环体会执行,然后再次检查条件。如果条件为假,循环终止。
- 这意味着,如果条件一开始就为假,循环体可能一次都不会执行。
- 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)构造
2)赋值
3)大小和交换
size();
返回容器中元素数目 empty(); 判断容器是否为空 swap(st); 交换两个集合容器4)插入和删除
5)查找和统计
相当于是一个小箱子,每次向箱子顶部塞入数据,遵循先进后出(Last In, First Out,LIFO)的原则。栈可以被看作是一种容器,其中元素按照后进先出的顺序进行插入和删除。
格式:
栈的成员函数
代码示例:
使用的时候可以看作数组,但他相对于数组来说可以动态扩展,增加长度
1)构造
2)遍历
第一种遍历方式
第二种遍历方式
3)赋值
4)容量和大小
5)插入和删除
删除start到end之间的元素
clear(); 清空所有元素6)数据存取
operator[];
返回[]处数据 front(); 返回第一个数据 back(); 返回最后一个数据7)互换容器
8)预留空间
当数据量较大时可以一开始就利用reserve预留空间
string内部封装了许多成员方法,如find,copy,delete,insert,replace等
头文件:#include<string>
1)构造
2)赋值
3)字符串插入、拼接和删除
插入:
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位置拼接:
字符用s中从pos开始的n个字符连接到字符串结尾
删除:
4)查找和替换
注意:
find是从左往右查找,rfind是从右往左查找
find找到字符串后返回查找的第一个字符位置,找不到就返回-1
replace在替换时,要指定从哪个位置起,替换多少个字符,替换成什么
5)字符串的比较
注意:若=则返回0,>返回1,<返回-1
6)字符串存取
7)子串
基本概念:以有序的方式存储一组唯一的元素。具体来说,使用红黑树(Red-Black Tree)实现,这使得元素在插入时就会按照特定的顺序进行排序,并且保证了查找、插入和删除操作的高效性能。
注意:set不允许容器出现重复元素,multiset允许容器出现重复元素
头文件:#include<set>
遍历:
1)构造和赋值
2)大小和交换
size();
返回容器中元素数目 empty(); 判断容器是否为空 swap(st); 交换两个集合容器3)插入和删除
4)查找和统计
先进先出的数据结果,有两个出口,只有队头和队尾能被外界访问,因此不存在遍历的行为
1)构造函数
2)赋值
3)数据存取
4)大小
C语言风格:
C++引入的string类类型(函数及其目的)
复制字符串s2到字符串s1
Strcat(s1,s2)
连接字符串s2到s1的末尾
Strlen(s1) 返回字符串s1的长度 Strcmp(s1,s2)若s1=s2,返回0
若s1<s2,返回值小于0
若s1>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各项
原理:比较前后两个数字的大小,大的放在后面,依次遍历所有数字
原理:
- 遍历数组,找到最小(或最大)的元素。
- 将找到的最小(或最大)元素与数组的第一个元素交换位置。
- 排除第一个元素,对剩余的元素进行相同的操作,即在剩余的未排序部分中找到最小(或最大)的元素,并与该部分的第一个元素交换位置。
- 重复以上步骤,直到整个数组排序完成。
缺点:平均时间复杂度为O(n^2),空间复杂度为O(1),性能通常比较差。
原理:
- 将数组视为两部分,一部分是已排序的部分,一部分是未排序的部分。
- 从未排序部分取出第一个元素,在已排序部分中从后往前逐个比较,找到合适的位置插入该元素,使得插入后的部分仍然保持有序。
- 重复上述过程,直到未排序部分为空,整个数组就排好序了。
优点:适合小型数据集或部分有序的数据。
到此这篇c加加编程入门(C加加编程入门教学)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/67601.html