c++学习1入门与初级算法
不设标题了学的比较杂
输出字符菱形
题目描述
用 *
构造一个对角线长 $5$ 个字符,倾斜放置的菱形。
输入格式
没有输入要求。
输出格式
如样例所示。用 *
构成的菱形。
样例 #1
样例输入 #1
1 |
样例输出 #1
1 | * |
1 | #include<iostream> |
字符串相关
char a[555]输入可以用gets()(可以读入空格)
也可以用cin不能读入空格但是
char字符长度strlen(a)
用string时可用a.length()或a.size()
s.empty() s为空串时返回true
swap() // 交换两个字符串的内容
string类型字符串用加法可以实现连接
1 |
加入这个头文件就可以调用以下函数:
1、
isalpha(x)
判断x是否为字母
2、
isdigit(x)
判断x是否为数字
3、
islower(x)
判断x是否为小写字母
4、
isupper(x)
判断x是否为大写字母
5、
isalnum(x)
判断x是否为字母或数字
6、
ispunct(x)
判断x是否为标点符号
7、
isspace(x)
判断x是否为空格
对于以上函数,如果x符合条件的话,均会返回true
,否则返回false
还有以下函数:
1、
toupper(x)
如果x是小写字母,将其转换成大写字母
2、
tolower(x)
如果x是大写字母,将其转换成小写字母
string
1 |
在本题目中用到的有以下几个函数,也是此头文件下比较常用的函数,更多的可以百度以下
1、
s.erase(x,y)
表示将字符串s从x位置起删除y个字符
2、
s.insert(x,y)
表示将字符串y(或字符y)插入到s的x位置处
3、
s.push_back(x)
表示在s的末尾插入字符x
4、
reverse(s.begin(),s.end())
将字符串s翻转5、s.append(a) 将a字符串加在s后面
6、s=s.substr(l,r) 提取出从s从l的r个字符
7、(int)s.find(a),输出a字符串在s字符串中第一次出现的位置
二分
这两个函数是STL中用于二分查找的两个函数,用法: 假定我们有一个有序的数组aa,并将数xx作为二分查找的目标,那么:
1 | lower_bound(a,a+n,x)-a //下标从0开始 |
它们就能取得最小的aa数组的下标ii,满足ai⩾x。
1 | upper_bound(a,a+n,x)-a //下标从0开始 |
它们就能取得最小的aa数组的下标ii,满足ai > x。
分治
if语句中如果连用两个if,且他们不互斥,若两个条件都满足,则会输出两个if控制的句子,因此条件不互斥还想输出一个时应用else if。
dfs
函数中return ;表示返回上一级函数
指针
指针基础
int a=3;
int *p=NULL;
p=&a;
p=(他存贮的空间位置) 指针变量的值都是一个代表内存地址的长的十六进制数
&p=(指针本身所占的空间位置)
*p=3(p存储的位置所指向的值)
&(*p)=&a先访问p指向的值3,然后通过3访问a的地址
*p=6;会改变p所指向的位置的值
导致a=6;
一级指针指向普通变量地址
二级指针指向比他一级的指针地址 *p1=&p;
&p1=(二级指针的地址)
p1=(所存储的一级指针的地址)
*p1=p=(p所存贮的普通变量的地址)
**p1 = *p =a=6 进行两次操作 套娃
修改**p1就可以修改 *p 以致于修改a的值了
以高级指针操作低级指针
switch case
1 | #include <stdio.h> |
case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。
1 | case 10: printf("..."); break; //正确 |
强制类型转换
1 | int i = 10; |
new和delete运算符
序运行时,计算机的内存被分为4个区:程序代码区、全局数据区、堆和栈。其中,堆可由用户分配和释放。C语言中使用函数malloc()
和free()
来进行动态内存管理。C++则提供了运算符new
和delete
来做同样的工作,而且后者比前者性能更优越,使用更灵活方便。
1 | 指针变量名 = new 类型 |