C++点滴(5)

来源:互联网 发布:老张博客源码 编辑:程序博客网 时间:2024/06/10 00:45
C(n,k) = C(n-1,k) + C(n-1,k-1)一个n元集合,选择k个元素的组合有C(n,k)个。现在把其中一个元素设置为特别元素。从剩余的n-1个元素中选择k个元素,有C(n-1,k)个,它比C(n,k)所少的都是包含特别元素的组合。再看C(n-1,k-1),如果把每个组合都加上一个特别元素,那么这个式子就表示所有包含特别元素的k组合。数组作为函数的参数:定义数组:int num[3] = {1,2,3};声明函数:void Bubble(int num[],int);定义函数:void Bubble(int num[],int n)使用:Bubble(num,3);   //数组名用为实参求出int类型的一系列数(a[10])中的最大和最小值:int max=-32768,min=32767;//先假设当前max为int类型的最小值,min为int类型的最大值for(int i=0;i<=9;i++){    if(a[i]>max)  max=a[i];    if(a[i]<min)  min=a[i];}乘积的最后三位的值只与乘数和被乘数的后三位有关。一个整数若含有一个因子5,则必然会在求100!时产生一个零。for(int a=1;a>=3&&a<=4;a++){    cout<<a<<endl;}结果是不会输出任何数(只要不满足条件就跳出循环)判断一个数是否为整数:z==int(z)setprecision:控制输出流显示浮点数的数字个数,如果和fixed合用的话,可以控制小数点右面的位数。cout<<setprecision(2)<<123.456;1.2e+002cout<<setprecision(3)<<123.456;123(输出3位有效数字)cout<<fixed<<setprecision(3)<<123.456123.456(输出到小数点后3位)cout<<setprecision(4)<<123.456;123.5(四舍五入)C++引用:引用的概念:引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;int a,&ra=a;a为目标原名称,ra为目标引用名。给ra赋值:ra=1; 等价于 a=1; 说明:(1)&在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。(3)声明引用时,必须同时对其进行初始化。(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。(5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。&ra与&a相等。(6)不能建立引用的数组。因为数组是一个由若干个元素所组成的集合,所以无法建立一个由引用组成的集合。但是可以建立数组的引用。引用的两个主要用途:作为函数参数以及从函数中返回左值。1、传递可变参数传统的c中,函数在调用时参数是通过值来传递的,这就是说函数的参数不具备返回值的能力。所以在传统的c中,如果需要函数的参数具有返回值的能力,往往是通过指针来实现的。比如,实现两整数变量值交换的c程序如下:void swapint(int *a,int *b){    int temp;    temp=*a;    *a=*b;    *b=temp;}使用引用机制后,以上程序的c++版本为:void swapint(int &a,int &b){    int temp;    temp=a;    a=b;    b=temp;}调用该函数的c++方法为:swapint(x,y); c++自动把x,y的地址作为参数传递给swapint函数。2、给函数传递大型对象当大型对象被传递给函数时,使用引用参数可使参数传递效率得到提高,因为引用并不产生对象的副本,也就是参数传递时,对象无须复制。3、引用返回值#include <iostream>using namespace std;int& fun(int& a){    a++;    return a;} //把a返回引用函数,也就是说这个fun()就是a的别名int main(){   int b=10;   fun(b); //同理,fun(b)就是b自增后的b的别名   fun(b)=15;//引用返回值可以作为左值   cout<<b<<endl;//b=15   return 0;}#include <iostream>using namespace std;int& fun(int a)//去掉&{    a++;    return a;} int main(){   int b=10;   fun(b);    fun(b)=15;//warning C4172: returning address of local variable or temporary   cout<<b<<endl;   //b=10   return 0;}#include <iostream>using namespace std;int fun(int& a)//去掉&{    a++;    return a;} int main(){   int b=10;   fun(b);    fun(b)=15;//error C2106: '=' : left operand must be l-value   cout<<b<<endl;   return 0;}4、常引用常引用声明方式:const 类型标识符&引用名=目标变量名;用这种方式声明的引用,不能通过引用对目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性。【例】:int a ;const int &ra=a;ra=1; //错误a=1; //正确引用型参数应该在能被定义为const的情况下,尽量定义为const 。回文数:"回文数"是一种正读倒读相同的数字。(如:1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88,99)#include<iostream>using namespace std;int main(){   long m,temp,n=0;   cin>>m;   temp=m;   while(temp)   {       n=n*10+temp%10;       temp=temp/10;   }   if(n==m)       cout<<"Yes"<<endl;   else       cout<<"No"<<endl;    return 0;}

如果超越了整形变量的限制,其值将为范围的另一端

#include<iostream>using namespace std;int main(){ unsigned int a=0; cout<<a-1<<endl; long long b=1; for(int i=0;i<32;++i)b*=2; cout<<b-1<<endl; return 0;}
#include<iostream>using namespace std;int main(){int a=100;cout<<oct;       //以八进制(octal)方式显示(第一位为0,第二位为1到7)cout<<a<<endl;cout<<dec;       //以十进制(decimal)方式显示(第一位为1到9)cout<<a<<endl;   cout<<hex;       //以十六进制(hexadecimal)方式显示(前两位为0x或0X)cout<<a<<endl;   return 0;}//诸如cout<<oct;只是修改cout显示整数的方式(整个程序中的显示方式,而不是临近的下一个)(默认是以十进制方式显示)//C++中只有输出八进制、十进制、十六进制的控制格式,没有二进制(binary)的。


0 0
原创粉丝点击