C++基础语法资料

 

一、C++基本语法

  1. 变量名是由字母、数字和下划线字符组成,并且开头不能是数字。大小写不同的变量是不同的。变量名不能是关键字,如forif等都是不能作为变量名的
  2. C++基本的数据类型是整型int、浮点型float/double、字符型char、字符串stringbool布尔型,除此外还有长整型long int、长浮点型long doubleconst常量
  3. printf(%.2f,a) a保留2位小数,printf(%.nf,a) a保留n位小数
  4. %.f是取整,大于5向上,小于等于5向下
  5. bool布尔值的结果只有真/1、假/0 两种结果
  6. 假设变量 A 的值为 10,变量 B 的值为 20

运算符

描述

实例 假设变量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


 假设变量 A 的值为 10,变量 B 的值为 20

运算符

描述

实例 

==

检查两个操作数的值是否相等,如果相等则条件为真。

(A == B) 不为真。

!=

检查两个操作数的值是否相等,如果不相等则条件为真。

(A != B) 为真。

>

检查左操作数的值是否大于右操作数的值,如果是则条件为真。

(A > B) 不为真。

<

检查左操作数的值是否小于右操作数的值,如果是则条件为真。

(A < B) 为真。

>=

检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。

(A >= B) 不为真。

<=

检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。

(A <= B) 为真。

 假设变量 A 的值为 1,变量 B 的值为 0

运算符

描述

实例

&&

称为逻辑与运算符。如果两个操作数都 true,则条件为 true。

(A && B) 为 false。

||

称为逻辑或运算符。如果两个操作数中有任意一个 true,则条件为 true。

(A || B) 为 true。

!

称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。

!(A && B) 为 true。

C++ 编程语言提供了以下类型的判断语句。点击链接查看每个语句的细节。

语句

描述

if 语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

if...else 语句

一个 if 语句 后可跟一个可选的 else 语句else 语句在布尔表达式为假时执行。

嵌套 if 语句

您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。

switch 语句

一个 switch 语句允许测试一个变量等于多个值时的情况。

嵌套 switch 语句

您可以在一个 switch 语句内使用另一个 switch 语句。

if(条件表达式){

   // 如果条件表达式为真将执行的语句}

else{

   // 如果条件表达式为假将执行的语句}

switch(表达式){

case 取值1: 执行语句; break;

case 取值2: 执行语句; break;

……

default: 执行语句; break;

}

1,switch语句选择的类型有四种:byte,short,int , char。

2,case之间与default没有顺序。先判断所有的case,没有匹配的case执行default。

3,switch语句停止的条件是遇到了break关键字或者结束switch语句的大括号。

4,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

5,switch case中的值必须要与switch表达式的值具有相同的数据类型。而且case后跟的值必须是常量,不能跟变量。

注意:

  1. case后跟的是冒号:

 

 

二、循环

1. while循环

C++ 中 while 循环的语法:

while(条件表达式){

   语句体1;

   语句体2;

}

 

当表达式为真,则执行下面的语句;语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句;然后再判断表达式是否为真……就这样一直循环下去,直到表达式为假,跳出循环。这个就是 while 的执行顺序。

C++ 中 do while 循环的语法:

初始化语句;

do {

     循环体语句;

} while(条件判断语句);

执行流程:

        执行初始化语句

        执行循环体语句

        执行条件控制语句

        之间条件判断语句,看其结果是true还是false

如果是false,循环结束

如果是true,循环继续执行

回到继续

2. for循环

for 循环语句的一般形式为:

for (表达式1; 表达式2; 表达式3)

{
        语句;
}

 

 

 


  1. 执行过程:表达式
    1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。
  2. for(表达式1;表达式2;表达式3)的后面千万不要加分号
  3. 表达式1是初始化循环变量的值;表达式2是循环的范围;表达式3是循环变量的增量或减量

求解表达式1

求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步。

求解表达式3

转回上面第2步继续执行。

循环结束,执行 for 语句下面的语句。

从这个执行过程中可以看出,“表达式1”只执行一次,循环是在“表达式2”“表达式3”和“内嵌语句”之间进行的。

 

1-100的总和

 

# include <stdio.h>

int main()

{

    int i;

    int sum = 0;  //sum的英文意思是“总和”

    for (i=1; i<=100; i++)  //++是自加的意思, i++相当于i = i + 1

    {

        sum = sum + i;  /*等价于sum += i;但是不建议这么写, 因为sum = sum + i看起来更清楚、更舒服*/

    }

    printf("sum = %d\n", sum);

    return 0;

}

 

 

 

输出结果是:sum = 5050

关于循环的两个关键字:

break  仅终止当前的循环

continue  跳过主体剩余部分,执行下一轮循环

 

3. 数组

一维数组的声明形如:a[b],其中a是数组的名字,b是数组的维度(数组中元素的个数)

int arr[10]; //arr是含有10个整型的数组

int arr[10]={}; //arr是含有10个整型的数组,进行了初始化,每个元素的值都是0

int *arr[10]; //arr是含有10个整型指针的数组

int arr[] = {1,2,3}; //arr是含有3个整型的数组

int arr[5] = {1,2,3}; //等价于int arr[5] = {1,2,3,0,0}

string arr[3] = {"hello","world"}; //等价于 string arr[3] = {"hello","world",""};

char arr[6] = "hello"; //这里不能声明维度为5,因为字符串末尾还有一个空字符('\0'),所以应该是"hello\0"

char arr[6] = {'h','e','l','l','o','\0'}; //等价于 char arr[] = "hello";

char arr[6] = {'h','e','l','l','o'}; //这条语句和上面一条语句是一样的。默认字符初始化值是'\0'

如果在定义了整型类型的数组后,并没有对内存进行初始化的话,那么里面会存放以前的垃圾值。用字符串字面值初始化字符数组时,一定要注意字符串字面值的末尾还有一个空字符

数组的访问:

数组可以通过 数组名[下标] 的方法来访问对应数组的第下标个元素

#include<bits/stdc++.h>

using namespace std;

int main()

{

int a[20] = {}; //定义一个整型数组a,里面有20个元素,并全部初始化为0

for(int i=0;i<20;i++) //循环让i019

{

cout<<a[i]<<" "; //输出a数组的第i个数

}

  return 0;

}

4. 字符串

  1. 字符串是由双引号引起来的字符构成,如”123,abc,1,a”等都属于字符,它的长度可以是一个或者多个
  2. 每个字符串在末尾都隐藏了一个字符串结束符’\0’,它标志着字符串的结束
  3. 定义字符串可以使用字符数组和字符串数据类型

下面定义和初始化创建了一个abc字符串,由于字符串末尾有结束符\0’,所以字符数组的大小要比字符串的长度多1

int a[4] = {'a','b','c','\0'};

上面的定义同样等价于下面的定义

int a[4] = "abc";

上面的定义同样等价于下面的定义

int a[] = "abc";

当我们不去事先声明数组的长度时,系统会根据所赋值的内容来定义数组的长度,如上面的程序当abc赋值给数组a后,a数组的长度会被定义为4abc\0

  1. 字符串或字符数组想引用某个字符时,操作和普通数组的引用是一样的,都是通过

数组名[下标]

来引用

字符数组应用

strlen(a) 获取指定字符串a的长度

char a[] = “abc”;cout<<strlen(a); 可以输出3

strcat(a,b) b拼接到a后面

char a[] = "abc",b[] = "123";
cout<<strcat(a,b); 可以输出abc123

strcmp(a,b) 比较a,b两个字符串,相同返回0,不相同返回1

strcpy(b,a) 将字符串a的内容复制到b

islower() 一个字符为小写字母时, 返回真值

isupper() 一个字符为大写字母时, 返回真值

 

posted @ 2023-02-05 09:20  CRt0729  阅读(326)  评论(0编辑  收藏  举报