大一学过C语言,不过我用的倒是很少。现在因为选修有C++这门课,所以会在这部分下下功夫,而且我对于Qt开发很感兴趣。
目录
本章基础目标
熟悉C++语言的语句、语法组成和基本编程方式,可以解决一般的算法问题。
C++相对于C有什么不同?
1、两者强调的内容不同
程序=数据+算法
C语言强调编程的算法,而面向对象(OOP)强调数据。
2、理念不同
C语言试图使问题满足语言过程性的问题,C++试图让语言来满足问题的要求。
3、编程特点不同
C语言采用结构化编程(比如for循环、while循环),以及自上而下的设计。
C++是面向对象编程,将数据于方法合并在一起的类,并且具有继承与派生,多态的特性。
C++相对于C语言的明显变化
在基础部分,我觉得主要是头文件的引用和输入输出函数的改变。
头文件:
C语言 | C++ |
---|---|
stdio.h | iostream |
math.h | cmath |
string.h | cstring |
stdlib.h | cstdlib |
...... | ...... |
输入:printf------>cout
输出:scanf------>cin
Hello C++
第一个C++程序
#include <iostream>
using namespace std;
int main(void)
{
cout << "Hello!Welcome to C++!" << endl;
return 0;
}
注释
便于自己和他人阅读理解,不会被程序执行。
// 单行
/*多行注释*/
关键字
C++ 的关键字(保留字)完整介绍 | 菜鸟教程 (runoob.com)
标识符
由程序员定义的单词
规则如下:
- 以大写字母、小写字母或下画线(_)开始
- 可以由以大写字母、小写字母、下画线(_)或0~9组成
- 大写字母和小写字母意义不同
- 不能是C++语言关键字或操作符
变量
对一段指定的内存空间起名,方便操作这段内存。
int a = 1;
\nnn 八进制形式
\xnnn 十六进制形式
常量
用于记录程序中不可更改的数据。
define 定义
#define 常量名 常量值
#define a 12
const 修饰
const 数据类型 常量名 = 常数值
const int a=10;
操作符(运算符)
用于实现各种运算的符合,例如:+、-、*、/、%等。C++语言中也提供了一些操作符的替代词,比如and、andeq、bitand、bitor、not、or、xor、xor……
基本数据类型
关系运算、逻辑运算、条件运算
- ==、!=优先级相同,但低于<、<=、>、>=
- !(非)----->&&(与)----->||(或)
- 【表达式1?表达式2:表达式3】,表达式1必须是bool类型,式2和式3可以是任何类型。如式1为Ture,表达式2为最终结果;否则就是式3。
sizeof运算符
sizeof运算符用于计算某种类型的对象在内存中所占的字节数。
位运算
1)按位与(&)
按位与操作的作用是将两个操作数对应的每一位分别进行逻辑与操作。
2)按位或(|)
按位与操作的作用是将两个操作数对应的每一位分别进行逻辑或操作。
3)按位异或(^)
按位与操作的作用是将两个操作数对应的每一位分别进行异或。规则为对应位相同,则该位的运算结果为0;否则为1。
4)按位取反(~)
单目运算符,对一个二进制数的每一位取反。
5)移位
左移运算符(<<),右移运算符(>>)。左移按照指定的位数将一个数的二进制值向左移动,低位补0,高位舍弃;左移按照指定的位数将一个数的二进制值向左移动,低位舍弃。如果是无符号运算数则高位补0,如果是有符号数,则高位补符号位或补0。
算法的基本控制结构
用if语句实现选择结构
输入一个年份,判断是否是闰年
#include <iostream>
#define a 12
using namespace std;
int main(void)
{
int year;
bool isLeapYear;
cout << "Enter the year:";
cin >> year;
isLeapYear = (( year%4==0 && year%100!=0 )||(year%400==0));
if (isLeapYear)
cout << year << " is a leap year" << endl;
else
cout << year << " is not a leap year" << endl;
return 0;
}
switch语句
输入0到6的整数,转换成星期输出
#include <iostream>
#define a 12
using namespace std;
int main(void)
{
int day;
cin >> day;
switch (day) {
case 0:
cout << "Sunday" << endl;
break;
case 1:
cout << "Monday" << endl;
break;
case 2:
cout << "Tuesday" << endl;
break;
case 3:
cout << "Wednesday" << endl;
break;
case 4:
cout << "Thursday" << endl;
break;
case 5:
cout << "Friday" << endl;
break;
case 6:
cout << "Saturday" << endl;
break;
default:
cout << "Day out of range Sunday...Saturday" << endl;
break;
}
return 0;
}
循环结构
1、while循环
求自然数1~10的和
#include <iostream>
using namespace std;
int main(void)
{
int i = 1, sum = 0;
while(i<=10){
sum += i;
i++;
}
cout << "sum=" <<sum<< endl;
return 0;
}
2、do...while语句
输入一个整数,将各位数字反转后输出
#include <iostream>
using namespace std;
int main(void)
{
int n, right_digit;
cout << "Enter the number:";
cin >> n;
cout << "The number in reverse order is ";
do {
right_digit = n % 10;
cout << right_digit;
n /= 10;
} while (n != 0);
cout<< endl;
return 0;
}
3、for语句
输入一个整数,求出它的所有因子
#include <iostream>
using namespace std;
int main(void)
{
int n;
cout << "Enter a positive integer: ";
cin >> n;
cout << "Number " << n << " Factors ";
for (int k = 1; k <= n; k++)
if (n % k == 0)
cout << k << " ";
cout<< endl;
return 0;
}
除此之外,还有循环结构与选择结构相互嵌套,这个部分不多讲解。
其他控制语句
1、break
出现在switch语句或循环体结构中,不宜用在别处。
2、continue
可以出现在循环体结构中,结束本轮的循环,开始下一轮判断是否继续执行下一次循环。
3、goto
使程序的执行流程跳转到语句标号所指定的语句,goto语句会破坏程序的结构,应当少用或不用。
总结
我打算是将函数以及多态继承分开写,毕竟这对于我来说是一份学习笔记,最重要的还是快速复习到知识点,虽然我看到很多的C++教程都是一文到底,但我觉得这样并不好,内容覆盖广泛了,但细微之处就比较的省略了,我更希望的是它能像一本英语词典那样,在对某个单词不熟悉时,方便查找。这也是个人的一个风格,字数多了我就觉得文章应该像1、2、3……那样排列下去。