1. 初识
1.1 常量
#define day 7
const int month 12;
1.2 关键字
2. 数据类型
数据类型:给变量分配合适的内存空间
2.1 整型
2.2 sizeof关键字
2.3 实型(浮点型)
float f1 = 3.14f;
double d1 = 3.14;
2.4 字符型
2.5 字符串型
c风格:
char str[] = "hello word";
c++风格:
string str = "hello word";
c++风格 要加入头文件
#include <string>
2.6 布尔类型
bool flag = ture;
flag = false;
2.7 数据的输入
整型:
cin >> a;
浮点型:
cin >> f;
字符型:
cin >> ch;
字符串型:
cin >> str;
布尔型:
cin >> flag;
3. 运算符
3.1 算术运算符
只有整型变量才可以进行取模运算
前置递增:先让变量+1,在进行表达式运算
a=2; b=++a;
a=3; b=3;
后置递增
a=2; b=a++;
a=3; b=2;
前置递减
a=2; b=--a;
a=1; b=1;
后置递减
a=2; b=a--;
a=1; b=2;
3.2 赋值运算符
3.3 比较运算符
返回值为假值或真值
3.4 逻辑运算符
返回值为假值或真值
4. 程序流程结构
4.1 选择结构
4.1.1 if语句
单行if语句
if(...){
}
多行if语句
if(...){
}
else{
}
多条件if语句
if(...){
}
else if(...){
}
...
else{
}
嵌套if语句
if(...){
if(...){
}
...
else{
}
}
...
4.1.2 三目运算符
运算符返回的是变量
int a = 10;
int b = 20;
(a > b ? a : b) = 100;
a=10 b=100
4.1.3 switch语句
switch(){
case 结果1:
执行语句;
break;
case 结果2:
执行语句;
break;
...
default:
执行语句;
break;
}
判断只能是整型或是字符型
4.2 循环结构
4.2.1 while循环语句
while(循环条件){
}
猜数:
#include<ctime>
srand((unsigned int)time(NULL));
int num = rand() % 100 + 1;
int num1 = 0;
int num2 = 0;
cout << "猜测" << endl;
while (num2<5) {
num2++;
cin >> num1;
if (num1>num) {
cout << "过大" << endl;
}
else if(num1<num){
cout << "过小" << endl;
}
else {
cout << "恭喜" << endl;
break;
}
}
cout << "未猜中" << endl;
4.2.2 do…while循环语句
do{
}
while(...);
int num = 100;
int num_1 = 0;
int num_2 = 0;
int num_3 = 0;
do{
num_1 = num % 10;
num_2 = (num / 10) % 10;
num_3 = num / 100;
if(num_1*num_1*num_1+num_2*num_2*num_2+num_3* num_3*num_3 == num ) {
cout << "水仙花数:" << num << endl;
}
num++;
}
while (num < 1000);
4.2.3 for循环语句
int num_1 = 0;
int num_2 = 0;
int num_3 = 0;
for (int num = 1;num < 101; num++) {
num_1 = num % 10;
num_2 = num / 10;
num_3 = num % 7;
if (num_1==7 || num_2==7 || num_3==0 ) {
cout << "敲桌子" << endl;
}
else {
cout << num << endl;
}
}
4.2.4 嵌套循环
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
cout << j << "*" << i << "=" << i * j <<"\t";
}
cout << endl;
}
4.3 跳转语句
4.3.1 break语句
for(...){
if(...){
break;
}
}
4.3.2 continue语句
for(...){
if(...){
continue;
}
}
4.3.3 goto语句
...
goto FLAG;
...
FLAG:
...
5. 数组
5.1 概述
5.2 一维数组
5.2.1 一维数组定义方式
int arr[5];
int arr[5] = {1,2,3,4,5};
int arr[] = {1,2,3,4,5,6,7,8,9};
5.2.2 一维数组数组名
sizeof(arr)
int arr[] = { 300,350,200,400,250 };
int max = 0;
for (int i = 0; i < 5; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
cout << "最重: " << max << endl;
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
int num = sizeof(arr) / sizeof(arr[0]);
int start = 0;
int end = sizeof(arr) / sizeof(arr[0]) - 1;
int temp = 0;
for (int i=0; i<num; i++) {
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
if (start >= end) {
break;
}
}
for (int j = 0; j < num; j++) {
cout << arr[j] << endl;
}
5.2.3 冒泡排序
int arr[] = { 4,2,8,0,5,7,1,3,9,6,3 };
int num = sizeof(arr) / sizeof(arr[0]);
int temp = 0;
for (int i = 0; i < num-1; i++){
for (int j = 0; j < num-i-1; j++){
if (arr[j] > arr[j + 1]){
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int k = 0; k < num; k++) {
cout << arr[k] << endl;
}
5.3 二维数组
5.3.1 二维数组定义方式
int arr[2][3];
int arr[2][3]={{1,2,3},{4,5,6}};
int arr[2][3]={1,2,3,4,5,6};
int arr[][3]={1,2,3,4,5,6};
5.3.2 二维数组数组名
二维数组的行数:
sizeof(arr)/sizeof(arr[0])
二维数组的列数:
sizeof(arr[0])/sizeof(arr[0][0])
5.3.3 二维数组应用案例
int scores[3][3] = {
{100,100,100},
{90,50,100},
{60,70,80}
};
string names[3] = { "张三","李四","王五" };
for (int i = 0; i < 3; i++) {
int sum = 0;
for (int j = 0; j < 3; j++) {
sum += scores[i][j];
}
cout << names[i] << "的总成绩: " <<sum<< endl;
}
6. 函数
6.1 概述
6.2 函数的定义
int add(int num_1,num_2){
int sum = num_1 + num_2;
return sum;
}
6.3 函数的调用
int a=10;
int b=20;
int c = add(a,b);
定义函数的num_1,num_2为形参
调用函数的a,b为实参
6.4 值传递
如果函数不需要返回值,声明时可以写void
void swap(int num_1,num_2){
int temp = num_1;
num_1 = num_2;
num_2 = temp;
return;
}
int a=10;
int b=20;
swap(a,b);
值传递中,实参的值不会发生变化,只影响形参
6.5 函数的常见样式
1.无参无返
void test1(){
cout << "..." << endl;
}
test1();
2.有参无返
void test1(int a){
cout << "..." << endl;
return;
}
test2(10000);
3.无参有返
int test3(){
cout << "..." << endl;
return 10000;
}
int num1=test3();
4.有参有返
int test4(int a){
cout << "..." << endl;
return a;
}
int num2=test4(10000);
6.6 函数的声明
6.7 函数的分文件编写
函数声明:swap.h
#include<iostream>
using namespace std;
void swap(int num_1, int num_2);
函数定义:swap.cpp
#include"swap.h"
void swap(int num_1, int num_2) {
int temp = num_1;
num_1 = num_2;
num_2 = temp;
cout << "a=" << num_1 << endl;
cout << "b=" << num_2 << endl;
}
函数调用:main()
int a = 10, b = 20;
swap(a, b);
下篇:
7. 指针
7.1 指针的基本概念
7.2 指针变量的定义和使用
int a = 10;
1、指针的定义:数据类型 * 变量名
int * p;
p = &a;
2、指针的使用:通过 * 进行解引用,找到指针指向地址中的数据
cout << " *p = " << *p << endl;
7.3 指针所占内存空间
指针所占内存:32位操作系统4位,64位操作系统8位。
7.4 空指针和野指针
1、空指针:指针初始化
int * p = NULL;
2、野指针:尽量避免
int * p = (int *)0x1100;
7.5 const修饰指针
1、常量指针:指针的指向可以修改,但指向的值不可以修改
const int * p = &a;
*p = 100; (×)
p = &b; (√)
2、指针常量:指针的指向的值可以修改,但指向不可以修改
int * const p = &a;
*p = 100; (√)
p = &b; (×)
3、既修饰指针,又修饰常量:指针指向及其指向的值都不可以修改
const int * const p = &a;
*p = 100; (×)
p = &b; (×)
7.6 指针和数组
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
int * p = arr;
for (int i=0; i < 10; i++){
cout << *p << endl;
p++;
}
7.7 指针和函数
****值传递不改变实参值,地址传递可以修改实参的值****
void swap1(int * p1 , int * p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
main(){
...
int a = 10;
int b = 20;
swap1(&a, &b);
cout << a << endl;
cout << b << endl;
...
}
7.8 指针、数组、函数
void maopao(int * adr,int num) {
int temp = 0;
for (int i = 0; i < num - 1; i++) {
int * p = adr;
for (int j = 0; j < num - i - 1; j++) {
if (*p > *(p+1)) {
temp = *p;
*p = *(p+1);
*(p+1) = temp;
}
p++;
}
}
}
main(){
...
int arr[] = { 4,2,8,0,5,7,10,1,3,9,6 };
int num = sizeof(arr) / sizeof(arr[0]);
maopao(&arr[0], num);
for (int k = 0; k < num; k++) {
cout << arr[k] << endl;
}
...
}
8. 结构体
8.1 结构体基本概念
8.2 结构体定义和使用
8.3 结构体数组
8.4 结构体指针
8.5 结构体嵌套结构体
8.6 结构体做函数参数
8.7 结构体中的const使用场景
8.8 结构体案例
|