1.C++程序的整体布局:
#include //""中不能有多余的空格
using nameplace std //此处c++特有,c没有。另一种写法是将上述两行写为 #include ,对应较老的版本。如果编译器要求这样的写法可以考虑
int main() //(接上一行)升级编译器。
{
<语句块>;
return 0;
}
c++的注释方式与c相同,对缩进的要求并不像python那样严格。好的缩进习惯可以提高程序的可读性,是应该养成的好习惯。
2.c++基础知识
a.变量和赋值 c++对大小写敏感
此部分与c类次,在此不赘述。在此提醒,变量名尽量起有意义的名称,这样有助于编程,编程时养成写注释的习惯。
b.输入与输出
%1.使用cout进行输出:
eg:cout << number_of_stu << "bedrooms\n"; //可以输出number_of_stu变量的值以及后面的引号中的内容。
等价于:
cout << number_of_stu;
cout << "bedrooms\n";
cout语句中也可以包含表达式,表达式要用“()”括起来。
eg: cout << "the total cost is" << (price+tax);
如果cout语句过长可以变为两行。
eg:cout << "there is" << number_of_bed
<< "beds and" << number_of_table << "tables in the room\n";
%2.转义序列:
使用\来告诉编译器:\后面的符号需要转义,或者消除转义字符默认的意义,只是单纯的显示字符。
常用的转义字符:/n 换行符(endl含义相同)
/t 制表符(跳跃空格)
编程时可以考虑以"/n"来结束,避免下一个程序的输出与这个程序混在一起。
%3.格式化带小数点的数字:
在程序中加入下列指令:
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
就可以输出2位小数点的小数。
%4.用cin进行输入:与cout用法类似:
eg:cout << "Please enter your age:\n";
cin >> age;
可以从键盘输入两个变量,用空格隔开:
eg:cin >> number >> size ;
c.数据类型和表达式
%1.short / int / long / float / double / long double / char 与c相似,不再赘述。
其中需要注意的是,char类型指的是键盘上的任意一个单字符。要用''来表示。'a'与"a"是不一样的,后者为string类,不能用char类型来表示。
编程时涉及到除法运算最好使用float型避免出错。
另外与c不相同的是,声明时可以采用两种方式。 int num=1; or int num(1);
%2 bool类型 只有ture或fales两个值,用于分支语句。
%3 string类简介:
想要使用string类,首先要包含string库:
#include
变量声明与赋值的方式与之前的类似:
string sex;
sex = "female";
这里允许这样的操作:
string day;
day="Monday"+"Tuseday";
得到的day的值为"MondayTuseday"
%4 在这里补充一下为常量命名的规则: 使用const关键字
eg:const int WINDOWS_NUMBER = 10; // 在程序中可以使用名字而不是数字。虽然并未要求常量的命名必须大写,但这已经成为大部分程序员的习惯。
d.简单的控制流程
%1.一个简单的分支机制:
if(Boolean_Expression) //涉及到"&&","||"的使用时注意括号的使用。注意"="与"=="的应用差别。
{
Yes_Statement_1;
Yes_Statement_2;
...
}
else
{
No_Statement_1;
No_Statement_2;
...
}此部分与c语言基本相同。
%2.简单的循环机制
while循环:
while(Boolean_Expression) //当Boolean_Expression的值为false时结束循环,注意这里没有分号。
{
statement_1;
statement_2;
...
}
do_while 循环: 适用于循环体一定要执行一次的场合,不太常见。
do
{
statement_1;
statement_2;
...
}while(Boolean_Expression); //注意此处的分号
%3.递增,递减操作符
n++,n--,++n,--n与c类似。值得注意的是在c++中,它们只能用于单个变量,(x+y)++这种表述是违法的。
%4.多路分支: 多路分支需要注意的就是"{}"的使用,保证if-else的配对正确。
在c++中,{}中的语句被称为一个语句块,块中声明的变量是局部变量。
%5.多路if-else语句:
if(Boolean_Expression_1)
statement_1;
else if (Boolean_Expression_2)
statement_2;
else if (Boolean_Expression_3)
statement_3;
...
else
statement_last;
%6.switch 语句:
switch(controller_expression)
{
case constant_1
statement_sequence_1;
break; //不要忘记break的使用。
case constant_2
statement_sequence_2;
break;
...
default: //可有可无,最好加上可用于显示相关信息。
statement_sequence_last;
}
%7.for语句:
for(intialization_action;boolean_expression;update_action)
body_statement;
eg: for(i=100;i>0;i--) //此处不要加分号,加分号会使得for(i=100;i>0;i--)单独成为一个语句。
count << "there are" << i << "students left in this room\n";
注意使用break同样可以跳出循环。break只终止包含它的最内层循环。
使用到嵌套的循环时,同样需要注意内外层之间的关系。
3.过程抽象和返回一个值的函数:
a.预定义函数: 是指c++之前已有定义的函数,存放在相应的头文件中。使用时要声明包含这样的头文件。
eg:#include
#include
b.强制类型转换: 可以使用函数static_cast()函数将int型转换为double型,以保证相应计算的正确。
eg:candy_per_person=static_cast(total_candy_number)/_of_person;
c.自定义函数:
%1 函数的描述分为两个部分,分别是函数声明和函数定义。函数的声明放在靠前的位置,通常放在main函数之前。
eg: double total_cost (int number_of_basketball, double price_cost_signal); //注意此处的分号
其中形参与实参的问题与c一致。
%2 bool型返回值的函数
函数可以返回一个bool型的值,声明方式如下:
bool 函数名(参数表)
eg:bool app(int race);
函数体可以是这样的:
bool app(int race)
{
return (race>10);
}
注意调用函数时,实参的顺序不能发生错误。
%3 局部变量,全局常量和全局变量
将const int声明的常量放在程序的前端,则声明了全局常量,在任意一个函数中都可以使用。
将const去掉声明的就是全局变量,全局变量的应用容易导致错误,对于不是很有经验的编程者不建议使用。
局部变量是在函数内部定义的,只在函数内部有相应的意义。需要强调的一点是,传值调用形参是局部变量,函数内部对变量的直接操作不会影响函数外部的变量
的值。
%4 重载函数名称
c++允许为同一个函数名提供两个或者更多的定义,这表示可以在不同的情况下重用这些名称。为同一个函数名提供两个或者更多的定义,就称为重载函数名称。
c++的重载简单很多,只要按照一般的函数定义方式在定义一个函数就可以了。重载一个函数名时,两个函数声明的形参必须有所区别,这样编译器才能正确的找到
相应的函数。只用返回类型不一样是不能重载的。不要为两个不相关的函数重载。
4.所有子任务函数
a.void 函数
不返回值的函数称为void函数。
void函数声明: void Fuction_Name(Parameter_List);
b.传引用调用形参
使用传值调用形参,用于替换形参的是实参的值(而不是实参本身)。
使用一个传引用调用一个形参时,函数调用中的相应的实参必须是一个变量,用于替换形参的将是一个实参变量,是变量本身。
为了标记一个传引用调用形参,需要在函数声明和函数定义头中,在参数类型后加&。
eg: void get_input(double& f_variable)
{
using namespace std;
count << "please enter a number:\n";
cin >> f_variable ;
}
如果希望函数更改一个变量的值,就使用传引用调用,其余的均可以是用传值调用。
c.使用过程抽象
过程抽象的原则在于将函数写为一个黑盒子,使用者只需要知道他的使用条件和使用结果,不必对其内部的实现方式有所了解。
在为函数写注释的时候,分为前条件和后条件是一种好的手段。前条件的内容是使用函数的必要条件,而后条件可以写函数的运行结果。
d.测试和调试函数
可以编写程序一个一个函数的进行测试,这样能较好的定位错误。如果测试时需要另外的函数,而它还未编写或者还未经过测试,可以写一个stub函数占位:
eg:double price(int number,double cost) //this is a stub
{
return(9.99);
}
e.常规的调试技术
%1.坚决杜绝依靠直觉修改代码以期待改对的心态!!!
%2.定位错误对于调bug有很大的意义。可以战略性的插入cout函数来帮助确定bug的位置。
%3.assert宏
assert宏是确保在assert语句的位置预期条件为true的一条语句。如果条件不服,程序会报错并退出。
要使用assert宏首先要 #include
使用形式:assert(boolean_expression);
注:在#include 之前添加 #define NDEBUG 既可以禁用所有的assert宏。
大家有兴趣学习C/C++的可以私聊我或者关注微信公众号:C语言爱好者
原文链接:https://www.cnblogs.com/ustczd/p/4781235.html