essential C++读书笔记

//p41练习2.1
//用户输入位置值,输出第一个到第pos位置的值
#include "stdafx.h"
using namespace std;
 // fibon_elem()的前置声明(forward declaration)
 // 让编译器知道函数的存在
 //声明中可以不写出参数名称,只写出参数类型
bool fibon_elem(int,int &);

int main()
{
	int pos;
	
	//可以一直输入位置值,每次询问用户是否要继续尝试
	//用户希望停止为止
	bool user_rsy = true;
	while(user_rsy)
	{
		cout << "please enter a position:";
	    cin >> pos;//输入位置pos
		int elem;
		if( fibon_elem( pos,elem )) //fibon_elem(pos,elem)返回一个bool值 true 或者 false
		cout << "element # " << pos
		     << " is " << elem << endl;
		else cout << "sorry, could not caculate element #"
		          << pos << endl;
		cout << "Would you like to try again?(Y/N)";
	    char rsy;
	    cin >> rsy;
		if ((rsy == 'N')||(rsy == 'n'))
			user_rsy = false;
	}
}
//P38程序
//fibon_elem是一个函数
//输入数列位置,输出这个位置的数字
//elem可以看成是计算出的下一元素值
//如果写成参数是位置,返回值是元素值,当输入的值不合理时,返回的值很难操作
//所以改写成两个参数,返回布尔型
//调用函数的时候可以输出参数
#include  "stdafx.h"
bool fibon_elem(int pos, int &elem) //返回布尔型   //为什么用& reference
{
	//检测位置值是否合理
	if (pos <= 0 || pos >1024 )//如果不合理
	{ elem = 0; return false;}

	//如果合理 elem = 1
	elem = 1;
	int n_1 = 1,n_2 = 1;//位置值为1和2时,elem的值为1

	//当输入了pos的值,3 <= pos 下面循环开始执行
	//如果输入pos = 2,则下面循环不执行直接到return true; 
	for (int ix = 3;ix <=pos; ++ix)
	{
		elem = n_1 + n_2;
		n_1 = n_2;n_2 = elem;
	}
	return true;
}

你可能感兴趣的:(C++,essential,C++)