注意:标红字加 * 为重点内容,黑体字加 * 为可选内容
该文章主要内容为 编程特长生(小学)奥林匹克信息学竞赛(初中、高中)所要学习的C++基础语法(重点知识);
该文章是在给一位想走 编程特长生(小学0基础)的学生上课时所写,由于上课时是根据C++菜鸟教程所以部分内容都搬运自C++菜鸟教程;
该文章内容精简,内容更新基本是同步上课进度,上课的方式也不是按部就班,基本是用到哪学到哪讲到哪,所以基本都是C++语言相关的内容,理论知识较少;
文章内如有写错或者不粗,请指正。
//预处理文件
#include
//引入命名空间
using namespace std;
int main (){
return 0;
}
总结:写代码先把模板写好!!!!
#include
using namespace std;
int main() {
return 0;
}
//我是单行注释
/*我是多行注释1*/
/*我
是
多
行
注
释
2
*/
位bit b
字节Byte B
千字节 KB
兆字节 MB
吉字节 GB
太字节 TB
单位进制
1 B = 2 3 b 1B = 2^3 b 1B=23b
1 K B = 2 10 B 1KB = 2^{10}B 1KB=210B
1 M B = 2 10 K B 1MB = 2^{10}KB 1MB=210KB
1 G B = 2 10 M B 1GB = 2^{10}MB 1GB=210MB
1 T B = 2 10 G B 1TB = 2^{10}GB 1TB=210GB
计算机组成原理:具体内容请点击这里
类型 | 关键字 |
---|---|
布尔型 | bool |
字符型 | char |
整型 | int |
浮点型 | float |
双浮点型 | double |
无类型 | void |
宽字符型 | wchar_t |
如何定义变量
**数据类型 变量名 (赋值运算符 值) ;**
#include
using namespace std;
int main (){
int x = 1;
float y = 1.2;
double z = 1.3;
return 0;
}
1.变量名只能用字母、数字、下划线命名且不能以数字开头
2.规范长度,尽量不超过31个字符
3.C++严格区分大小写 例如 Anm 和 anm 是两个不同变量名而非同一个
4.不能以关键字命名且不能重名
5.望名知意、尽量让变量看到就知道什么意思
作用域是程序的一个区域,一般来说有三个地方可以定义变量:
在函数或一个代码块内部声明的变量,称为局部变量。
在函数参数的定义中声明的变量,称为形式参数。(暂时不用)
在所有函数外部声明的变量,称为全局变量。
#include
using namespace std;
//此处y为全局变量
int y = 50;
int main (){
//此处x为局部变量
int x = 20;
return 0;
}
数据类型修饰符:
类型 | 位 | 范围 |
---|---|---|
char | 1 个字节 | -128 到 127 或者 0 到 255 |
unsigned char | 1 个字节 | 0 到 255 |
signed char | 1 个字节 | -128 到 127 |
int | 4 个字节 | -2147483648 到 2147483647 |
unsigned int | 4 个字节 | 0 到 4294967295 |
signed int | 4 个字节 | -2147483648 到 2147483647 |
short int | 2 个字节 | -32768 到 32767 |
unsigned short int | 2 个字节 | 0 到 65,535 |
signed short int | 2 个字节 | -32768 到 32767 |
long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
signed long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned long int | 8 个字节 | 0 到 18,446,744,073,709,551,615 |
float | 4 个字节 | 精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字) |
double | 8 个字节 | 双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字) |
long double | 16 个字节 | 长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。 |
wchar_t | 2 或 4 个字节 | 1 个宽字符 |
如何使用修饰符
修饰符 数据类型 变量名 (赋值运算符 值);
long int a = 20;
short int b = 354;
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++ 内置了丰富的运算符,并提供了以下类型的运算符:
假设变量 A 的值为 10,变量 B 的值为 20,则:
运算符 | 描述 | 实例 |
---|---|---|
+ | 把两个操作数相加 | A + B 将得到 30 |
- | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |
* | 把两个操作数相乘 | A * B 将得到 200 |
/ | 分子除以分母 | B / A 将得到 2 |
% | 取模运算符,整除后的余数 | B % A 将得到 0 |
++ | 自增运算符,整数值增加 1 | A++ 将得到 11 |
– | 自减运算符,整数值减少 1 | A-- 将得到 9 |
注意:在除法中,如果是两个int型相除,默认的值也是int型也可以简单的理解为两个整数整除(向下取整)例子如下:
int a = 3;
int b = 2;
cout << 3/2;
//其结果为 1
注意:在除法中,如果是两有一个类型是浮点型,默认的值也是浮点型也可以简单的理解为两个整数相除例子如下:
int a = 3;
double b = 2;
cout << a/b ;
//其结果为 1.5
自增运算符 ++ 会把操作数加 1,自减运算符 -- 会把操作数减 1。因此:
x = x+1;
等同于
x++;
同样的:
x = x-1;
等同于
x--;
无论是自增运算符还是自减运算符,都可以放在操作数的前面(前缀)或后面(后缀)。例如:
x = x+1;
可以写成:
++x; // 前缀形式
或者:
x++; // 后缀形式
假设变量 A 的值为 10,变量 B 的值为 20,则:
运算符 | 描述 | 实例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 | (A == B) 不为真。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A > B) 不为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A >= B) 不为真。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真。 |
关系运算符可以运算,运算出来的结果只有两种:真或假(0或1)(true或false)
下表显示了 C++ 支持的关系逻辑运算符。
假设变量 A 的值为 1,变量 B 的值为 0,则:
运算符 | 描述 | 实例 |
---|---|---|
&& | 称为逻辑与运算符。如果两个操作数都 true,则条件为 true。 | (A && B) 为 false。 |
|| | 称为逻辑或运算符。如果两个操作数中有任意一个 true,则条件为 true。 | (A || B) 为 true。 |
! | 称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。 | !(A && B) 为 true。 |
注意:一真则真,一假则假
下表列出了 C++ 支持的赋值运算符:
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 | C = A + B 将把 A + B 的值赋给 C |
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 | C += A 相当于 C = C + A |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 | C -= A 相当于 C = C - A |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 | C *= A 相当于 C = C * A |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 | C /= A 相当于 C = C / A |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 | C %= A 相当于 C = C % A |
<<= | 左移且赋值运算符 | C <<= 2 等同于 C = C << 2 |
>>= | 右移且赋值运算符 | C >>= 2 等同于 C = C >> 2 |
&= | 按位与且赋值运算符 | C &= 2 等同于 C = C & 2 |
^= | 按位异或且赋值运算符 | C ^= 2 等同于 C = C ^ 2 |
|= | 按位或且赋值运算符 | C |= 2 等同于 C = C | 2 |
语法格式
中文口语化:如果是真那么这样做
if(boolean_expression)
{
// 如果布尔表达式为真将执行的语句
}
注意: boolean_expression中除了false和0 任何非0数或者字符都输出1
语法格式
中文口语化:如果是真那么这样做,反之这样做
if(boolean_expression)
{
// 如果布尔表达式为真将执行的语句
}
else {
// 如果布尔表达式为假将执行的语句
}
语法格式
中文口语化:如果是对那么这样做,反之如果这样是对那么这样做,否则就这样做
if(boolean_expression 1)
{
// 当布尔表达式 1 为真时执行
}
else if( boolean_expression 2)
{
// 当布尔表达式 2 为真时执行
}
else if( boolean_expression 3)
{
// 当布尔表达式 3 为真时执行
}
else
{
// 当上面条件都不为真时执行
}
#include
using namespace std;
int main (){
cout << "请输入用户等级:";
int level;
cin >> level;
if (level <= 0){
cout << "用户等级出错!";
}
else if (level >= 1 && level <31){
cout << "未达到定段顶级";
}
else if (level >= 31 && level <41){
cout << "恭喜你已经到达白银段位";
}
else if (level >= 41 && level <51){
cout << "恭喜你已经到达黄金段位";
}
else if (level >= 51 && level <61){
cout << "恭喜你已经到达钻石段位";
}
else {
cout << "恭喜你已经登顶巅峰到达最强王者段位!";
}
return 0;
}
语法格式
if( boolean_expression 1)
{
// 当布尔表达式 1 为真时执行
if(boolean_expression 2)
{
// 当布尔表达式 2 为真时执行
}
}
语法格式
switch(expression){
case constant-expression :
statement(s);
break; // 可选的
case constant-expression :
statement(s);
break; // 可选的
// 您可以有任意数量的 case 语句
default : // 可选的
statement(s);
}
switch 语句必须遵循下面的规则:
注意:break语句虽然在switch中不是必须的,但是在实现大多数功能时一般都需要加break语句,特殊情况除外!!!!!
#include
using namespace std;
int main (){
cout <<"------- 欢迎使用简易计算器 --------" << endl;
cout <<"1.加法运算" << endl;
cout <<"2.减法运算" << endl;
cout <<"3.乘法运算" << endl;
cout <<"4.除法运算" << endl;
cout <<"请输入所要使用的功能的序号:" ;
int num,a,b; // 接收输入的变量
cin >> num;
switch (num){
case 1:
cout << "请输入第一个加数:";
cin >> a;
cout << "请输入第二个加数:";
cin >> b;
cout << "结果为:" << a+b ;
break;
case 2:
break;
case 3:
break;
case 4:
break;
}
return 0;
}
char 1 个字节 -128 到 127 或者 0 到 255
char 通常是一个字符(八位)。这是一个整数类型。
字符串是由多个字符组成,使用字符串时需要引入string类
例如:
#include
#include //想要使用string类型必须引入string类
using namespace std;
int main (){
string str1 = "hello world";
cout << str1;
return 0;
}
如何声明(定义)数组
type arrayName [ arraySize ];
type arrayName [ arraySize ] = {};
数组下标从0开始以此递增(图片搬运自C++菜鸟教程)
语法格式:
while(condition)
{
statement(s);
}
#include
using namespace std;
int main (){
int num[10] = {6,54,21,321,65,4,9,8,4};
int i = 0;
while (i < 10){
cout << num[i] << endl;
i++;
}
return 0;
}
语法格式:
for ( init; condition; increment )
{
statement(s);
}
#include
using namespace std;
int main (){
int num[10] = {6,54,21,321,65,4,9,8,4};
for (int i = 0; i < 10; i++){
cout << num[i] << endl;
}
return 0;
}
函数的生命周期:1.定义函数
2.声明函数
3.调用函数
语法格式
return_type function_name( )
{
body of the function
}
如何使用
#include
using namespace std;
//2.声明函数
void cat ();
int main (){
//3.调用函数
cat();
return 0;
}
//1.定义函数
void cat (){
cout << "miaomiaomiao!";
}
语法格式
return_type function_name( parameter list )
{
body of the function
}
如何使用
#include
using namespace std;
//2.声明
int num1AndNum2 (int x,int y);
int main (){
//3.调用
int result = num1AndNum2(1,2);
cout << result;
return 0;
}
//1.定义
int num1AndNum2 (int x,int y){
return x+y;
}