数据结构复习笔记:C++程序设计(一)
来源:互联网 发布:淘宝子账号有什么权限 编辑:程序博客网 时间:2024/06/05 22:49
1、如果在windows下使用命令行编译C++?
为了简化程序编写编译运行流程,决定不使用电脑里的Visual Studio 2010,而是借用里面的cl.exe使用命令行编译。方法如下:
(1)将cl.exe所在的目录加入环境变量,我这里是:D:\Program Files\Microsoft Visual Studio 10.0\VC\bin;
(2)在D:\Program Files\Microsoft Visual Studio 10.0\VC\bin目录下创建一个run.bat的文件用于运行cmd并配置准备环境,内容:@cmd /k vcvars32.bat;
(3)运行里面或者命令行下输入run,启动带有VS tools开发环境的命令行界面,进入代码目录,开始使用cl命令:cl /EHsc test1.cpp;
2、使用模版函数简化仅参数类型不同函数的编写:
// 传值参数#include <iostream>using namespace std;template<class T>T add(T num1, T num2) { return num1 + num2;}int main(int argc, char* argv[]) { int intNum = add(3, 5); cout << intNum << endl; // 8 float floatNum = add(3.1f, 5.0f); // 8.1 cout << floatNum << endl; return 0;}
// 引用参数#include <iostream>using namespace std;template<class T>T add(T &num1, T &num2) { num1 += 10, num2 += 10; return num1 + num2;}int main(int argc, char* argv[]) { int num1 = 5, num2 = 8; add(num1, num2); cout << "num1 = " << num1 << endl; // num1 = 15 cout << "num2 = " << num2 << endl; // num2 = 18 return 0;}
// 常量参数#include <iostream>using namespace std;template<class T>T add(const T& num1, const T& num2) { // num1 += 10, num2 += 10; // 错误,不能给常量赋值 return num1 + num2;}int main(int argc, char* argv[]) { int num1 = 5, num2 = 8; add(num1, num2); cout << "num1 = " << num1 << endl; // num1 = 15 cout << "num2 = " << num2 << endl; // num2 = 18 return 0;}
上面的函数add的两个参数类型必需相同,比如add(3, 5.0)会报错,第一个参数是int型,第二个参数是double型,这两个类型不同,不符合单个T的定义,不过可以采用下面的方法解决:
#include <iostream>using namespace std;template<class Ta, class Tb>Tb add(const Ta& num1, const Tb& num2) { return num1 + num2;}int main(int argc, char* argv[]) { int num1 = 5; float num2 = 8.0f; float num = add(num1, num2); cout << num << endl; // 13 return 0;}
// 返回引用/常量应用#include <iostream>using namespace std;template<class T>const T& add(const T num1,T& num2) { num2 += num1; return num2;}int main(int argc, char* argv[]) { int num1 = 5, num2 = 8; cout << "add(num1, num2) = " << add(num1, num2) << endl; cout << "num2 = " << num2 << endl; // num2 = 13 // add(num1, num2)++; // 错误,不能给常量赋值 return 0;}
3、几种常见的递归函数编写:
(1)斐波那契数列(兔子数列,黄金分割数列);
(2)大衍数列(来源于《乾坤谱》中对易传“大衍之数五十”的推论);
(3)阶乘;
// 递归#include <iostream>using namespace std;int fabonacci(int n);int dayan(int n);int factorial(int n);int main(int argc, char* argv[]) { for(int i=1; i<13; i++) { cout << fabonacci(i) << endl; } cout << "=====================" << endl; for(int i=1; i<13; i++) { cout << dayan(i) << endl; } cout << "=====================" << endl; cout << factorial(12) << endl; cout << "=====================" << endl; return 0;}int fabonacci(int n) { if(n == 1) { return 0; } if(n == 2) { return 1; } return fabonacci(n-1) + fabonacci(n-2);}int dayan(int n) { if(n % 2 == 1) { return (n*n-1)/2; } return n*n/2;}int factorial(int n) { if(n <= 1) { return 1; } return n * factorial(n-1);}
阅读全文
0 0
- 数据结构复习笔记:C++程序设计(一)
- 数据结构复习笔记:C++程序设计(二)
- 数据结构复习笔记(一)
- 数据结构复习笔记(一)
- c语言数据结构复习(一)
- C语言复习笔记(一)
- windows程序设计复习(一)
- c语言复习笔记一
- 数据结构复习笔记(二)
- Objective-C 2.0 学习笔记一(Objective-C 程序设计)
- C语言基础复习笔记(一)指针
- C语言之程序设计基础(笔记一)
- C总结复习(一)
- C语言复习(一)
- C语言复习(一)
- 第二轮复习一(数据结构)
- 数据结构复习一
- Hibernate复习笔记(一)
- dongle crack 加密狗破解复制模拟
- ps
- faster-rcnn原理及相应概念解释
- 洛谷 P2486 [SDOI2011]染色
- 黎活明给程序员的忠告
- 数据结构复习笔记:C++程序设计(一)
- ios hook 小试牛刀(一)
- 【PDF下载】大数据峰会之云上大数据,零售新思维
- python_OpenCV_按键截取图片——按键
- Java中的多线程
- ue4 2游戏构架相关
- ListView之checkbox错位问题解决
- 压力测试工具
- jquery mobile中设定content高度的两种方法