提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

C++基础知识


DAY1

  1. 变量

    作用:方便我们管理内存空间
    格式:*数据类型 变量名=变量初始值*
    
  2. 常量

    作用:记录程序中不可更改的数据#define 常量名  常量值const 数据类型 常量名 = 常量值
    
  3. 关键字

    C++中预先保留的单词不能用作常量或变量eg:int bool double
    
  4. 命名规则

    a.由字母、数字、下划线组成
    b.第一个字符不能为数字
    
  5. 数据类型

    short——2字节   int——4字节
    
  6. sizeof

    作用:统计数据类型所占内存大小sizeof(数据类型/变量)
    
  7. 字符型

//字符创建方式char ch = 'A'; 无中括号 单引号cout << ch << endl;cout << "字节长度:"<<sizeof(ch) << endl;cout << "ASCII编码:" << int(ch) << endl;cout <<"Hell\taaa" << endl;cout << "Hello\taaa" << endl;
 int(ch)求ASCII码a.用单引b.单个字符a——97   A——65仅占一个字节,将对应ASCII编码放入存储单元
  1. 字符串型
a.换行符  \n     与endl交换
b.反斜杠  \\      第一个\是命令,第二个\是符号
c.水平制表 \t      8个字节
  1. 字符串型
C:char 变量名[ ]="字符串值"
C++:string 变量名=“字符串值”
C++ 格式使用前加上头文件#include<string>
  //C风格字符串-中括号 双引号char str1[] = "hello world";cout << str1 << endl;//2.C++风格字符串string str2 = "hello world";cout << str2 << endl;
  1. bool——占一字节:true or false
//创建bool数据类型bool flag = true;//true代表真cout << flag << endl;cout << "bool的内存空间:" << sizeof(bool)<<endl;
  1. 输入cin>>变量
    float f = 3.14f;//不加f为double型cout << "请给f赋值:" << endl;cin >> f;cout << "f=" << f<<endl;string str = "Hello";cout << "请给str赋值:" << endl;cin >> str;cout << "str=" << str<<endl;bool flag =false;cout << "请给flag赋值:" << endl;cin >> flag;cout << "flag=" << flag <<endl;  //bool类型非0都为真
  cin后不能加endl
  1. i++:先运算再加一
    ++i:先加一再运算
//前置和后置int a1= 10;int a2= 10;int b1 = ++a1* 10;int b2 = a2++* 10;cout << "b1="<<b1 << endl;cout << "b2="<<b2<< endl;

b1=110,b2=100
15. 流程结构

   a.顺序——按顺序b.选择——按条件c.循环——按条件循环

16.比较运算符

//比较运算符int a = 10;int b = 20;cout << (a ==b) << endl;//加括号表优先级cout << (a < b) << endl;cout << (a > b) << endl;
  1. if条件语句
int score = 0;cout << "输入分数:";cin>>score ;cout << "输入分数为:"<<score<<endl;if (score >= 600) {cout << "恭喜你" << endl;}

DAY2

1.多条件if语句

//多条件if语句int score = 0;cout << "输入高考分数:";cin >> score;if (score > 600) {cout << "恭喜你考上一本大学" << endl;if (score>700) {cout << "清华大学" << endl;}else if(score>690) {cout << "北京大学" << endl;}elsecout << "普通一本" << endl;}else if (500 < score ) {cout << "恭喜你考上二本大学" << endl;}else cout << "你没考上大学" << endl;
----if条件要注意不同条件之间的包含关系,范围小的在前
----若要表示5<a<10,需分为两个式子,a>5&&a<10

2.三只小猪称体重示例

代码思想:比较A和B

             若A重,比较A和C若B重,比较B和C
//多条件if语句int A = 0,B = 0, C = 0;cout << "小猪A体重:";cin >> A;cout << "小猪B体重:";cin >> B ;cout << "小猪C体重:";cin >> C ;if (A > B) {if (A > C) {cout << "小猪A最重" << endl;}else {cout << "小猪C最重" << endl;}}else {if (B> C) {cout << "小猪B最重" << endl;}else {cout << "小猪C最重" << endl;}}

3.三目运算符

          表达式1?表达式2:表达式3
//创建三个变量a b c
//比较a和b,将变量大的值赋给cint a = 1;int b = 4;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;return 0;

3.switch语句

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

 switch(表达式){case 结果1:执行语句;break;case 结果1:执行语句;break;...default:执行语句;break;}解读:表达式是结果几就执行几的语句,如果都不符合,则执行default语句,然后退出。注意:a.switch语句中表达式类型只能是整型或字符型b.采用字符型时,字符要加单引号,否则会被系统判定为变量
//switch语句char level='A';cout << "输入考试等级";cin >> level;switch (level) {case 'A':cout << "优秀" << endl;break;case 'B':cout << "良好" << endl;break;case 'C':cout << "一般" << endl;break;case 'D':cout << "不合格" << endl;break;default:cout << "输入格式错误" << endl;break;}

DAY3

1.while循环语句

 while(循环条件){循环语句}
//while循环int num = 0;while (num < 10) {num++;cout << num << endl;}

2.猜数字游戏(while案例)

设置随机函数rand的种子,以保证rand的数每次都不相同
void srand(unsigned int seed)
其中seed多选用时间函数time(null);
在调用rand函数前,srand要先被调用
     //1.系统生成随机数srand(unsigned int(time(NULL)));int num = rand()%100 + 1;//生成1~100的随机数while(1){      //while循环使猜测可以一直进行//2.玩家进行猜测int val;cout << "请输入数据:";cin >> val;//3.判断玩家的猜测if (num > val) {cout << "输入过小" << endl;}else if (num < val) {cout << "输入过大" << endl;}else {cout << "恭喜你回答正确" << endl;break;//猜对后退出循环}}

3.do…while循环语句

do{循环语句}while(循环条件);
与while的区别:do...while会先执行一次循环语句,再判断循环条件
int main()
{//do...while输出0~9int num = 0;do {cout << num << endl;num++;} while (num < 10);system("pause");return 0;
}

4.水仙花数(do…while案例)

水仙花数:3位数每个位上数字的3次幂之和等于其本身
eg:1^3+5^3+3^3=153
int main()
{//do...while找出所有水仙花数int num = 100;int a,b,c;do {a = (num % 10) * (num % 10) * (num % 10);//个位b = ((num / 10) % 10) * ((num / 10) % 10) * ((num / 10) % 10);//十位c=(num / 100)*(num / 100)*(num / 100);//百位if (num == a+b+c) {//判断是否水仙花数cout << num << endl; }num++;} while (num < 1000);system("pause");return 0;
}

5.for循环语句

for(起始表达式;条件表达式;末尾循环体){循环语句};
注意:末尾循环体最后执行
//for循环 从0打印到9int i = 0;for (i = 0; i < 10; i++) {cout << i << endl;  }

5.敲桌子(for循环案例)

规则:从1~100,若数字含或7的倍数,则打印敲桌子,其余数字直接输出
int main()
{int i,a,b;for (i = 0; i <= 100; i++) {a = i % 10;//个位b = i / 10;//十位if (i % 7 == 0 || a == 7 || b == 7) {cout << "敲桌子" << endl;}else {cout << i << endl;}}system("pause");return 0;
}

6.嵌套循环

打印10*10的星图

int i, j;for (i = 0; i <=10; i++) {for(j=0;j<=10;j++){cout << "* ";}cout << endl;}

7.乘法口诀表(for案例)

根据表格可观察到公式:列数*函数=结果
int i, j;for (i = 1; i <10; i++) {//行数for(j=1;j<i;j++){//列数cout << j<<"*"<<i<<"=" << i * j<<" ";}cout << endl;}

8.continue

作用:跳过本次循环中余下尚未执行的语句,继续执行下一次循环,break不会执行下一次循环
int main()
{for(int i = 0; i <= 100; i++) {//奇数输出,偶数不输出if(i%2==0){continue;//偶数不输出,进行下一次循环}cout << i << endl;}system("pause");return 0;
}

9.goto语句

作用:无条件跳转语句,想去哪里去哪里
语法:goto 标记(多用大写字母)
int main()
{cout << "1XXXX" << endl;goto FLAG;//跳到标记行cout << "2XXXX" << endl;cout << "3XXXX" << endl;FLAG://做标记cout << "4XXXX" << endl;system("pause");return 0;
}

DAY3.1数组

数组:由连续内存组成

1.一维数组

三种定义方法:
1.数组类型  数组名 [ 数组长度 ];
2.数组类型  数组名 [ 数组长度 ] = { 值1,值2,...};
3.数组类型  数组名 [ ] = { 值1,值2,...};
//定义数组时必须有初始长度,错误示范:int arr[ ];无长度无值,无法判断长度
//输出时若数组长度不够,则会补0
int arr[5]={10,20,30,40,50};//给数组中元素进行赋值for (int i = 0; i < 5; i++) {cout << arr[i] << endl;}

2.一维数组组名

作用:1.统计数组长度  总:sizeof(arr)  单个:sizeof(arr[0])2.获取数组在内存中的首地址 数组首地址:(int)arr数组首元素地址:(int)&arr[0] //&是取址符
注意:数组名是常量,不可以赋值
int arr[5]={10,20,30,40,50};cout << "整个数组占用内存空间:"<<sizeof(arr) << endl;cout << "单个元素占用内存空间:" << sizeof(arr[0]) << endl;cout << "数组中元素个数:" << sizeof(arr)/ sizeof(arr[0]) << endl;cout << "数组首地址:" << (int)arr << endl;cout << "数组首元素首地址:" << (int)&arr[0] << endl;cout << "数组首元素首地址:" << (int)&arr[1] << endl;

3.五只小猪称体重(数组中找最大值)

思想:遍历数组中各元素,若所遍历元素比我认定的最大值要大,则更新最大值。

int arr[5]={10,20,60,40,50};int max = 0;for (int i = 0; i < 5; i++) {max=(arr[i] > max) ? arr[i] : max;}cout << "最大值:" << max << endl;

DAY4

1.一维数组逆置

思想:初始化定义首尾元素下标,借助temp值进行首尾互换,首元素递增,尾元素递减,直到两者下标相等则退出循环。

int arr[5]={10,20,30,40,50};cout << "元素逆置前:" ;for (int i = 0; i < 5; i++) {cout << arr[i] <<"  ";}int start = 0;//元素起始下标int end = sizeof(arr) / sizeof(arr[0]) - 1;//下标从0开始计,因此计算末尾元素下标要减一cout << " 元素逆置后:"  ;while(end>start) {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] << "  ";}

2.冒泡排序

思想:
1.比较相邻两元素,第一个大于第二个就进行交换;
2.每轮执行完毕后,都可以找到该轮元素的最大值;
3.对剩下的元素继续遍历,每次比较次数减一,直到剩一个元素。
注意:排序总轮数=元素个数-1;(从0开始计)比较次数=当前元素数-1=(元素总个数-当前排序轮数)-1
int arr[7]={5,2,8,6,3,4,7};cout << "元素排序前:"<<endl;for (int i = 0; i < 7; i++) {cout << arr[i] << " ";}cout << endl;for (int i = 0; i < 7-1; i++) {//循环轮数for (int j = 0; j < 7 - i - 1; j++) {//各轮比较次数if (arr[j] > arr[j + 1]) {int temp = arr[j];//交换arr[j] = arr[j + 1];arr[j + 1] = temp;}}}cout << "元素排序后:" << endl;for (int i = 0; i < 7; i++) {cout << arr[i] << " ";}

3.二维数组定义

二维数组四种定义方式:
1.数据类型 数组名[行数][列数];
2.数据类型 数组名[行数][列数]={{1,2},{3,4}};
3.数据类型 数组名[行数][列数]={1,2,3,4};
4.数据类型 数组名[   ][列数]={1,2,3,4};
int arr[2][3] = { 1,2,3,4,5,6 };for (int i = 0; i < 2; i++) {//二维数组输出for (int j = 0; j < 3; j++) {cout << arr[i][j] << " ";}cout << endl;}

4.二维数组数组名

int arr[2][3] = {7,2,3,4,5,6 };//1.查看内存空间cout << "二维数组所占内存空间:" <<sizeof(arr) << endl;cout << "二维数组第一行占内存空间:" << sizeof(arr[0]) << endl;cout << "二维数组第一个占内存空间:" << sizeof(arr[0][0]) << endl;cout << "二维数组行数为:" << sizeof(arr)/ sizeof(arr[0]) << endl;cout << "二维数组行数为:" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;//2.查看二维数组首地址cout << "二维数组首地址为:" << (int)arr << endl;cout << "二维数组第一行首地址为:" << (int)arr[0] << endl;cout << "二维数组第一个元素首地址为:" << (int)arr[0][0] << endl;

5.成绩统计(二维数组)

说明:统计三个同学语数英成绩的总和,采用3*3二维数组,将各行元素相加。

int score[3][3] = {100,100,100,80,80,80,50,50,50 };for (int i = 0; i < 3; i++) {//行int sum = 0;for (int j = 0; j < 3; j++) {//列sum =sum + score[i][j];//一行代表一位同学各科目成绩}cout << "第"<<i+1<<"位同学分数总和为:"<<sum <<  endl;}

DAY5

1.函数的定义与调用

定义:
返回值类型 函数名(参数列表)
{函数体语句return表达式  //函数结果}
调用:函数名称 (参数)
1.若函数定义有参数,调用时也必须有参数。
2.若有返回值,则在主函数中接收该返回值,
main中调用格式:数组类型 变量名=函数名(返回值),int a=test(1)。

功能:两个整数相加
1.返回值类型:int
2.函数名 add
3.参数列表 (int num1,int num2)
4.函数体语句 int sun=num1+num2
5.return表达式 return sum
其中,a,b为真实数据,为实参;num1和num2并不是真实数据,是形参;当调用函数时,实参的值会传递给形参。

int add(int num1, int num2) {int sum = num1 + num2;return sum;
}
int main()
{int a = 6;int b = 3;int c = add(a, b);//函数调用格式cout << "总和为:"<<c<<  endl;system("pause");return 0;
}

2.值传递

定义:函数调用时,实参将数值传入给形参。
注意:值传递时,如果形参发生改变,不会影响实参。
功能:实现两数字交换函数 //不需要返回值时函数类型定义为void

void swap(int a, int b) {int temp=a;a = b;b = temp;
}
int main() {int num1 = 1;int num2 = 0;swap(num1, num2);//实参num1和num2将数值传递给形参a,b进行交换,但实参值没有改变system("pause");return 0;
}

3.函数声明

作用:提前告诉编译器该函数的存在,若函数在主函数之后,则必须先声明。
eg:int main(int a,int b);
位置:主函数或其他函数之前 //不在函数里或主函数里,是单独的语句
注意:声明可以多次,定义只能一次

3.函数分文件编写

步骤: 1.创建后缀名为.h的头文件  //头文件带双引号表示是自己写的2.创建后缀名为.cpp的源文件3.在头文件中写函数的声明4.在源文件中写函数的定义

1.创建后缀名为.h头文件+在头文件中写函数声明
2.创建后缀名为.cpp源文件+在源文件中写函数定义3.主函数<C++书写Hello World>调用该交换函数时在头文件声明即可,格式:#include“swap.h”

DAY6

1.指针基本概念

作用:间接访问内存,可用指针保存地址编号,多为十六进制(例:0x0000)
变量指向数值,指针指向数值的地址

 指针变量:数据类型 * 变量名
//1.定义指针int* p;//p指point,*用在定义指针时int a = 10;//2.指针变量赋值p = &a;//&为取址符号,p存储指针cout << "p=" << p << endl;cout << "a="<<&a << endl;//输出相同,都是a的地址//2.使用指针//采用解引用操作*找到指针指向的内存中的数据*p = 1000;//解引用后,可以对该值读取,也可以修改cout << "*p=" << *p;//修改后原值会发生改变cout << "a=" << a;
    //求指针内存空间int a = 10;//int* p;//p指point,*用在定义指针时//p = &a;//&为取址符号,p存储指针int* p = &a;//等同于上面两句//求指针所占内存空间cout << *p << endl;//这里*表示解引用//和上面定义时的*不是一个cout << sizeof(p) << endl;cout << sizeof(int *) << endl;cout << sizeof(float *) << endl;//可以改变数据类型

2.空指针和野指针

空指针:指针指向编号为0的空间,用于初始化指针,不可访问。0~255之间内存编号为系统占用内存,不可访问
野指针:指向非法内存空间的指针变量,访问我们没有申请的内存空间,应避免出现

//空指针
int* p = NULL;
//野指针,访问时指针报错
int* p = (int*)0X1100;

3.const修饰指针

1.常量指针:const int * p=&a
特点:指针指向可以改,指向的值不能改
2.指针常量: int * const p=&a
特点:指针指向不能改,指向的值可以改
3.const即修饰指针又修饰常量:const int * const p=&a
特点:指向和值都不能改
总结:const跟谁谁不能修改

4.指针和数组

int arr[] = { 1,2,3,4,5 };int* p = arr;//定义一个指向指针的数组cout << "输出数组第一个元素:" << arr[0] << endl;cout << "指针访问的第一个元素:" << *p << endl;//上面输出相同,利用指针遍历数组for (int i = 0; i < 5; i++) {cout << *p << endl;p++;}

5.指针和函数

值传递不改变实参,地址传递改变实参

void swap(int* p1, int* p2) {int temp;temp = *p1;*p1 = *p2;*p2 = temp;
}int main() {int a = 10;int b = 20;swap(&a, &b);//地址传递cout << "a=" << a << endl;cout << "b=" << b << endl;system("pause");return 0;
}

6.指针、函数、函数

描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序

void Bubble(int* arr, int len) {//arr为数组首地址for (int i = 0; i < len-1; i++) {//循环轮数for (int j = 0; j < len - i-1; j++){if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
}void show(int* arr, int len) {for (int i = 0; i < len ; i++) {cout << arr[i] << endl;}
}int main() {//1.先创建数组int arr[] = { 3,2,5,1,4 };int len = sizeof(arr) / sizeof(arr[0]);//2.创建函数实现排序Bubble(arr, len);show(arr, len);system("pause");return 0;
}

7.结构体定义和使用

定义:用户自定义的数据类型,允许用户存储不同的数据类型
语法:struct 结构体名{结构体成员列表}
创建方式:
1.struct 结构体名 变量名
2.struct 结构体名 变量名={成员1值,成员2值…}
3.定义结构体时顺便创建变量

8.结构体数组

struct Student {//学生结构体string name;int age;
};int main() {Student arr[3]={{"张三",18},{"李四",19},{"王五",20}};//修改数组中元素arr[1].name = "小红";arr[2].age = 30;//遍历结构体数组for (int i = 0; i < 3; i++) {cout << arr[i].name << endl;}system("pause");return 0;
}

9.结构体指针

指针采用->访问结构体成员属性

struct Student {//学生结构体string name;int age;
};int main() {Student s={"张三",18};//定义指针p指向s地址Student* p = &s;//采用->访问结构体成员属性cout << p->name << endl;system("pause");return 0;
}

10.结构体嵌套

struct Student {//学生结构体string name;int age;
};
struct Teacher {//老师结构体int id;int age;struct Student stu;
};
int main() {Teacher t;t.id = 100;t.age = 37;t.stu.name = "张三";t.stu.age = 17;system("pause");return 0;
}

11.结构体作函数参数

值传递不改变实参的值,地址传递改变实参的值。
值传递在数据量很大时,每份数据都复制一个副本进行操作,有点浪费空间。此时推荐地址传递,一个指针只占4字节内存,比每份数据所占内存要小得多,且不会复制副本。

struct Student {//学生结构体string name;int age;
};
//地址传递
void show(Student *s) {//声明指针ss->name = "李四";//修改了张三的名字cout << s->name << endl;//地址传递用箭头访问
}int main() {Student s;s.name = "张三";s.age = 18;cout << s.name << endl;//值传递用.访问show(&s);//引用地址符&system("pause");return 0;
}

DAY7

1.结构体中const

函数参数前加const,则该地址指向的实参值不可更改,解决了采用地址传递时,对实参进行误修改的问题。

void show(const Student* p) {//s->name = "李四";cout << p->name << endl;//地址传递用箭头访问
}
int main() {//创建结构体变量Student s={"张三",18};show(&s);system("pause");return 0;
}

2.结构体案例(英雄冒泡)

//设计英雄结构体
struct Hero {string name;int age;string sex;
};//注意定义顺序对应数组内顺序//按年龄对英雄进行排序
void bubblesort(struct Hero arr[], int len) {for (int i = 0; i < len - 1; i++) {//排序次数for (int j = 0; j < len - 1 - i; j++) {//i与已排好的次数相等if (arr[j].age > arr[j + 1].age) {//注意此处直接arr就好struct Hero temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}//排序过程}}
}//打印英雄信息
void show(struct Hero arr[], int len) {for (int i = 0;i < len;  i++) {cout << "name:" << arr[i].name << " sex:" << arr[i].sex << " age:" << arr[i].age<<endl;}
}
int main() {//创建数组存放五名英雄struct Hero arr[5]= {{"刘备",23,"男"}, {"关羽",20,"男"},{"张飞",22,"男"},{"赵龙",21,"男"}, {"貂蝉",19,"女"},};//2.通过函数给老师和学生赋值int len = sizeof(arr) / sizeof(arr[0]);//打印信息cout << "排序前:" << endl;show(arr, len);cout << "排序后:" << endl;bubblesort(arr, len);show(arr, len);system("pause");return 0;
}

总结

通讯录管理体系见文件

【个人C++学习日记】相关推荐

  1. java的圆周率_java学习日记,圆周率的打印

    前段时间看到听说学习java每天写技术贴会对自己提升很大,我现在学习java也就2个周,算不上技术贴,就写写学习日记吧. 昨天师傅给我出了一道题,说是试试用java打印圆周率. 刚开始我的思路是,如果 ...

  2. GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考

    GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考 标签: cuda存储线程结构网格 2012-12-07 16:30 6298人阅读 评论(4)收藏 举 ...

  3. GPU(CUDA)学习日记(十三)------ CUDA内存简介

    GPU(CUDA)学习日记(十三)------ CUDA内存简介 标签: cuda存储线程结构 2012-12-07 16:53 2902人阅读 评论(0)收藏 举报 分类: GPU(16) CUDA ...

  4. GPU(CUDA)学习日记(九)------ CUDA存储器模型

    GPU(CUDA)学习日记(九)------ CUDA存储器模型 标签: cuda存储bindingcache编程api 2012-09-27 10:53 1677人阅读 评论(1) 收藏 举报 分类 ...

  5. 语言余一个负数_C语言学习日记(8)——整数溢出

    小时候喜欢玩电子计算器,觉得很神奇,想要算什么数,立刻就能算出来.当时看着计算器的液晶屏幕就想,如果算一个很大的数,超过了屏幕上面数字的位数,会怎么样呢?试了以后结果是INF,那就是无穷大了.虽然当时 ...

  6. SpringMVC学习日记 1.Spring框架

    SpringMVC学习日记 1.Spring框架 Spring简介 Spring框架是一个开源框架,由Rod Johnson组织和开发,生产目的在于简化企业级应用的开发. 主要特性 非侵入(no-in ...

  7. 微信开发学习日记(一):快速阅读5本书,掌握整体背景

    2015年1月开始学习微信开发. 已经有多年开发经验了,从网上文章来看,微信开发主要是接口,然后是业务逻辑,不是很难.所以,我比较强调学习效率.一天学一点,是不能满足我的快速学习欲望的.       ...

  8. const 指针_C语言学习日记(11)——const与指针

    对于一个普通指针typet *p.p有三个最基本的能力,第一就是可以通过p = &obj来指向一个type类型对象,并随意切换指向对象.第二就是通过value = *p来读取它指向的对象的值. ...

  9. 十五的学习日记20160926-你不知道的JS笔记/

    十五的学习日记20160926 JavaScript 一个用于检测正负值的函数,可以用它辨别-0值. 我觉得挺好用,以后可以写到自己的工具库里. //函数:检查传入参数是否为正数.Number=> ...

  10. oracle工作日记,Oracle学习日记【4】

    1.查询所返回的列数以及列的类型必须匹配,列名可以不同. 2.只有UNION ALL不会去重.其他三个都需要排序后去重,性能比较差. 2.连接查询 2.1.内连接(INNER JOIN):INNER可 ...

最新文章

  1. 第十二周项目二-Time类中的运算符重载
  2. 爬虫:获取页面 -- request库的使用
  3. DL之perceptron:利用perceptron感知机对股票实现预测
  4. SQL Server,Oracle,DB2索引建立语句的对比
  5. HTML+CSS+JS实现燃烧的火焰火花动画特效
  6. 32k通过地址跳转到函数_【HYPERLINK】函数技巧,你一定要知道的!!!
  7. python 类的使用基础
  8. python newbie——PE No.3
  9. -bash: cd: /.ssh: 没有那个文件或目录
  10. 3-5-多数组k大值
  11. Topcoder SRM 144 DIV 1
  12. weblogic下载安装
  13. “麻将换皮”的《刀塔自走棋》会是下一个“吃鸡”吗?
  14. 微型计算机不是ecu,ECU升级是什么意思?
  15. 今日恐慌与贪婪指数为20 恐慌程度有所上升
  16. python wxpython菜鸟教程_wxpython新手向教程
  17. UINX环境高级编程笔记 第3章 文件I/O
  18. AlertManager实现企业微信报警(十三)
  19. cacheable 表达式_Spring Boot缓存注解@Cacheable、@CacheEvict、@CachePut使用
  20. 刷完这50个标准库模块:没人比我更懂Python了

热门文章

  1. 什么是restful,什么是rest风格
  2. Asp.Net 汉字转(拼音)
  3. Eclipse解决SVN版本冲突
  4. 华为手机怎么隐藏按键图标_原来华为手机右上角隐藏扫描仪!纸质档一键电子化,真的涨知识了...
  5. 学会区分 RNN 的 output 和 state
  6. 在VS中使用Wind数据终端API的经验(一)
  7. Android Fastboot 模式下刷机教程
  8. HM-SpringCloud微服务系列11.4【缓存同步】
  9. 模电(三)晶体三极管
  10. 【聚类算法】基于matlab划分法k-means聚类算法【含Matlab源码 1941期】