假期在家一直没网,是时候整理一下子笔记了
C++基础
02C++再出发
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world! " <<" C++再出发"<< endl;
return 0;
}
03注释
- 单行注释
//
- 多行注释
/**/
04 变量
…
05常量
1.#define
宏常量
2. const
修饰的变量
#include <iostream>
#define Day 7
using namespace std;
int main()
{
cout << "一周有" <<Day<<"天"<<endl;
const int month=12;
cout << "一年有" <<month<<"月"<<endl;
return 0;
}
06–07
。。。
08整型
整型 | 字节 |
---|---|
short | 2 |
int | 4 |
long | |
long long | 8 |
09sizeof 关键字
计算统计数据类型大小
cout <<sizeof(short)<<sizeof(int)<<sizeof(long)<<sizeof(long long)<<endl;
2448
10 实数
浮点型 | 字节 | 有效范围 |
---|---|---|
float | 4 | 7位 |
double | 8 | 15-16位 |
科学计数法 3e2
11-12 字符型/转义字符
1.ASCII
2. 转义字符 \\
\n
\t
13字符串类型
- C风格字符串
char 变量名 []="字符串";
- C++风格
string
#include <iostream>
#include <string>
using namespace std;
int main()
{
char str[]="Hello World";
cout <<str<<endl;
string str1("Hello Boy");
cout <<str1<<endl;
return 0;
}
Hello World
Hello Boy
14 布尔类型
- bool true/false
15数据输入
- cin
cin>>变量;
int i;
cin>>i;
cout <<i<<endl;
45
45
16-23运算符
- 加减乘除 除数不能为0
- 取模运算 %
++
--
#include <iostream>
using namespace std;
int main()
{
int a=0;
a++;
cout<<a<<endl;
cout<<a++<<endl;
cout<<++a<<endl;
return 0;
}
- 幅值运算符
- 比较运算符
- 逻辑运算符
!
&&
||
24-41程序流程结构
- 选择结构
if
if else
if elseif else
#include <iostream>
using namespace std;
int main()
{
int num1=0;
int num2=0;
int num3=0;
cout << "请输入小猪1" << endl;
cin>>num1;
cout << "请输入小猪2" << endl;
cin>>num2;
cout << "请输入小猪3" << endl;
cin>>num3;
if(num1>num2)
{
if(num1>num3)
cout<<"1"<<endl;
else
cout<<"3"<<endl;
}
else
{
if(num2>num3)cout<<"2"<<endl;
else cout<<"3"<<endl;
}
return 0;
}
-
三目运算符
c=a>b:a?b
(a>b:a?b)=100
返回变量可以做左值 -
switch语句
break
default
4. 循环结构
- while循环(注意死循环)
#include <iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
//利用当前时间生成随机数
srand((unsigned int)time(NULL));
int num=rand()%100+1;
cout<<num<<endl;
int val;
cin>>val;
while(val!=num)
{
if(val>num)
cout<<"大了"<<endl;
else
cout<<"小了"<<endl;
cin>>val;
}
return 0;
}
- do while
#include <iostream>
using namespace std;
int main()
{
int i=100;
while(i<1000)
{
int g=i%10;
int s=i/10%10;
int b=i/100;
int p=g*g*g+s*s*s+b*b*b;
if(p==i)
cout<<p << "是水仙花数" << endl;
i++;
}
return 0;
}
- for 循环结构
#include <iostream>
using namespace std;
int main()
{
for(int i=1;i<=100;i++)
{
if(i%7==0)
{
cout<<i<<"是七的倍数"<<endl;
continue;
}
int s=i/10;
int g=i%10;
if(s==7||g==7)
{
cout<<i<<"是七的倍数"<<endl;
continue;
}
}
return 0;
}
//可以合并
- 嵌套循环
乘法口诀表(行列分析)
#include <iostream>
using namespace std;
int main()
{
for(int i=1;i<=9;i++)
{
//cout<<i<<endl;
for (int j=1;j<=i;j++)
{
cout<<j<<"*"<<i<<" ";
}
cout<<endl;
}
cout << "Hello world!" << endl;
return 0;
}
- break continue goto
goto FLAG
FLAG:
42-49 数组
- 一维数组
- 数据类型,连续空间
- 定义(3种)
- 数组名(长度,首地址,常量)
长度=数组大小/元素大小 - 练习
int weight[]={300,350,200,400,250};
int m=0;
for(int i=0;i<5;i++)
{
if(weight[i]>m)
m=weight[i];
}
cout<<m<<endl;
#include <iostream>
using namespace std;
int main()
{
int arr[]={1,3,2,5,4};
int start=0,eend=4;
int temp=0;
for(int i=0;i<5;i++)
{
cout<<arr[i]<<endl;
}
while(start<eend)
{
temp=arr[start];
arr[start]=arr[eend];
arr[eend]=temp;
start++;
eend--;
}
for(int i=0;i<5;i++)
{
cout<<arr[i]<<endl;
}
return 0;
}
- 冒泡算法
#include <iostream>
using namespace std;
int main()
{
int arr[]={4,2,8,0,5,7,1,3,9};
for(int i=0;i<9-1;i++)
{
for(int j=0;j<9-1-i;j++)
{
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<9;i++)
cout << arr[i] << endl;
return 0;
}
- 二维数组
- 列必须指定
- 数组名(内存(行列),首地址)
- 例子
#include <iostream>
using namespace std;
int main()
{
int arr2[][3]={100,100,100,90,50,100,60,70,80};
int total[3]={0,0,0};
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
total[i] +=arr2[i][j];
}
}
for(int i=0;i<3;i++)
{
cout<<total[i]<<endl;
}
return 0;
}
50-55 函数
- 定义 调用
- 值传递
- 声明 定义只能有一次
56-63 指针
- 定义 访问
- 指针内存
int a=5;
int *p=&a;
cout<<sizeof(p)<<endl;
< 4
-
空指针不能访问
-
野指针(非法空间)
-
const
const int * p --int是常量
int * const p --p不能指向其他 -
指针 数组 --地址访问
-
指针 函数 --地址传递
-
指针 函数 数组–冒泡排序
64-71 结构体
- 自定义数据类型
- 定义与使用
- 结构体数组
- 结构体指针
- 结构体嵌套 --教师学生
- 结构体作为函数参数–值传递,地址传递
- 结构体 const使用场景(地址传递-限制修改)
- 例子
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
struct Student
{
string sName;
int score;
};
struct Tearcher
{
string tName;
struct Student sArray[5];
};
void allocatespace(struct Tearcher tArray[],int len)
{
string nameseed="ABCDE";
for(int i=0;i<len;i++)
{
tArray[i].tName="Teacher_";
tArray[i].tName+=nameseed[i];
for(int j=0;j<5;j++)
{
tArray[i].sArray[j].sName="Student_";
tArray[i].sArray[j].sName+=nameseed[i];
int random=rand()%61+40;
tArray[i].sArray[j].score=random;
}
}
}
void PrintInfo(struct Tearcher tArray[],int len)
{
for(int i=0;i<len;i++)
{
cout<<"老师姓名:"<<tArray[i].tName<<endl;
for(int j=0;j<5;j++)
{
cout<<"\t学生姓名:"<< tArray[i].sArray[j].sName<<"考生分数:"<< tArray[i].sArray[j].score<<endl;
}
}
}
int main()
{
srand((unsigned int)time(NULL));
struct Tearcher tArray[3];
allocatespace(tArray,3);
PrintInfo(tArray,3);
return 0;
}
#include <iostream>
#include <string>
using namespace std;
struct Hero
{
string name;
int age;
string sex;
};
void bublesort(struct Hero arr[],int len)
{
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-1-i;j++)
{
if(arr[j].age>arr[j+1].age)
{
Hero temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
int main()
{
Hero heroArray[5]=
{
{"刘备",23,"男"},
{"关羽",22,"男"},
{"张飞",21,"男"},
{"赵云",20,"男"},
{"貂蝉",19,"女"},
};
int len =sizeof(heroArray)/sizeof(heroArray[0]);
bublesort(heroArray,len);
for(int i=0;i<len;i++)
{
cout<<"name"<<heroArray[i].name<<"age"<<heroArray[i].age<<"sex"<<heroArray[i].sex<<endl;
}
cout << "Hello world!" << endl;
return 0;
}
基础-案例通讯录管理系统
系统需求
- 添加联系人
- 添加新人,信息包含(姓名、性别、年龄、联系电话、家庭住址)最多纪录1000条
- 显示联系人
- 显示通讯录中所有联系人信息
- 删除联系人
- 按照姓名删除联系人
- 查找联系人
- 按照姓名查找联系人
- 修改联系人
- 按照姓名修改指定联系人
-
清空联系人
-
退出通讯录
- 退出当前使用的通讯录
菜单功能
void showMenu()
{
cout<<"**********************"<<endl;
cout<<"*****1.添加联系人*****"<<endl;
cout<<"*****2.显示联系人*****"<<endl;
cout<<"*****3.删除联系人*****"<<endl;
cout<<"*****4.查找联系人*****"<<endl;
cout<<"*****5.修改联系人*****"<<endl;
cout<<"*****6.清空联系人*****"<<endl;
cout<<"*****0.退出通讯录*****"<<endl;
cout<<"**********************"<<endl;
}
退出功能
int select=0; //用户选择输入
while(true)
{
showMenu();
cin>>select;
switch(select)
{
case 1://1.添加联系人
break;
case 2://2.显示联系人
break;
case 3://3.删除联系人
break;
case 4://4.查找联系人
break;
case 5://5.修改联系人
break;
case 6://6.清空联系人
break;
case 0://0.退出通讯录
cout<<"欢迎下次使用"<<endl;
return 0;
break;
default:
break;
}
}
添加联系人
- 添加新人,信息包含(姓名、性别、年龄、联系电话、家庭住址)最多纪录1000条
- 设计联系人结构体
struct Person
{
//姓名
string m_name;
//性别
int m_Sex;
//年龄
int m_age;
//联系方式
string m_phone;
//地址
string m_adder;
};
- 设计通讯录结构体
#define MAX 1000
struct Addressbooks
{
//联系人数组
struct Person personArray[MAX];
//当前人员个数
int m_size;
};
- main中创建通讯录
Addressbooks abs;
abs.m_size=0;
- 封装添加联系人函数
void addPerson(Addressbooks * abs)
{
//是否满
if(abs->m_size==MAX)
{
cout<<"通信录已满,无法添加!"<<endl;
return;
}
else
{
//添加联系人
//姓名
string name;
cout<<"请输入姓名:!"<<endl;
cin>>name;
abs->personArray[abs->m_size].m_name=name;
//性别
cout<<"请输入性别:!"<<endl;
cout<<"1---男"<<endl;
cout<<"2---女"<<endl;
int sex=0;
while(true)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[abs->m_size].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
//年龄
cout<<"请输入年龄:!"<<endl;
int age=0;
cin>>age;
abs->personArray[abs->m_size].m_age=age;
//联系人
string phone;
cout<<"请输入联系电话:!"<<endl;
cin>>phone;
abs->personArray[abs->m_size].m_phone=phone;
//家庭住址
string address;
cout<<"请输入家庭住址:!"<<endl;
cin>>address;
abs->personArray[abs->m_size].m_adder=address;
abs->m_size++;
cout<<"添加成功!"<<endl;
system("pause");
system("cls");
}
}
- 测试添加联系人功能
显示联系人
void showPerson(Addressbooks* abs)
{
if(abs->m_size==0)
{
cout<<"当前记录为空"<<endl;
}
else
{
for(int i=0;i<abs->m_size;i++)
{
cout<<"姓名"<<abs->personArray[i].m_name<<'\t';
cout<<"性别"<<(abs->personArray[i].m_Sex==1?"男":"女")<<'\t';
cout<<"年龄"<<abs->personArray[i].m_age<<'\t';
cout<<"电话"<<abs->personArray[i].m_phone<<'\t';
cout<<"住址"<<abs->personArray[i].m_adder<<endl;
}
}
system("pause");
system("cls");
}
删除联系人
- 是否存在
int isExist(Addressbooks* abs,string name)
{
for(int i=0;i<abs->m_size;i++)
{
if(abs->personArray[i].m_name==name)
{
return i;
}
}
return -1;
}
- 删除联系人
void deletePerson(Addressbooks* abs)
{
cout<<"请输入您要删除的联系人"<<endl;
string name;
cin>>name;
int ret=isExist(abs,name);
if(ret!=-1)
{
for(int i=ret;i<abs->m_size-1;i++)
{
abs->personArray[i]=abs->personArray[i+1];
}
abs->m_size--;
}
else
{
cout<<"查无此人"<<endl;
}
cout<<"删除成功"<<endl;
system("pause");
system("cls");
}
查找联系人
void findPerson(Addressbooks* abs)
{
cout<<"请输入您要查找的联系人"<<endl;
string name;
cin>>name;
int ret=isExist(abs,name);
if(ret!=-1)
{
cout<<"姓名"<<abs->personArray[ret].m_name<<'\t';
cout<<"性别"<<(abs->personArray[ret].m_Sex==1?"男":"女")<<'\t';
cout<<"年龄"<<abs->personArray[ret].m_age<<'\t';
cout<<"电话"<<abs->personArray[ret].m_phone<<'\t';
cout<<"住址"<<abs->personArray[ret].m_adder<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
修改联系人
void modifyPerson(Addressbooks * abs)
{
cout<<"请输入您要修改的联系人"<<endl;
string name;
cin>>name;
int ret=isExist(abs,name);
if(ret!=-1)
{
string name;
cout<<"请输入姓名:!"<<endl;
cin>>name;
abs->personArray[ret].m_name=name;
//性别
cout<<"请输入性别:!"<<endl;
cout<<"1---男"<<endl;
cout<<"2---女"<<endl;
int sex=0;
while(true)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[ret].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
//年龄
cout<<"请输入年龄:!"<<endl;
int age=0;
cin>>age;
abs->personArray[ret].m_age=age;
//联系人
string phone;
cout<<"请输入联系电话:!"<<endl;
cin>>phone;
abs->personArray[ret].m_phone=phone;
//家庭住址
string address;
cout<<"请输入家庭住址:!"<<endl;
cin>>address;
abs->personArray[ret].m_adder=address;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
清空联系人
void clearPerson(Addressbooks * abs)
{
abs->m_size=0;
cout<<"是否清空"<<endl;
cout<<"1---是"<<endl;
cout<<"2---否"<<endl;
int temp=0;
while(true)
{
cin>>temp;
if(temp==1||temp==2)
{
if(temp==1)
{
abs->m_size=0;
cout<<"通讯录已清空"<<endl;
}
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
system("pause");
system("cls");
}
代码汇总
#include <iostream>
#include<string>
#include<cstdlib>
using namespace std;
//菜单显示
void showMenu()
{
cout<<"**********************"<<endl;
cout<<"*****1.添加联系人*****"<<endl;
cout<<"*****2.显示联系人*****"<<endl;
cout<<"*****3.删除联系人*****"<<endl;
cout<<"*****4.查找联系人*****"<<endl;
cout<<"*****5.修改联系人*****"<<endl;
cout<<"*****6.清空联系人*****"<<endl;
cout<<"*****0.退出通讯录*****"<<endl;
cout<<"**********************"<<endl;
}
//退出功能
//联系人结构体
struct Person
{
//姓名
string m_name;
//性别
int m_Sex;
//年龄
int m_age;
//联系方式
string m_phone;
//地址
string m_adder;
};
//通讯录结构体
#define MAX 1000
struct Addressbooks
{
//联系人数组
Person personArray[MAX];
//当前人员个数
int m_size;
};
//1.添加联系人
void addPerson(Addressbooks * abs)
{
//是否满
if(abs->m_size==MAX)
{
cout<<"通信录已满,无法添加!"<<endl;
return;
}
else
{
//添加联系人
//姓名
string name;
cout<<"请输入姓名:!"<<endl;
cin>>name;
abs->personArray[abs->m_size].m_name=name;
//性别
cout<<"请输入性别:!"<<endl;
cout<<"1---男"<<endl;
cout<<"2---女"<<endl;
int sex=0;
while(true)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[abs->m_size].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
//年龄
cout<<"请输入年龄:!"<<endl;
int age=0;
cin>>age;
abs->personArray[abs->m_size].m_age=age;
//联系人
string phone;
cout<<"请输入联系电话:!"<<endl;
cin>>phone;
abs->personArray[abs->m_size].m_phone=phone;
//家庭住址
string address;
cout<<"请输入家庭住址:!"<<endl;
cin>>address;
abs->personArray[abs->m_size].m_adder=address;
abs->m_size++;
cout<<"添加成功!"<<endl;
system("pause");
system("cls");
}
}
//2.显示联系人
void showPerson(Addressbooks* abs)
{
if(abs->m_size==0)
{
cout<<"当前记录为空"<<endl;
}
else
{
for(int i=0;i<abs->m_size;i++)
{
cout<<"姓名"<<abs->personArray[i].m_name<<'\t';
cout<<"性别"<<(abs->personArray[i].m_Sex==1?"男":"女")<<'\t';
cout<<"年龄"<<abs->personArray[i].m_age<<'\t';
cout<<"电话"<<abs->personArray[i].m_phone<<'\t';
cout<<"住址"<<abs->personArray[i].m_adder<<endl;
}
}
system("pause");
system("cls");
}
//3.删除联系人
int isExist(Addressbooks* abs,string name)
{
for(int i=0;i<abs->m_size;i++)
{
if(abs->personArray[i].m_name==name)
{
return i;
}
}
return -1;
}
void deletePerson(Addressbooks* abs)
{
cout<<"请输入您要删除的联系人"<<endl;
string name;
cin>>name;
int ret=isExist(abs,name);
if(ret!=-1)
{
for(int i=ret;i<abs->m_size-1;i++)
{
abs->personArray[i]=abs->personArray[i+1];
}
abs->m_size--;
}
else
{
cout<<"查无此人"<<endl;
}
cout<<"删除成功"<<endl;
system("pause");
system("cls");
}
//4.查找联系人
void findPerson(Addressbooks* abs)
{
cout<<"请输入您要查找的联系人"<<endl;
string name;
cin>>name;
int ret=isExist(abs,name);
if(ret!=-1)
{
cout<<"姓名"<<abs->personArray[ret].m_name<<'\t';
cout<<"性别"<<(abs->personArray[ret].m_Sex==1?"男":"女")<<'\t';
cout<<"年龄"<<abs->personArray[ret].m_age<<'\t';
cout<<"电话"<<abs->personArray[ret].m_phone<<'\t';
cout<<"住址"<<abs->personArray[ret].m_adder<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
//5.修改联系人
void modifyPerson(Addressbooks * abs)
{
cout<<"请输入您要修改的联系人"<<endl;
string name;
cin>>name;
int ret=isExist(abs,name);
if(ret!=-1)
{
string name;
cout<<"请输入姓名:!"<<endl;
cin>>name;
abs->personArray[ret].m_name=name;
//性别
cout<<"请输入性别:!"<<endl;
cout<<"1---男"<<endl;
cout<<"2---女"<<endl;
int sex=0;
while(true)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[ret].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
//年龄
cout<<"请输入年龄:!"<<endl;
int age=0;
cin>>age;
abs->personArray[ret].m_age=age;
//联系人
string phone;
cout<<"请输入联系电话:!"<<endl;
cin>>phone;
abs->personArray[ret].m_phone=phone;
//家庭住址
string address;
cout<<"请输入家庭住址:!"<<endl;
cin>>address;
abs->personArray[ret].m_adder=address;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
//6.清空联系人
void clearPerson(Addressbooks * abs)
{
abs->m_size=0;
cout<<"是否清空"<<endl;
cout<<"1---是"<<endl;
cout<<"2---否"<<endl;
int temp=0;
while(true)
{
cin>>temp;
if(temp==1||temp==2)
{
if(temp==1)
{
abs->m_size=0;
cout<<"通讯录已清空"<<endl;
}
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
system("pause");
system("cls");
}
int main()
{
//创建通讯录结构体变量
Addressbooks abs;
abs.m_size=0;
int select=0; //用户选择输入
while(true)
{
showMenu();
cin>>select;
switch(select)
{
case 1://1.添加联系人
addPerson(&abs);
break;
case 2://2.显示联系人
showPerson(&abs);
break;
case 3://3.删除联系人
deletePerson(&abs);
break;
case 4://4.查找联系人
findPerson(&abs);
break;
case 5://5.修改联系人
modifyPerson(&abs);
break;
case 6://6.清空联系人
clearPerson(&abs);
break;
case 0://0.退出通讯录
cout<<"欢迎下次使用"<<endl;
system("pause");
return 0;
break;
default:
break;
}
}
cout << "Hello world!" << endl;
return 0;
}