1、四舍五入(double 转 int) :正数+0.5,负数-0.5
#include <iostream>
using namespace std;
int main() {
double d;
cin >> d;
// write your code here......
if(d>0)
cout<<(int)(d+0.5);
else cout<<(int)(d-0.5);
return 0;
}
2、冒泡排序
for(int i=0;i<len-1;i++) //第i趟比较
{
for(int j=0;j<len-1-i;j++) //每一次比较交换几次
{
if(arr[j]>arr[j+1])
{
swap(arr[j],arr[j+1]);
}
}
}
3、选择排序
for(int i=0;i<len;i++) //第i趟
{
int min=arr[i];
for(int j=i+1;j<len;j++) //每一趟比较j次
{
if(arr[j]<min)
{
swap(min,arr[j]);
}
}
arr[i]=min;
}
4、获取字符串长度(指针)
(1) 函数 : strlen(str)
#include <iostream>
using namespace std;
int main() {
char str[100] = { 0 };
cin.getline(str, sizeof(str));
int len=0;
char *p=str;
//只要指针没有指向换行符位置
while(*p!='\0'){
//长度加1,指针p后移
len++;
p++;
}
cout<<len<<endl;
return 0;
}
5、'\0' 为字符串结束符,在字符串中分配内存空间,但不计入长度。ASCLL码值为0.
‘\n’ 为换行符,ASCLL码值为10.
6、获取字符串长度:#include <cstring> strlen(str)
7、创建动态数组
二维
int *p=new int[n*n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
p[i+j]=i+j;
cout<<p[i+j]<<" ";
}
int **arr=new int*[n];
for(int i=0;i<n;i++){
arr[i]=new int[n];
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
arr[i][j]=i+j;
}
}
8、string 的 find 函数
//转化为字符串
string str1(str);
string str2(substr);
int i=0;
//从str1下标i开始查找str2
while(str1.find(str2,i)!=-1){
//如果找得到,计数加1
count++;
//i从找到的位置,后移一位
i=str1.find(str2,i)+1;
}
9、cstdlib 头文件:此标头定义了几个通用功能,包括动态内存管理,随机数生成,与环境的通信,整数算术,搜索,排序
10、取消对null的引用
会发现这样的问题:取消对NULL指针的引用。 而我们上面已经为它分配了动态内存空间,却还是出现了这样的原因,是为什么呢?
解决方法:
就是在使用这个指针的时候,先做一个防御性编程,来对这个指针判断是否分配动态内存成功,如果失败,则结束程序(根据不同的返回类型来定义)。
会发现添加了这个防御性编程之后,警告也就不见了。
11、EOF
EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。
在微软的DOS和Windows中,读取数据时终端不会产生EOF。此时,应用程序知道数据源是一个终端(或者其它“字符设备”),并将 ASCII码中的替换字符(Control-Z,代码26)解释为文件结束的指明。
(1)输入以 CTRL+Z 结束
int x;
while(cin>>x){}
//直接输入CTRL+Z的时候 会终止循环
在Windows中CTRL+Z相当于文件结束符EOF,所以你键入CTRL+Z回车后跳出了While循环,才能执行到程序后面的内容。
控制台读入字符^Z,只有另起一行放在行首才会起作用。
(2)其他
ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。
ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。
12、delete 与 delete[ ]
使用new申请的内存,释放时用delete,使用new [ ]申请的内存释放时要用delete [ ]才行,这两个一定要记住,申请时用了方括号,则释放时也要加上方括号,否则就会出错。
13、return; 相当于break;
return语句有两种形式:
1.return;//不带返回值的return语句
2.return 0;//带返回值的return语句,或者返回一个变量或一个函数。
不带返回值的return语句用于,中断返回值为void类型的函数的执行,而带返回值的return则不行。
14、swap(a,b)