一、语言基础(c、c++)

命名空间using namespace std;

for example:将命名空间设置为南昌后,你在南昌大学读书就只用说南大了
如果不写,则输出时要指明std的输出
std::cout<<" "<<std::endl;

endl

不仅起到换行的作用,还能清空输入缓冲区fflush(stdin)

函数模板

template

比较两个整型值的函数为:bool isBiggerThan(int x, int y) { return x>y?true:false; }
比较两个实型值的函数为:bool isBiggerThan(float x, float y) { return x>y?true:false; }
比较两个字符型值的函数为:bool isBiggerThan(char x, char y) { return x>y?true:false; }

仔细观察上面三个函数,除了参数类型不一致,其余完全相同
使用函数模板可以消除重复
上面的三个函数可以写为:
bool isBiggerThan(T x,T y){ return x>y?true:false;}
编译程序在编译时会根据传入的实参的类型使用函数模板生成相应本的函数

最大公约数和最小公倍数

最大公约数

根据数学中的辗转相除法 用较大的那个数做被除数,较小的那个做除数,进行相除,得到的余数再除之前的那个较小的除数,所得的余数再除上一轮的除数,根据余数小于除数的性质,每次所得的余数是逐步减小的,经过有限步后得到的余数必然等于0,倒数第二步所得余数便是所求

递归式:gcd(a,b) = gcd(b,a%b);
边界:gcd(a,0) = a; ---即b = 0;
int gcd(int a,int b){
    if(b==0)return a;
    else return gcd(b,a%b);
}

最小公倍数

两数的最小公倍数等于两数之积除以它们的最大公约数

a*b/gcd(a,b);
a/gcd(a,b)*b;	//防溢出

typedef 类型名称 类型标识符;

常用于简化比较复杂的类型声明(尤其是结构体)

提高程序的可移植性

Example:typedef int ElemType; //给int起个别名ElemType
ElemType a;//等价于int a
看上去不起眼,但如果在程序中有n个地方用到了ElemType类型,现在需要将数据变为字符型,只需要:

typedef char ElemType

局部数组太大会闪退

特别大二的数组应该定义在main()函数外,即定义为全局变量

动态数组使用完毕后需要delete

int *a = new int[n]
....
delete[] a

二维数组要逐行释放空间,最后再释放整个二维数组

int **array = new int*[m];
...
for(int i=0;i<m;i++)
	delete[] array[i];
delete[] array

字符串

scanf_s读取字符串要指定缓冲区长度scanf_s(“%s”,a,20);

长度计算

strlen()获取字符串长度,不包括’\0’
sizeof()计算长度会算’\0’

定义字符数组时,若指定长度,则数组长度至少要大于给出的元素个数

char a[8] = { ‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’ };
如果恰好等于,则会输出乱码
用strlen和sizeof求长度时,vs下运行得出结果为29,因为它会直到找到’\0’才会终止

char类字符串的读取

cin遇到空格结束
cin.get()遇到换行符结束,且换行符保留在输入序列中,可在使用后再调用一次cin.get(),或者用getchar()吸收掉
cin.getline(str,100)读取99个字符,最后一个默认’\0’,同样遇到换行符结束
可以直接gets(str)读取整个字符数组包括空格

string类字符串的读取

ex:string str;
cin>>str;
getline(cin,str); //该函数需要引入string头文件,而不是cstring;
getline(cin,str,:); //遇到冒号则停止

字符串的拼接、比较、复制、查找

strcat(s1,s2) //拼接,将s2的内容拼接在s1后,更新s1
char类型:strcmp(s1,s2) //比较,返回1、0、-1,从第一个字母开始比较
如果是string,可以直接用算数运算比较大小(><)
strcpy(s1,s2) //将s2的内容复制到s1中,会覆盖s1
str.find(s) //查找,返回索引

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值