C/C++学习笔记

1、两个自然数的最大公约数:

以小数(除数)除大数(被除数),得余数,如果余数不为0,则小数(除数)作为被除数,余数作为除数,相除后得新余数。若余数为0,则此除数即为最大公约数。否则继续辗转相除。

利用while循环,判断条件是余数是否为0,循环体内将除数做被除数,余数做除数。

另外两个数的:最大公约数*最小公倍数 = 两数的乘积

2、素数(质数)

素数是指:除1和它自身外,不能被其他任何一个整数整除的自然数

若m不能被从2到根号下m之间的任一整数整除,则m是素数(质数)

3.随机数产生

srand(time(NULL));//初始化随机种子数需要头文件 time.h,stdlib.h

int n = rand()%20+1;

4、Include “iomanip.h” setw(n) :对后面的输出起作用,控制输出间隔,后面输出共占n位,包括实际输出值

5、C中,系统为数组中的每个存储单元分配2个字节(C++中分配4个字节)

6.、

复制字符串:strcpy

字符串长度:strlen

字符串大写转小写:strlwr

字符串小写转大写:strupr

字符串拼接:strcat

字符串比较:strcmp

7、*f的++运算符作用于指针变量;(*f++)的++运算符作用于指针变量所指对象

8、

指针与二维数组

int m[2][3] = {1,2,3,4,5,6};

//int *f[2] = {m[0],m[1]};

int *f[2];

f = {m[0],m[1]};

这里*f[2] 定义的是指针数组,取2是因为对应:数组m可以看作是两个元素m[0],m[1]构成的一维数组

数组元素:*(f[i]+j)

int m[2][3] = {1,2,3,4,5,6};

int (*f)[3];

f =m;

这里(*f)[3]定义的是行指针,要求f后面[]中的值和数组m的列数相等,f+1表示下一行第一个元素m[1][0]

数组元素:f[i][j]

int m[2][3] = {1,2,3,4,5,6};

int *f =m[0];

这里*f定义的是指针变量,因为是一级指针变量,所以 =m[0],不能写成*f= m;错误,因为m是二级指针地址!

数组元素:f++; *f;

9、指针与字符串

char *m = “hello world”;//指针直接指向一个字符串

m+=6;

cout<<*m++;//依次输出单个字符

cout<<m;//输出的是字符串

char m [80];

char *f = s;

cout<<*f++;//依次输出单个字符

循环完后f-m是字符串的长度★

char *m[] = {“hello”,”world”,”crazy”,”code”};//定义的是字符指针数组

cout<<m[i++];//依次输出字符串

char *m[] = {“hello”,”world”,”crazy”,”code”};

char **f =m;

cout<<*f++;//依次输出字符串

10、函数:

  • 值传递:形参的改变不会影响实参
  • 地址传递:形参的改变会影响实参。形参是引用,实参是变量名;形参是指针变量,实参是地址(变量地址,数组名或指针)

11、

/*函数模板*/

template<class T>

T fun(T m,int n) {//函数的参数列表里必须含有与给定的函数模板中参数类型相同的参数。

     return n;

}

12、

结构体:成员各自占有自己的存储空间 共用体:所有成员占用同一个存储空间(取最大的)

13、C++的头文件和实现文件分别写什么

参考:<http://www.cnblogs.com/ider/archive/2011/06/30/what_is_in_cpp_header_and_implementation_file.html>

14、实现动态联编的条件:

  • 基类中有说明的虚函数
  • 调用虚函数操作的只能是对象指针或对象引用,否则仍为静态联编

发表评论

电子邮件地址不会被公开。 必填项已用*标注