3、黑马C++学习笔记——橘柚

4、程序流程结构

C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构

  • 顺序结构:程序按顺序执行,不发生跳转

  • 选择结构:依据条件是否满足,有选择的执行相应的功能

  • 循环结构:依据条件是否满足,循环多次执行某段代码

4.1选择结构

4.1.1if语句

作用:执行满足条件的语句

if语句的三种形式

  • 单行格式if语句

  • 多行格式if语句

  • 多条件的if语句

  1. 单行格式if语句:if(条件){条件满足执行的语句}

 #include<iostream>
 using namespace std;
 int main()
 {
     //选择结构-单行if语句
     /*
     用户输入分数,如果分数大于600,视为考上一本大学,在屏幕上输出
     1、用户输入分数
     2、打印用户输入的分数
     3、判断是否大于600,如果大于输出
     */
     int score = 0;
     cout << "请输入考生分数: " << endl;
     cin >> score;
     cout << "您输入的分数为: " << score << endl;
     //注意事项,if条件后面不要加分号
     if (score > 600)
     {
         cout << "恭喜您考上了一本大学" << endl;
     }
 ​
     system("pause");
     return 0;
 }

  1. 多行格式if语句:if(条件){条件满足执行的语句}else{条件不满足执行的语句}

 #include<iostream>
 using namespace std;
 int main()
 {
     int score = 0;
     //选择结构-多行if语句
     /*
      用户输入分数,如果分数大于600,视为考上一本大学
      1、用户输入分数
      2、打印用户输入的分数
      3、判断是否大于600,如果大于输出"恭喜您考上一本大学"
      小于输出"请再接再厉"
     */
     cout << "请输入您的分数: " << endl;
     cin >> score;
     cout << "您输入的分数为: " << score << endl;
     if (score > 600)
     {
         cout << "恭喜您考上一本大学" << endl;
     }
     else
     {
         cout << "请再接再厉" << endl;
     }
     system("pause");
     return 0;
 }

  1. 多条件的if语句:if(条件){条件1满足执行的语句}else if(条件2){条件2满足执行的语句}.....else{都不满足执行的语句}

 #include<iostream>
 using namespace std;
 int main()
 {
     //选择结构-多条件if语句
     /*
      用户输入分数,如果分数大于600,视为考上一本大学
      分数大于500,视为考上二本大学
      分数大于400,视为考上三本大学
      分数小于400,是为考上职专
      1、用户输入分数
      2、打印用户输入的分数
     */
     int score = 0;
     cout << "请输入您的分数: " << endl;
     cin >> score;
     cout << "您输入分数为: " << score << endl;
     if (score > 600)
     {
         cout << "恭喜您考上一本大学!" << endl;
     }
     else if (score > 500)
     {
         cout << "恭喜您考上二本大学!" << endl;
     }
     else if (score > 400)
     {
         cout << "恭喜您考上三本大学!" << endl;
     }
     else
     {
         cout << "恭喜您考上职专!" << endl;
     }
     system("pause");
     return 0;
 }

  1. 嵌套型if语句

 #include<iostream>
 using namespace std;
 int main()
 {
     //选择结构-嵌套型if语句
     /*
      用户输入分数,如果分数大于600,视为考上一本大学
      分数大于500,视为考上二本大学
      分数大于400,视为考上三本大学
      分数小于400,视为未考上本科
      在一本分数中,如果大于700,考入北大,大于650,考入清华,大于600,考入人大
      1、用户输入分数
      2、打印用户输入的分数
      3、判断
     */
     int score = 0;
     cout << "请输入您的分数: " << endl;
     cin >> score;
     cout << "您输入分数为: " << score << endl;
     if (score > 600)
     {
         cout << "恭喜您考上一本大学!" << endl;
         if (score > 700)
         {
             cout << "您能考入北京大学" << endl;
         }
         else if (score > 650)
         {
             cout << "您能考入清华大学" << endl;
         }
         else
         {
             cout << "您能考入人民大学" << endl;
         }
     }
     else if (score > 500)
     {
         cout << "恭喜您考上二本大学!" << endl;
     }
     else if (score > 400)
     {
         cout << "恭喜您考上三本大学!" << endl;
     }
     else
     {
         cout << "未考上本科,请再接再厉!" << endl;
     }
     system("pause");
     return 0;
 }

  1. 三只小猪

 #include<iostream>
 using namespace std;
 int main()
 {
     //有三只小猪ABC,请分别输入三只小猪的体重,并且判断哪只最重
     //1、创建三只小猪的体重变量
     int num1 = 0;
     int num2 = 0;
     int num3 = 0;
     //2、请用户输入三只小猪的体重
     cout << "请输入小猪A的体重" << endl;
     cin >> num1;
     cout << "请输入小猪B的体重" << endl;
     cin >> num2;
     cout << "请输入小猪C的体重" << endl;
     cin >> num3;
 ​
     cout << "小猪A的体重为: " << num1 << endl;
     cout << "小猪B的体重为: " << num2 << endl;
     cout << "小猪C的体重为: " << num3 << endl;
 ​
     //3、判断哪只最终
     if (num1 > num2)//A>B
     {
         if (num1 > num3)//A>C
         {
             cout << "小猪A最重" << endl;
         }
         else//A<C
         {
             cout << "小猪C最终" << endl;
         }
     }
     else //B>A
     {
         if (num2 > num3)//B>C
         {
             cout << "小猪B最重" << endl;
         }
         else
         {
             cout << "小猪C最重" << endl;
         }
     }
     system("pause");
     return 0;
 }

4.1.2三目运算符

作用:通过三目运算符实现简单的判断

语法:表达式1?表达式2=表达式3

解释:

如果表达式1的值为真,执行表达式2,并返回表达式2的结果;

如果表达式1的值为假,执行表达式3,并返回表达式3的结果;

 #include<iostream>
 using namespace std;
 int main()
 {
     //三目运算符: 表达式1?表达式2:表达式3
     //创建三个变量a b c
     //将a和b作比较,将变量大的值赋值给c
     int a = 10;
     int b = 20;
     int c = 0;
     c = (a > b ? a : b );
     cout << "c= " << c << endl;
     //在C++中三目运算符返回的是变量,可以继续赋值
     (a > b ? a : b) = 100;
     cout << "a=" << a << endl;
     cout << "b=" << b << endl;
     system("pause");
     return 0;
 }

4.1.3Switch语句

作用:执行多条件分支语句

语法:

 switch(表达式)
        {
            
            case 结果1:执行语句;break;
            case 结果2:执行语句;break;
            ......
            default:执行语句;break;
            
        }
 #include<iostream>
 using namespace std;
 int main()
 {
     /*switch语句
     给电影进行打分
     10~9经典  8~7非常好 6~5一般 5以下烂片
     1、提示用户给电影打分
     2、用户开始进行打分
     3、根据用户输入的分数来提示用户最后的结果
     */
     int score = 0;
     cout << "请您给电影打分: " << endl;
     cin >> score;
     cout << "您打的分数为: " << score << endl;
     
     switch (score)
     {
     case 10:
         cout << "您认为是经典电影" << endl;
         break;//表示退出当前分支
     case 9:
         cout << "您认为是经典电影" << endl;
         break;
     case 8:
         cout << "您认为是非常好电影" << endl;
         break;
     case 7:
         cout << "您认为是非常好电影" << endl;
         break;
     case 6:
         cout << "您认为是一般电影" << endl;
         break;
     case 5:
         cout << "您认为是一般电影" << endl;
         break;
     default:
         cout << "您认为是烂片" << endl;
         break;
 ​
     }
     /*
     if和switch的区别
     switch的缺点,判断的时候只能是整型或者字符型,不可以是一个区间
     switch的优点,结构清晰,执行效率高
     */
     system("pause");
     return 0;
 }

当没有break时

有break

注意1:switch语句中表达式类型只能是整型或者字符型

注意2:case里如果没有break,那么程序就会一直向下执行

总结:

switch的缺点,判断的时候只能是整型或者字符型,不可以是一个区间 switch的优点,结构清晰,执行效率高

4.2循环结构

4.2.1while循环语句

作用:满足循环条件,执行循环语句

语法:while(循环条件){循环语句}

解释:只要循环条件的结果为真,就执行循环语句

 #include<iostream>
 using namespace std;
 int main()
 {
     /*
     while循环
     在屏幕上打印0~9这10个数字
     */
     int num = 0;
     //while()中填入循环条件
     //在写循环时一定要避免死循环
     while(num<10)
     {
         cout << "num=" << num << endl;
         num++;
     }
     system("pause");
     return 0;
 } 

注意:在执行循环语句时,必须提供跳出循环的出口,避免死循环

while循环练习案例:猜数字

案例描述:系统随机生成一个1到100的数字,玩家进行猜测,如果猜错,提示玩家过大还是过小,如果猜对恭喜玩家胜利,并且退出小游戏。

 #include<iostream>
 using namespace std;
 #include<ctime>//time系统时间头文件包含
 int main()
 {
     /*
     1、系统生成随机数
     2、玩家进行猜测
     3、判断玩家的猜测
     猜对 退出游戏 恭喜玩家获得胜利
     猜错 提示猜的结果过大或者过小 重新返回第二步,重新猜测
 ​
     rand()%100表示生成0~99随机数
     rand()%100 + 1表示生成1~100随机数
     */
     srand((unsigned int)time(NULL));//添加随机数种子 作用:利用当前系统时间生成随机数,防止每次随机数都一样
     int num = rand() % 100 + 1;//生成随机数
     //cout << "num=" << num << endl;
     //cin >> num;
 ​
     int val = 0;
     while (1)
     {
         cin >> val;
         //猜错 提示猜的结果过大或者过小 重新返回第二步,重新猜测
         if (val > num)
         {
             cout << "猜测过大" << endl;
         }
         else if (val < num)
         {
             cout << "猜测过小" << endl;
         }
         else
         {
             cout << "恭喜您获得胜利" << endl;
             break;// break可以利用该关键字退出当前循环
         }  
 ​
     }
     
     system("pause");
     return 0;
 }

4.2.2do...while循环语句

作用:满足循环条件,执行循环语句

语法:do{循环语句}while(循环条件);

do...while 和while区别在于do...while会先执行一次循环语句,再判断条件 while是先判断条件,满足条件之后再执行循环语句

 #include<iostream>
 using namespace std;
 int main()
 {
     /* while循环语句
     int num = 0;
     while (num < 10)
     {
         cout << "num=" << num << endl;
         num++;
     }
     */
     int num = 0;
     do
     {
         cout << "num= " << num << endl;
         num++;
     } while (num<10);
     //do...while 和while区别在于do...while会先执行一次循环语句,再判断条件
     //while是先判断条件,满足条件之后再执行循环语句
     system("pause");
     return 0;
 }

水仙花数

案例描述:水仙花数是一个三位数,它的每个位上的数字的3次幂之和等于本身 例如:1^3+5^+3^3=153

请利用do...while语句,求出所有三位数中的水仙花数

解析:

  1. 将所有的三位数进行输出(100~999)

  2. 在所有的三位数中找到水仙花数

水仙花数 153 int

获取个位数 153%10=3 对数字取模于10可以获取个位数

获取十位数 153/10=15 15%10=5 先整除于10得15在对10取模,得到十位数

获取百位数 153/100=1 直接整除于100,获取百位

 #include<iostream>
 using namespace std;
 int main()
 {
     /*
     案例描述:水仙花数是一个三位数,它的每个位上的数字的3次幂之和等于本身
     例如:1^3+5^+3^3=153
     */
     //1、打印所有的三位数
     int num = 100;
     do
     {
         //2、在打印的三位数中找到水仙花数
         int a = 0; //个位
         int b = 0; //十位
         int c = 0; //百位
         a = num % 10; //获取个位数
         b = num / 10 % 10; //获取十位数
         c = num / 100; //获取百位数
         if (a*a*a + b*b*b + c*c*c == num)//如果是水仙花数才打印  注:需要是==,一个=是赋值,两个==是等于
         {
             cout << "num= " << num << endl;
         }
         num++;
     } while (num < 1000);
 ​
     system("pause");
     return 0;
 }

四位数中的水仙花数:

 #include<iostream>
 using namespace std;
 int main()
 {
     //拓展
     //1、打印所有的四位数
     int num = 1000;
     do
     {
         //2、在打印的四位数中找到水仙花数
         int a = 0; //个位
         int b = 0; //十位
         int c = 0; //百位
         int d = 0; //获取千位
         a = num % 10; //获取个位数
         b = num / 10 % 10; //获取十位数
         c = num / 100%10; //获取百位数
         d = num / 1000; //获取千位数
 ​
         if (a*a*a*a + b*b*b*b + c*c*c*c + d*d*d*d == num)//如果是水仙花数才打印  注:需要是==,一个=是赋值,两个==是等于
         {
             cout << "num= " << num << endl;
         }
         num++;
     } while (num < 10000);
 ​
     system("pause");
     return 0;
 }

4.2.3for循环语句

作用:满足循环条件,执行循环语句

语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}

 #include<iostream>
 using namespace std;
 int main()
 {
     //for循环
     //从数字0打印到数字9
     /*
     1、先执行 int i=0;
     2、在执行i<10;
     3、然后执行输出语句cout << "i= " << i << endl;
     4、再然后执行i++;
     5、在执行i<10;  1 2 3 4 2 3 4 2 3 4
     6、然后执行输出语句cout << "i= " << i << endl;
     7、再然后执行i++;
     直到i≥10退出循环
     */
     for (int i = 0; i < 10; i++)//注意:末尾循环体没有分号
     {
         cout << "i= " << i << endl;
     }
     system("pause");
     return 0;
 }

注意:for循环中的表达式,要用分号进行分隔

while、do...while、for都是开发中常用的循环语句,for循环结构比较清晰,比较常用

敲桌子:

案例:从1开始数到100,如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。

 #include<iostream>
 using namespace std;
 int main()
 {
     /*
     1、先输出1~100这些数字
     2、从这些数字中找到特殊数字,改为敲桌子
           特殊数字  
           7的倍数   %7=0
           个位有7   %10=7
           十位有7   /10=7
     */
     for (int i = 1; i <= 100; i++)
     {
         if  (i % 7 == 0 || i % 10 == 7 || i / 10 ==7 ) //切记是双等号==,一个等号=表示赋值,两个等号==是等于
         {
             cout << "敲桌子" << endl;
         }
         //没必要写else if 利用 || 或运算符即可
     /*  else if (i % 10 == 7)
         {
             cout << "敲桌子" << endl;
         }
         else if (i / 10 == 7)
         {
             cout << "敲桌子" << endl;
         }*/
         else
         {
             cout << "i= " << i << endl;
         }
     
     }
     system("pause");
     return 0;
 }

4.2.4嵌套循环

作用:在循环体中在嵌套一层循环,解决一些实际问题

例如我们想在屏幕中打印如下图片,就需要利用嵌套循环

 #include<iostream>
 using namespace std;
 int main()
 {
     //利用嵌套循环实现星图
     //打印一行星图
     //外层执行一次,内层执行一周
     //外层循环
     for (int i = 0; i < 10; i++)
     {
         //内层循环
         for (int j = 0; j < 10; j++)
         {
             cout << "* ";
         }
         cout << endl;//for循环外换行任意键继续
     }
     
     
     system("pause");
     return 0;
 }

练习:乘法口诀表

案列:利用嵌套循环,实现九九乘法表

 #include<iostream>
 using namespace std;
 int main()
 {
     /*
     9行 9列            i=1;i<=9   j=1
     列数* 行数 = 结果  i*j
     列数<=行数         j<=i
     */
     for (int i = 1; i <= 9; i++)
     {
         //cout << i << endl;
         for (int j = 1; j <=i; j++)
         {
             int num = i * j;
             cout << i << "*" << j << "="<< num << "  ";
 //难点:j<=i    cout << i << "*" << j << "="<<num << "  "    输出为i*j=num  
         }
         cout << endl; 
     }
     system("pause");
     return 0;
 }

4.3跳转语句

4.3.1break语句

作用:用于跳出选择结构或者循环结构

break的使用时机:

  • 出现在switch语句中,作用是终止case并跳出switch

  • 出现在循环语句中,作用是跳出当前循环语句

  • 出现在嵌套循环中,跳出最近的内层循环语句

 #include<iostream>
 using namespace std;
 int main()
 {
     //1、出现在switch语句中
     /*
     cout << "请选择副本难度" << endl;
     cout << "1、简单" << endl;
     cout << "2、困难" << endl;
     cout << "3、地狱" << endl;
 ​
     int select = 0;
     cin >> select; 
     switch (select)
     {
     case 1:
         cout << "您选择的是普通难度" << endl;
         break;
     case 2:
         cout << "您选择的是困难难度" << endl;
         break;
     case 3:
         cout << "您选择的是地狱难度" << endl;
         break;
     default:
         break;
     }*/
     //2、出现在循环语句中
     /*for (int i = 0; i < 10; i++)
     {
         //如果i=5,退出循环,不在打印
         if (i == 5)
         {
             break;//退出循环 
         }
         cout << i << endl;
     }*/
     //3、出现在嵌套循环语句中
     for (int i = 0; i < 10; i++)
     {
         cout << "* ";
         for (int j = 0; j < 10; j++)
         {
             if (j == 5)
             {
                 break;//退出内层循环
             }
             cout << "* ";
         }
         cout << endl;
     }
     //cout << endl; 不需要
     system("pause");
     return 0;
 }

4.3.2continue语句

作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

 #include<iostream>
 using namespace std;
 int main()
 {
     //continue语句
     /*法一
     for (int i = 0; i <= 100; i++)
     {
         //如果是奇数才输出,偶数不输出
         if (i % 2 == 1)
         {
             cout << i << endl; //可以筛选条件,执行到此就不在向下执行,执行下一次循环
                               //break会退出循环
         }
     }
     */
     //法二
     for (int i = 0; i <= 100; i++)
     {
         //如果是奇数才输出,偶数不输出
         if (i % 2 == 0)
         {
             continue;  //可以筛选条件,执行到此就不在向下执行,执行下一次循环
                       //break会退出循环
         }
         cout << i << endl;
     }
     system("pause");
     return 0;
 }

注意:continue并没有使整个循环终止,而break会跳出循环

4.3.3goto语句

作用:可以无条件跳转语句

语法:goto标记;

解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置

不太推荐使用

 #include<iostream>
 using namespace std;
 int main()
 {
     //goto语句
     cout << "1、xxxxxx" << endl;
     cout << "2、xxxxxx" << endl;
     goto FLAG;
     cout << "3、xxxxxx" << endl;
     cout << "4、xxxxxx" << endl;
     cout << "5、xxxxxx" << endl;
     FLAG:
     cout << "6、xxxxxx" << endl;
     cout << "7、xxxxxx" << endl;
 ​
     system("pause");
     return 0;
 }

在程序中不太建议使用,以免程序混乱,不利于阅读

5、数组

5.1概述

所谓数组,就是一个集合,里面存放了相同类型的数据元素

特点一:数组的每个数据元素都是相同的数据类型

特点二:数组是由连续的内存位置组成的

5.2一维数组

5.2.1一维数组定义方式

一维数组定义的三种方式:

  1. 数据类型 数组名[ 数组长度 ];

  2. 数据类型 数组名[数组长度 ] = {值1,值2,值3……};

  3. 数据类型 数组名[ ] = {值1,值2,值3,……};

 #include<iostream>
 using namespace std;
 int main()
 {
     //1、数据类型 数组名[ 数组长度 ];
     int arr[5];
     //给数组中的元素赋值
     arr[0] = 0;
     arr[1] = 10;
     arr[2] = 20;
     arr[3] = 30;
     arr[4] = 40;
     //访问数据元素  数组元素的下表是从0开始的
     /*
     cout << arr[0] << endl; 
     cout << arr[1] << endl;
     cout << arr[2] << endl;
     cout << arr[3] << endl;
     cout << arr[4] << endl;
     */
     //2、数据类型 数组名[数组长度 ] = {值1,值2,值3……};
     //如果在初始化数据的时候,没有全部填写完,会用0来填补剩余数据
     int arr2[5] = { 0,10,20 };
     /*
     cout << arr2[0] << endl;
     cout << arr2[1] << endl;
     cout << arr2[2] << endl;
     cout << arr2[3] << endl;
     cout << arr2[4] << endl;
     */
     //利用循环的方式输出数组中的元素
     /*for (int i = 0; i < 5; i++)
     {
         cout << arr2[i] << endl;
     }*/
     //3、数据类型 数组名[ ] = {值1,值2,值3,……};
     //定义数组的时候,必须有初始长度,后面有数据的时候可以自动识别长度 
     int arr3[] = { 90,80,70,60,50,40,30,20,10,0 };
     for (int i = 0; i < 10; i++)
     {
         cout << arr3[i] << endl;
     }
     system("pause");
     return 0;
 }

总结1:数组名的命名规范与变量名命名规范一致,不要和变量重名

总结2:数组下标是从0开始索引的

5.2.2一维数组数组名

一维数组名称的用途:

  1. 可以统计整个数组在内存中的长度 sizeof(arr) sizeof(arr[i])

  2. 可以获取数组在内存中的首地址

 #include<iostream>
 using namespace std;
 int main()
 {
     /*
     一维数组名称的用途:
     可以统计整个数组在内存中的长度 
     可以获取数组在内存中的首地址
     */
     int arr[] = { 90,80,70,60,50,40,30,20,10,0 };
     cout << "整个数组占用的空间为: " << sizeof(arr) << endl;
     cout << "第一个元素占用的空间为: " << sizeof(arr[0]) << endl;
     cout << "数组中元素的个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;
     cout << "数组首地址为: "<< (int)arr << endl; //输出的是16进制的数,看不懂没关系,可以在前面加 (int)
     cout << "数组中第一个元素的地址为: " << (int)&arr[0] << endl;
     cout << "数组中第二个元素的地址为: " << (int)&arr[1] << endl;
     cout << "数组中第三个元素的地址为: " << (int)&arr[2] << endl;
     cout << "数组中第四个元素的地址为: " << (int)&arr[3] << endl;
     //arr=100 错误 数组名是常量,不可以进行赋值操作
     system("pause");
     return 0;
 }

练习案例1:五只小猪称体重

案例描述:

在一个数组中记录了五只小猪的体重,如:int arr[]={300,350,200,400,250}

找出并打印最重的小猪体重

 #include<iostream>
 using namespace std;
 int main()
 {
     //1、创建五只小猪体重的数组
     int arr[] = { 300,350,200,400,250 };
     //2、从数组中找到最大值
     int max = 0;//先设定一个最大值为0
     for (int i = 0; i < 5; i++)
     {
         if (arr[i] > max)//如果访问的数组中的元素比我认定的最大值还大,更新最大值
         {
             max = arr[i];
         }
     }
     //3、打印最大值
     cout << "最重的小猪体重为: " << max << endl;
     system("pause");
     return 0;
 }

练习案例2:数组元素逆置

案例描述:请声明一个5个元素的数组,并且将元素逆置。

(如原数组元素为:1,3,2,5,4 ;逆置后输出结果为4,5,2,3,1)

 #include<iostream>
 using namespace std;
 int main()
 {
     //实现元素逆置
     //1、创建数组
     int arr[] = { 1,3,2,5,4 };  
     cout << "数组逆置前: " << endl;
     for (int i = 0; i < 5; i++)
     {
         cout << arr[i] << endl;
     }
     /*
     2、实现逆置
        记录起始下标的位置
        记录结束下标的位置
        起始下标与结束下标元素互换
        起始位置++ 结束位置--
        循环执行start++ end--,直到start>=end为止
     */
     int start = 0;//起始下标
     int end = sizeof(arr) / sizeof(arr[0])-1;//结束下标
     while (start < end)
     {
         //实现元素互换 
         int temp = arr[start];
         arr[start] = arr[end];
         arr[end] = temp;
 ​
         //下标更新
         start++;
         end--;
     }
     cout << "数组逆置后: " << endl;
     for (int i = 0; i < 5; i++)
     {
         cout << arr[i] << endl;
     }
     system("pause");
     return 0;
 }

5.2.3冒泡排序

作用:最常用的排序算法,对数组内元素进行排序

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

  2. 对每一个相邻元素做同样的工作,执行完毕后,找到第一个最大值。

  3. 重复以上步骤,每次比较次数-1,直到不需要比较

将数组{4,2,8,0,5,,1,3,9}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值