2024/1/15——C++ 基础语法

C++介绍:

C++ 是一种通用编程语言,是 C 语言的扩展和增强版本。它在1979年由 Bjarne Stroustrup 创建,最初被称为 "C with Classes",后来在1983年更名为 C++。C++ 继承了 C 语言的特性,并引入了面向对象编程(OOP)的概念,使得它更具灵活性和功能强大。
以下是 C++ 的一些重要特性和概念:

1.面向对象编程(OOP): C++ 支持面向对象的编程范式,包括封装、继承和多态。这使得程序员可以更好地组织和设计代码,提高代码的可维护性和可重用性。
2.泛型编程: C++ 引入了模板(templates)的概念,允许编写泛型代码,即可以在不同数据类型上通用的代码。这提高了代码的灵活性和可重用性。
3.标准模板库(STL): C++ 提供了一个强大的标准模板库,其中包括许多通用数据结构(如向量、队列、映射等)和算法(如排序、搜索等)。STL 的使用使得编程更加方便和高效。
4.低级内存访问: C++ 具有与 C 语言一样的底层内存访问能力,允许直接操作内存,对于系统级编程和性能优化非常有用。
5.多范式编程: C++ 支持多种编程范式,包括面向过程编程、面向对象编程和泛型编程。这使得程序员可以根据需要选择最适合问题的编程方式。
6.跨平台性: C++ 程序可以在多个平台上编写一次并在不同的平台上进行编译,因为它提供了对多种操作系统的支持。
7.强类型和静态类型: C++ 是一种强类型语言,每个变量都有特定的数据类型,并且是静态类型,即在编译时确定变量的类型。
8.广泛应用: C++ 在系统编程、游戏开发、嵌入式系统、高性能计算等领域得到广泛应用,是一种功能强大且灵活的编程语言。

总体而言,C++ 是一门强大的编程语言,适用于各种不同规模和类型的应用程序。

1.nameSpace 命名空间:

#include <iostream.h>   后缀为 .h 的·头文件在 C++里明确不再 支持了;

// 引入   使用cout  必须引入  iostream
// 命名空间  所谓的namespace    是指标识符的可见范围
// C++标准程序库中的所有标识符都被定义在了一个名为std的 namespace 中

常规输出:

 // 类似于 Console.WriteLine()  往控制台输出
 // 必须写 std

 std::cout << "Hello World!\n";
 std::cout << "Hello IKun!\n";

using namespace std;
//用完省个std   全局引入  在当前文件任何方法里面 都可以使用
//也可以在 区域内 局部引入

 int a = 1;
 cout << "Hello IKuns!" << a << "吴亦凡" << "李易峰\n";
 cout << "Hello IKuns!" << a << "吴亦凡" << "李易峰" << endl;

 cout << "Hello 蔡徐坤!";

// 自定义命名空间
namespace nameSpaceA {
    int a = 10;
}

namespace nameSpaceB {
    int a = 20;
    namespace nameSpaceC {
        // 结构体
        struct Teacher {
           char name[20];
            int age;
        };

    }
}

//  <<  输出
//  >> 输入

使用命名空间:

int main() {
    using namespace nameSpaceA;
    using namespace nameSpaceB;
    using namespace std;

    cout << nameSpaceA::a<<endl;    // 10
    cout << nameSpaceB::a << endl; //20

    // 使用方式1:
    nameSpaceB::nameSpaceC::Teacher t1;
    t1.age = 33;
    cout << t1.age << endl;


    //使用方式2:
    using nameSpaceB::nameSpaceC::Teacher;
    Teacher t2;
    t2.age = 36;
    cout << t2.age << endl;

    //
    int num;
    cout << "请输入一个整数:";
    cin >> num;  // 给 num 赋值   接受控制台输入的内容
    cout << "这个数字num 是:" << num;

}

2.变量声明:

// C语言中 所有的变量 都必须在作用域 开始的位置定义
// C++ 和 C# 中更强调语言的 “实用性”,所有的变量 都可以在需要使用的时候在定义

 // 数据类型 变量名称:
 int i;
 i = 10;

 int k;
 k = 20;

 cout << k << endl;

 //  %d  数字占位符
 printf("i:    %d,k:    %d \n", i, k);

  // C 中可以重复定义  定义后覆盖
  //C++ 不允许
  // int v;
  // int v=1;  //会报错                               牢记

 栈 里面的内存 会自动释放
    // 堆 需要手动释放

3.数据类型:

// 1.基本数据类型
// int(整型)  4个字节   范围:-2147483648  到  2147483648

int i = 2147483648;
printf("i :  %d\n ", i);

// float  和  double  (浮点 和 双浮点型)
// float 4个字节        内存空间     7个有效数字
// Double 8个字节    内存空间    15个有效数字

float area = 2.34;
double vol = 134.654321;
double dis = 45E12;     //   45 * 10^12       科学计数法
printf("area:  %f\n", area);
printf("vol:  %f\n", vol);        // float 和 double 均使用 %f  进行站位
printf("dis:  %f\n", dis);

//  char (字符型 )     1个字节    用'' 引 起来
char c = 'h';

//bool (布尔型)
    bool b = false;

// void  (无类型)   表示不存在数据       没有值

//类型修饰符    修改一些基本数据类型: signed      unsigned     short    long
// 修饰以下数据类型  :   int   double  char

 char   1个字符   -128——127     或者 0——255
 unsigned  char   1个字节    0-255 (只能有正数)
 signed  char   1个字节    -128——127
 int     4个字节    -2147483648  到  2147483648
 unsigned  int    4个字节    0  到  2147483648
 signed  int        4个字节    -2147483648  到  2147483648
 short  int       2个字节     -32768  到   32768
 unsigned  short   int     2个字节     0 到  65,535
 signed  short   int     2个字节    -32768  到   32768                     //signed   默认的意思
 long int 4个字节-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个字节o 到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位有效数字。

******

long int c1 = 2345342;
//short int d1 = 34343434;     //   错误:超出范围
unsigned  int a1 = -5;    // unsigned 不允许 负数

cout << c1 << endl;    // 2345342
cout << a1 << endl;    //   数据出现问题   4294967291

************

 printf中的占位符使用
        char short int使用%dlong使用%ld
        long long使用%lld

        unsinged char unsigned short, unsigned int 使用%u,
        unsigned long   使用%lu
        unsigned long long    使用%llu

非 基本数据类型(构建数据类型)

枚举类型
数组类型: 一维数组    多维数组
指针类型: int* p;
结构体类型   struct
联合类型    union
引用类型   int&   p = value;
字符串类型  =0

  enum 定义一个枚举

enum Sex {
	man,
	woman
};

enum week { 周日,周一,周二,周三,周四,周五,周六 };
week today;
today = 周一;
cout << "星期几?" << today << endl;       //   星期几? 2      枚举中的数据对应的值默认是从0开始的
cout << "星期几?" << today + 1 << endl;       //   星期几? 3

// 更改默认值
enum seasons {spring,summer,autumn,winter};
seasons s;
s = spring;
cout << "s?" << s << endl;
s = summer;
cout << "s?" << s << endl;
s = autumn;
cout << "s?" << s << endl;
s = winter;
cout << "s?" << s << endl;

4.运算符:

  // 算术运算符   + - * /  %

int a = 21, b = 10, c;
c = a - b;
cout << "c的值是:" << c << endl;

c = a + b;
cout << "c的值是:" << c << endl;

c = a * b;
cout << "c的值是:" << c << endl;

c = a / b;
cout << "c的值是:" << c << endl;

c = a % b;
cout << "c的值是:" << c << endl;

 // 自增自减

  int d = 10;
  c = d++;
  cout << "c的值是:" << c << endl;
 
  c = d--;
  cout << "c的值是:" << c << endl;

  // 关系 运算符   ==   !=  >   <     >=   <=
  int a1 = 21, b1 = 10;
  if (a1 >= b1) {

  }if (a1 = b1) {

  }
  else {

  }

-----------------------------------------------------------------------------------------

    // 逻辑运算符  &&    ||    !
    int c1 = 15;
    if (a > b || c1 > b) {

    }

--------------------------------------------------------------------------------------------

//赋值运算符  =    +=    -=    *=     /=    %=
c += b;     //  c=c+b;

条件运算符: 条件 ?  X  : Y,   例题:

  // 输入四个整数,求出其中的最大值和最小值   并显示出来

  int  num1, num2, num3, num4;
  //int max=0, min=0;
  cout << "请依次输入四个整数:" << endl;
  cin >> num1;
  cin >> num2;
  cin >> num3;
  cin >> num4;
 /* if (num1 > num2 && num1 > num3 && num1 > num4) {
      max = num1;
  }else if (num2>num1 && num2>num3&& num2>num4) {
      max = num2;
  }else if (num3 > num1 && num3 > num2 && num3 > num4) {
      max = num3;
  }
  else {
      max = num4;
  }*/
  int max = (num1 > num2 && num1 > num3 && num1 > num4) ? num1 :
      (num2 > num1 && num2 > num3 && num2 > num4) ? num2 :
      (num3 > num1 && num3 > num2 && num3 > num4) ? num3 : num4;

  cout << "输入的四个整数中 最大值是:" << max << endl;

  //
/*  if (num1 < num2 && num1 < num3 && num1 < num4) {
      min = num1;
  }else if (num2 < num1 && num2 < num3 && num2 < num4) {
      min = num2;
  }else if (num3 < num1 && num3 < num2 && num3 < num4) {
      min = num3;
  }
  else {
      min = num4;
  }*/
  int min = (num1 < num2 && num1 < num3 && num1 < num4) ? num1 :
      (num2 < num1 && num2 < num3 && num2 < num4) ? num2 :
      (num3 < num1 && num3 < num2 && num3 < num4) ? num3 : num4;

  cout << "输入的四个整数中 最小值是:" << min << endl;

5.循环判断:

 // for 循环
 //size_t  的真实类型与 操作系统有关;

32位的操作系统 unsigned int size_t    

64位操作系统  unsigned long  size_t 

for (size_t i = 0; i < 10; i++)
{

}
for (int i = 0; i < 20; i++)
{
    //cout << "i的值是:" << i << endl;
}

  //求 1-100 的和
  int res = 0;
  for (int  i = 1; i <= 100; i++)
  {
      res += i;
  }
  cout << "1-100之间的和是:" << res << endl;          //5050

练习: 目标搬砖500个,第一次 搬一个,后面更加熟练了,每次递增一倍,1、2、4、8、16.. .   搬500块砖 需要多少次?

 int count = 0;
 int number = 1;
 for (int sum = 0; sum < 500; )
 {
     count++;
     sum += number;
     number *= 2;
 }
 cout << "搬" << "500" << "块砖头需要" << count << "次" << endl;   // 9次

有一个学校,现在有8个人,每年学院增长23%,几年后学员可以达到100人以上

int year = 0;
double numpeople;
for ( numpeople = 8; numpeople < 100;) {
           
    numpeople *= 1.23;

    year++;
}
cout << "需要" << year << "年后学院可以达到100人以上!"<< "现在学院有:" << numpeople <<"人" << endl;    //   8年

    //while 循环
    /*
    while (true)
{
cout<<"循环的内容"<< endl;
}
// do. . .while/*
do{

}while (true);
    */

循环使用场景:
    for最常用的循环,用于循环次数明确且固定
    while循环次数可以不固定,但是要有明确的目标
    dowhile和while相似但是至少会执行一次

    //break 终止循环
    //continue  跳过本次循环

goto实例:

    //goto 语句
ask:
    cout << "你愿意做我女朋友么?(y/n):" << endl;
    string res1;
    cin >> res1;

    if (res1 == "y") {
        cout << "宝贝你好" << endl;
    }
    else {
        cout << "你说什么?风太大,我听不见~";
        goto ask;
    }

switch .....case

   int a = 1;
   switch (a)
   {
   case 1:
       cout << "蔡徐坤" << endl;
       break;
   case 2:
       cout << "吴亦凡" << endl;
       break;

   default:
       break;
   }

6.数组:

 // 一维数组
 // C# 中  int[]  arr;

 // age数组最多可容纳100个整数类型的元素。声明数组后,数组的大小和类型不能更改的
 int age[100];

 //初始化
 int arr[5] = {1, 2, 3};
 // 另一种
 int arr1[] = { 11,12,13,14,15,16 };

  //获取数组中的 某一项
  printf("arr1中的第一项:%d,第二项是:%d,\n", arr1[0], arr1[1]);

  //修改 第四个元素为 100
  arr1[3] = 100;

  // 从用户获取 输入值,并插入 第三个元素
  cin >> arr1[2];
  cout << "arr1[2]现在变成了:" << arr1[2] << endl;

  //
  cout << "整个数组占用的内存空间是:" << sizeof(arr1) << endl;
  cout << "数组中某个元素占用的内存空间是:" << sizeof(arr1[0]) << endl;
  //长度必须用  除法 除 出来
  cout << "数组中元素的个数:"<< sizeof(arr1)  / sizeof(arr1[0]) <<endl;

 // 一维数组
 for (int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)
 {
     cout << arr1[i] << endl;
 }

多维数组:

 //二维数组:
 int x[2][3];    // 最多可容纳 (2*3)6 个元素
 // 二维数组 初始化           数组的初始化只能在声明中完成,不能先声明,再初始化
 //x = { {1,2,3,4},{5,6,7,8},{11,12,13,14} };         报错

 //这样初始化 才可以
 int test[2][3] = { {2,4,5},{6,7,8} };

 //循环 二维数组
 for (int  i = 0; i < 2; i++)
 {
     for (int j = 0; j < 3; j++)
     {
         cout << "test[" << i << "][" << j << "]=" << test[i][j] << endl;
     }
 }

// 三维数组
int arr2[2][3][4] = {
    {{1,1,1,1},{2,2,2,2},{3,3,3,3}},
    {{4,4,4,4},{5,5,5,5},{6,6,6,6}}
};

for (int i = 0; i < 2; i++)
{
    for (int j = 0; j < 3; j++)
    {
        for (int k = 0; k < 4; k++)
        {
            cout << "arr2[" << i << "][" << j <<"][" << k << "]=" << arr2[i][j][k] << endl;
        }
    }
}

  • 25
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值