C++面向对象程序设计 笔记整理(1)——编程基础
字符与字符串
大小写转换
void lower_or_upper_case(char c)
{
int transferred_c;
if ( ('a'<=c) && (c<='z') )
{
transferred_c = (int)c - ( (int)'b' - (int)'B' );
cout << "The lower/upper case is: " << (char)transferred_c << endl;
}
else if ( ('A'<=c) && (c<='Z') )
{
transferred_c = (int)c + ( (int)'a' - (int)'A' );
cout << "The lower/upper case is: " << (char)transferred_c << endl;
}
else
cout << "您输入的不是字母" << endl;
}
int main()
{
char letter;
cout << "Please enter a letter: ";
cin >> letter;
lower_or_upper_case(letter);
char c = 'A';
cout << c << endl;
}
程序的控制结构
例题0: 鸡兔同笼
鸡、兔共有98个头,386只脚,求鸡、兔各多少只。 使用遍历方法求所有解
int main()
{
for (int i = 0; i <= 98; i++) // i: chicken
{
int j = 98 - i; // j: rabbit
if ((2*i + 4*j) == 386)
{
cout << "chicken: " << i << " rabbit: " << j << endl;
}
}
return 0;
}
例题1:
π/4 = 1 - 1/3 + 1/5 - 1/7 + ... 直到最后一项的绝对值小于10^-6为止
int main()
{
double sum = 0;
double temp = 1;
int i = 1;
while (abs(temp) >= 1e-6)
{
temp = pow(-1.0, i+1) / (2*i -1);
cout << fixed << setprecision(0) << pow(-1.0, i+1) << "/" << (2*i -1) << ": ";
cout << scientific << setprecision(1) << temp << endl;
i++;
sum += temp;
}
cout << endl;
cout << sum << endl;
system("pause");
return 0;
}
例题2: 阶乘数列求和
S = 1!+2!+...+n!
int factorial(int k) //阶乘函数
{
int product = 1;
for (int i = 1; i <=k; i++)
product *= i;
return product;
}
int main()
{
int sum = 0, n;
cout << "please enter a number: ";
cin >> n;
for (int i=1; i<=n; i++)
{
sum += factorial(i);
}
cout << "The result is: " << sum << endl;
return 0;
}
例题3: 菲波那切数列
S = 1+1+2+3+5+8+13+21+...
int sum_fibonacci_sequence()
{
static int a = 0, b = 1;
int t = a;
a = b;
b = t + b;
//cout << a << " " << b << endl;
return a;
}
int main()
{
int result = 0, n;
cout << "please enter n: ";
cin >> n;
for (int i = 1; i <= n; i++)
{
int an = sum_fibonacci_sequence();
result += an;
cout << "an is: " << an << endl;
}
cout << result << endl;
return 0;
}
指针
使用指针动态生成数组
int length;
cout << "input x length: ";
cin >> length;
int* a;
a = new int[length];
a[0] = 25;
cout << a[0] << endl;
delete[] a; // 释放内存
递归
使用递归来计算阶乘
long factorial(long n)
{
cout << "cur n == " << n << endl;
if (n < 0)
return -1;
else if (n == 0 || n == 1) // 函数终止条件, 小事化了
return 1;
else
{
long ret;
ret = n * factorial(n-1);
cout << "cur ret == " << ret << endl;
return ret; // 大事化小, 调用自身进行递归, 想办法把表达式变成 f(n) = g( f(n-1) , n )
}
}
常用模块
向量 vector
#include <vector>
int main()
{
vector<int> x;
x.push_back(1);
x.push_back(2);
int y = 345;
x.push_back(y); // 动态插入成员
cout << x.size() << endl; // 获取长度
x.pop_back(); // 删除最后一个成员
for (int k=0; k<x.size(); k++)
{
cout << x[k] << endl;
}
return 0;
}
赞 (0)
