c++笔记(2):函数参数、函数调用、汉诺塔

1.

求最大公约数:大数对小数求余(a%b),小数对余数求余(循环此步),直至余数为0,最大公约数为余数为0时的b。


2.

输入二进制数字串,转换成十进制正整数:
do 		                  //略去前导符号,直至ch存放第一个合法数字
{ 
    cin.get(ch) ; 
}while( ch !='0' && ch != '1' ) ;
do	                         //循环,逐位转换
{ 
    Dec += ch - '0';		//把字符转换为数字,累加
    cin.get(ch);		//读入一位
    if ( ch=='0'||ch=='1' )	//如果是0或1
    {
         Dec *= 2 ;		//已经转换的数据左移一位
    }
}while( ch=='0'||ch== '1' );    //读入非0,非1字符时结束循环
cout << "Decimal = " << Dec << '\n'; 


3.

对输入做判断
while ( cin >> x )
“Ctrl-Z”向输入流插入结束符


4.

break语句
    无条件地结束switch语句,或循环语句,转向执行语句块的后续语句
continue语句 
    用于循环体中,终止当前一次循环


5.

goto语句:无条件转向语句,与标号语句配合使用,一般形式为: 
    goto  标号 ;
    标号 :  语句 ; 


6.

若函数的实际参数表达式之间有求值关联,同一个程序在不同编译器可能产生不同的运行结果。
实际参数求值的副作用:从右向左计算实参表(VC6.0)。(实际情况应消除这种副作用)


7.

指针参数:
const  int * p 约束形参对象,即不能修改*p的值
int  * const p 约束形参指针,不能修改指针常量


8.

引用实参:const int & rk(用const约束引用参数)
只有常量引用对应的实参可以是常量或表达式
非约束的引用参数对应的实参必须是对象名


9.

函数的返回值不能是局部变量的指针或引用。


10.

所有的循环结构都可以写成递归结构,反之不一定行


11.

函数调用时入栈操作:
      建立被调用函数的栈空间
      保护调用函数运行状态和返回地址
      传递参数
      控制权交给被调用函数
函数返回时出栈操作:
      返回值保存在临时空间
      恢复调用函数运行状态
      释放栈空间
      根据地址返回调用函数

// 输入一串字符,然后反序输出 
void  reverse ()
{  
    char  ch ;	// 局部量
    cin >> ch;
    if ( ch != '.' )
    {
        reverse() ;
    }
    cout << ch ;
}


12.

汉诺塔
void hanoi ( int n, char a,  char b,  char c )
{  
    if( n >= 1 )
    {  
        hanoi ( n-1,  a,  c,  b ) ;
        cout << a << " --> " << c << endl ;
        hanoi ( n-1,  b,  a,  c ) ;
     }
}
移动次数:2的n次方-1


13.

函数的调用
simple() ; // 名方式调用
(&simple)() ; // 地址方式调用
(*&simple)() ; // 间址调用
simple、&simple、*&simple都是函数的地址。


14.

用函数指针调用函数:
int  sum ( int  x ,  int  y )  {  return  x + y ;  }
int  ( * pf )  ( int ,   int ) ;


pf 是指针变量,存放函数的地址
sum 是函数的直接地址
pf 的值等于sum (等于 &sum )
&pf 不等于sum (不等于 &sum )


15.
typedef:存储类的关键字,为一种数据类型定义一个新名字
定义函数类型格式:    
typedef  类型  函数类型 ( 形式参数表 ;)


若有函数类型为:

double  ( double, double ) ;
或: typedef double  functionType  ( double, double ) ;
定义指向这类函数的指针变量:
double  ( * fp ) ( double, double ) ;
或: functionType  * fp1 ,  * fp2 ;


16.

附:C++语言的字符集是ASCII码的子集,有:

26个小写字母:
a b c d e f g h i j k l m n o p q r s t u v w x y z
26个大写字母:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
10个数字:
0 1 2 3 4 5 6 7 8 9
其他符号:
空格  !  ″ #  %  &  ′(  )  *  +  -  /  :  ;  <  =  >  ?  [  \  ]  ^  _  {  |  }  ~  .
 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值