C++笔记1:C++基础入门

C++
0719:
1.标识符:
不能是关键字、字母数字下划线组成、字母或下划线打头、有大小写之分。

2.数据类型:

short 2字节
int 4字节
long  windows(4字节) Linux(4字节32-8字节64位)
longlong 8字节
float 4字节 
double 8字节
char 1字节
bool 1字节

3.sizeof关键字:
数据类型所占内存大小
语法: sizeof(short) 或 sizeof(m) 其中m是提前定义好的变量,注意sizeof(int n)的写法是错误的

4.科学计数法

float f2 = 3e2; // 3 * 10 ^ 2 = 300
cout << "f2 = " << f2 << endl;

float f3 = 3e-2;  // 3 * 0.1 ^ 2 = 0.03
cout << "f3 = " << f3 << endl;

5.转义字符

回车 \n
单斜杠 \\
制表符 \t
双引号 \"

6.字符串

char str1[] = "abcdefg";
string str2 = "hijklmn";

7.输出与输入
输出:

cout << "13" << endl;

输入:

int a=0;
cout << "请输入整型变量a的值:" << endl;
cin >> a;
cout << a << endl;

8.运算符
8.1 算术运算符±*/%

int a1 = 10;
int b1 = 3;
cout << a1 + b1 << endl;
cout << a1 - b1 << endl;
cout << a1 * b1 << endl;
cout << a1 / b1 << endl; 
cout << a1 % b1 << endl;//取模运算,必须是两个整数

8.2 比较运算符 > ;< ;>= ;<=
8.3 逻辑运算符 && || !

9.程序流程结构
9.1顺序结构
9.2循环结构
9.3选择结构

9.1 选择结构
9.1.1 if语句:

if()
{}
else if
{}
else if
{}
else
{}

9.1.2 三目运算符:

int a1 = 10;
int b1 = 3;
int c1 = (a1 < b1) ? a1 : b1;
cout << "比较小的一个数是:" << c1 << endl;

9.1.3 switch语句:
//输入1-5的数字就一直循环,其他情况退出循环

int m; 
	bool flag = true;
	do {
		cout << "请输入一个1-5的数字:" << endl;	
		cin >> m;
		switch (m) {
		case 1: cout << "1分" << endl; break;
		case 2: cout << "2分" << endl; break;
		case 3: cout << "3分" << endl; break;
		case 4: cout << "4分" << endl; break;
		case 5: cout << "5分" << endl; break;
		default:cout << "输入有误" << endl; flag = false;
		}
	}while (flag);

//输入1-5的数字就退出循环,其他情况就一直循环

int m; 
bool flag = false;
do {
	cout << "请输入一个1-5的数字:" << endl;
	cin >> m;
	switch (m) {
	case 1: cout << "1分" << endl; flag = false; break;
	case 2: cout << "2分" << endl; flag = false; break;
	case 3: cout << "3分" << endl; flag = false; break;
	case 4: cout << "4分" << endl; flag = false; break;
	case 5: cout << "5分" << endl; flag = false; break;
	default:cout << "输入有误" << endl; flag = true;
	}
}while (flag);	

9.2 循环结构
9.2.1 while(){}
生成随机数:

srand((unsigned)time(NULL));
//rand()产生的随机数在每次运行的时候都是与上一次相同的。若要不同,用函数srand()初始化它。
//可以利用srand((unsigned int)(time(NULL))的方法,产生不同的随机数种子,因为每一次运行程序的时间是不同的。
 
for (int i = 0; i < 10; i++) {
	int r = (rand() % (100 - 1 + 1) + 1);
		cout << r << endl;		
		//每次生成的随机数都不同
}

9.2.2 do{}while();
9.2.3 for( ; ; ){}
猜数字
水仙花数
拍桌子

9.3 跳转语句
9.3.1 break语句

  • 出现在switch条件语句中,作用是终止case并跳出switch
  • 出现在循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套循环中,跳出最近的内层循环语句
    9.3.2 continue语句
    跳过本次循环中余下尚未执行的语句,继续执行下一次循环

10 数组
**特点1:**数组中的每个数据元素都是相同的数据类型
**特点2:**数组是由连续的内存位置组成的
10.1 一维数组

int c[]={1,2,3,4,5};
cout << "数组所占的字节数/空间大小为:" << sizeof(c) << endl;//20 
int arr_num = sizeof(c)/sizeof (c[0]);//求数组长度
for(int i = 0; i < arr_num; i++)//输出数组的所有元素
	cout << c[i] << " ";
cout << endl;
//冒泡排序
	int c[] = {41,2,83,0,-5,70,1,3,9};
	int arr_num = sizeof(c) / sizeof(c[0]);
	cout << arr_num << endl;
	for (int i = 0; i < arr_num - 1; i++)
		for (int j = 0; j < arr_num - i - 1; j++)
			if (c[j] > c[j + 1])
				swap(c[j], c[j + 1]);
	for (int i = 0; i < arr_num; i++)
		cout << c[i] << " ";
	cout << endl;

10.2 二维数组

int arr[][3]={0,1,2,3,4,5,6,7};
int arr_num = sizeof(arr)/sizeof(arr[0][0]);//元素个数为9
int arr_hang = sizeof(arr)/sizeof(arr[0]);	//行数3
int arr_lie = sizeof(arr[0])/sizeof(arr[0][0]);//列数3
for(int i = 0; i < arr_hang; i++){
	for(int j = 0; j < arr_lie; j++)
		cout << arr[i][j] << " ";
	cout << endl;
}

11 函数
11.1 函数的声明和定义
声明可以多次,定义只能一次

11.2 函数的分文件编写
函数分文件编写一般有4个步骤:

  1. 创建后缀名为.h的头文件
  2. 创建后缀名为.cpp的源文件
  3. 头文件中写函数的声明
  4. 源文件中写函数的定义
头文件提供接口;源文件提供实现。
.h头文件中,只能存在变量或者函数的声明, 而不要放定义。
原文链接:https://blog.csdn.net/nicky_zs/article/details/2166048举一个例子吧,假设所有的数学函数只有两个:f1和f2,那么我们把它们的定义放在math.cpp里:
/* math.cpp */
double f1()
{
    //do something here....
    return;
}
double f2(double a)
{
    //do something here...
    return a * a;
}
/* end of math.cpp */

并把“这些”函数的声明放在一个头文件math.h中:
/* math.h */
double f1();
double f2(double);
/* end of math.h */

在另一个文件main.cpp中,我要调用这两个函数,那么就只需要把头文件包含进来:
/* main.cpp */
#include "math.h"
main()
{
    int number1 = f1();
    int number2 = f2(number1);
}
/* end of main.cpp */

这 样,便是一个完整的程序了。
————————————————
常见的7种排序算法:
原文链接:https://blog.csdn.net/liang_gu/article/details/80627548
1、冒泡排序:n-1趟,每趟把最大的放到最右边

2、选择排序:n-1趟,每趟把最小的放到最左边

3、插入排序:从第2个元素开始,共n-1趟,被插入的元素跟其左边的元素作比较,往左移,直到合适的位置

4、希尔排序:先确定步进间距,然后分组,组内用插入排序https://blog.csdn.net/zpznba/article/details/88407089

5、快速排序:第一个元素作为参考值,从最右边开始,每趟把一个元素放到正确的位置;用到了递归,递归的终止条件是`if(start > end) return;`

6、归并排序:有序序列两两合并,用到了递归,递归的终止条件是`if(start > end) return;`

7、堆排序:
7.1 基本概念:
	堆的结构可以分为大根堆和小根堆,是一个完全二叉树;
	每个结点的值都大于其左孩子和右孩子结点的值,称之为大根堆;
	每个结点的值都小于其左孩子和右孩子结点的值,称之为小根堆。
	
7.2 堆排序的基本思想:
	将待排序列构造成一个大顶堆(或小顶堆),整个序列的最大值(或最小值)就是堆顶的根结点,`将根节点的值和堆数组的末尾元素交换,此时末尾元素就是最大值(或最小值)`,然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次大值(或次小值),如此反复执行,最终得到一个有序序列。
7.3 堆排序的步骤:
	将无序数组构造成大根堆(升序)/小根堆(降序);
	固定最大值,将剩余的数重新构造成一个大根堆。
https://blog.csdn.net/u010452388/article/details/81283998
————————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值