C++基础语法1

· · 个人记录

一、程序框架

#include<iostream>
using namespace std;
int main(){

    return 0;
} 

1.#include<iostream>//头文件

头文件在程序中起到的作用,可以理解为“完成某些任务需要携带相应的工具,而头文件就是装有工具的工具箱”。include是包含的意思,iostream即输入输出流,该头文件包含输入输出功能。

在之后的学习中,我们还会接触其他头文件。

2.using namespace std;//标准命名空间

C++的标准函数库被定义在标准命名空间 std 中,因此为了能够使用这些标准函数,我们就用这条语句来引用它。

标准命名空间在程序中起到的作用,可以理解为“防止命名冲突”,例如:1班有叫张三的,2班也有叫张三的,为了区分,我们就得说“1班张三……”、“2班张三……”,这样太累赘。如果先说“using namespace 1班”, 再说“张三……”,人家就知道指的是1班的张三了。

3.int main()//主函数

一个C++程序必须且只能有唯一的一个称为main的“主函数”,它是所有C++程序的运行的起始点。

main函数的内容由一对花括号{}括起来,称为函数体。函数体由左花括号开始,到右花括号结束,花括号总是成对使用的。

4.return 0//返回语句

return语句表明主函数main()执行结束,并返回一个值(本例中为0),这个值就是函数的返回值,这是在程序执行没有出现任何错误的情况下最常见的程序结束方式。

二、Hello World

#include<iostream>
using namespace std;
int main(){
    cout<<"Hello World"<<endl; 
    return 0;
} 

1.编译并运行程序

程序编写完成后,依此点击“运行”——“编译运行”,检查程序是否存在错误,如果没有错,则会弹出黑窗口,并显示结果。

2.程序功能

输出Hello World通常是学习编程所写的第一个程序,它所实现的功能为让计算机输出Hello World并换到下一行。

在上述程序中,cout是C++中的标准输出流,即将“Hello World”显示在计算机屏幕上;endl的作用是换行。

三、数据类型

你可能觉得输出“Hello world”这样的程序用处不大。

我们写了好几行代码,编译,运行,引入了一大堆术语,仅在屏幕显示了两个单词。但是编程作用并不仅限于这么简单的工作,为了能够进一步编写功能更丰富的程序,我们需要学会与数据打交道。

在现实生活中我们记录人的姓名用字符表示,记录人的年龄用整数表示,记录人的体重用实数表示,看来数据要分为不同的类型。

在C++中,int和long long都能够表示整数类型的数据,两者的区别在于,能够表示的数据范围,以及在计算机中所占内存空间不同。
long long能够表示的数据范围更大,且占计算机内存更多。
float和double都能够表示小数类型的数据,两者的区别在于,能够表示的数据范围、小数精度,以及在计算机中所占内存空间不同。
double能够表示的数据范围更大,能表示的小数更加精确,且占计算机内存更多。

在编写程序时,要根据具体要求,选择合适的数据类型。

四、变量与其声明

1.什么是变量?

程序都是在计算机内存中运行的,如果把计算机内存想象为一栋楼房,那么变量就是其中的一个个房间。

如下图是内存中一块区域的示意图,其中的 a、x、r 等分别表示一个变量,可以存放一个某种类型的数据。在程序运行的过程中,这些“房间”里的数据可能随时发生变化,因此我们称之为“变量”。

2.变量定义

人将各种事务、数据记在脑海中,而计算机则将各种数据记内存中,变量在程序中所起的作用就是“计算机中数据的存储位置”。

在使用变量之前,我们必须为它起一个名字,并且指明它的数据类型,这就是变量的定义。

变量名可以由字母、数字和下划线 ( _ )组成,如a、x、x2、x_2、student_name等。
但要注意区分字母的大小写,同样的字母,大写和小写代表不同的变量名,像 age、Age 和 AGE 分别表示的是不同的变量名。 

变量声明的语法格式为:数据类型 变量名

如果要定义多个同一类型的变量,可以将它们缩写在同一行中。

例如:

    int a;//定义一个整型变量a
    float b;//定义一个浮点型变量b
    char c,d;//定义两个字符型变量c、d 

五、C++输入与输出

1.输入语句

C++中的输入语句为cin语句,从键盘获取数据。

输入语句的语法格式为:cin>>变量1>>变量2>>......>>变量n;

例如:

    int a;//定义一个整型变量a
    float b;//定义一个浮点型变量b
    char c,d;//定义两个字符型变量c、d 
    cin>>a>>b>>c>>d;//依次输入变量a、b、c、d

2.输出语句

C++中的输出语句为cout语句,将结果输出到计算机屏幕。输出语句有以下几种格式:

输出语句格式1:cout<<具体数值/具体数值运算;

    cout<<3;//输出3
    cout<<3+5;//依次输出3+5的计算结果

输出语句格式2:cout<<变量/变量之间的运算;

    int a;//定义整型变量a 
    a=5;
    cout<<a;//输出变量a的值5 
    cout<<a+5;//输出a+5的结果 

输出语句格式3:cout<<单个字符/多个字符(字符串);

    cout<<'a';//输出字符a 
    cout<<"Hello World";//输出字符串Hello World 

六、赋值语句

一个程序中往往要使用多种数据、多个变量,且它们之间还会有各种运算关系,例如,在求长方形面积的程序中,会用到长a、宽b、面积s这三个变量,并且通过公式s=a*b 进行计算。

在 s=a*b 中,我们可以这样理解变量之间的关系:

计算 a*b 的积,像这样的由变量和运算符号等所组成的式子,我们称之为表达式。

将等号“=”右边的值赋给左边的变量,即将 a*b 的积赋给了 s,我们称之为赋值语句。

赋值语句格式:

(1)变量=具体数值

(2)变量=具体数值运算

(3)变量=变量

(4)变量=变量之间的运算

    int a,b;
    a=1;//将1的值赋给a
    b=1+3;//将1+3的运算结果4赋给b
    b=a;//将a的值赋给b,b变成了1
    b=a+b;//将a+b的运算结果2赋给b

七、运算符

1.基础运算符

+、-、*、/

特别注意,在C++中,两个整数类型的数据进行除法运算,只能得到商的整数部分,例如:

    int a,b;
    a=4;
    b=3;
    cout<<a/b<<endl;//计算结果为1 

如果定义了两个整数类型的数据,但想计算出完整商,可以采用以下两种方法。

方法一:数据类型自动转换

    int  a,b;
    a=4;
    b=3;
    cout<<a*1.0/b<<endl;//计算结果为1.33333

方法二:强制类型转换

    int  a,b;
    a=4;
    b=3;
    cout<<(double)a/b<<endl;//计算结果为1.33333

2.新运算符

(1)% 求余数

    int a,b,c;
    a=4;
    b=3;
    c=a%b;
    //c的计算结果为a除以b的余数1 

(2)++ 自增运算符

(3)-- 自减运算符

    int a,b;
    a=4;
    b=3;
    a++;
    b--;
    //a++之后的结果为5,b--之后的结果2 

八、C语言输入与输出

C语言和C++都是计算机编程语言,你可以将C++语言理解为C语言的plus版本,那么我们为什么还要学习C语言的输入与输出呢?主要有两个方面的原因:

(1)运行速度更快; (2)C语言在格式控制输出方面更方便。

1.头文件

#include<cstdio>

2.格式控制符

不同的数据类型对应不同的格式控制符,下表为常见数据类型所对应的格式控制符。在C语言的输入和输出语句中,都要用到格式控制符,切记数据类型要与格式控制符一致。

3.printf输出语句

(1)基本格式

printf(格式控制,输出列表);

格式控制:双引号内是与变量顺序对应的格式控制符,以及其他需要输出的符号。

地址列表:变量顺序一定和前面格式控制符对应。

例如

    int a;
    long long b;
    float c;
    double d;
    char c;
    cin>>a>>b>>c>>d>>e;
    printf("%d%lld%f%lf%c",a,b,c,d,e);

上述代码表示分别定义了整型变量a、长整型变量b、单精度浮点型变量c、双精度浮点型变量d、字符型变量e,并将它们按照顺序输入、输出。

(2)输出时数与数之间以空格隔开

在输出语句的格式控制部分单个格式控制符之间加上空格,例如

    int a;
    long long b;
    float c;
    double d;
    char c;
    cin>>a>>b>>c>>d>>e;
    printf("%d% lld %f %lf %c",a,b,c,d,e);

(3)输出时每个数据占一行

在输出语句的格式控制部分单个格式控制符之间加上’\n’,例如

    int a;
    long long b;
    float c;
    double d;
    char c;
    cin>>a>>b>>c>>d>>e;
    printf("%d%\nlld\n%f\n%lf\n%c",a,b,c,d,e);

(4)输出浮点数时保留指定小数位数

在输出语句的格式控制部分加小数点和指定数字,例如

    double c;
    c=3.1415926;
    printf("%.2lf",c);//将3.1415926保留两位小数输出

(5)输出时数据占指定宽度

在输出语句的格式控制部分加指定数字,例如

    int a,b,c;
    a=13;
    b=159;
    c=1000;
    printf("%5d %5d %5d",a,b,c);//a、b、c在输出时占5各字符宽度

4.scanf输入语句

(1)基本格式

    scanf(格式控制,地址列表);

格式控制:双引号内是变量输入顺序对应的格式控制符;

地址列表:&为取地址符,“&变量名”表示某个变量的地址,顺序一定和前面对应

例如

    int a;
    long long b;
    float c;
    double d;
    char c;
    scanf("%d%lld%f%lf%c",&a,&b,&c,&d,&e);
    printf("%d% lld %f %lf %c",a,b,c,d,e);

九、练习题

基础语法之输入输出练习

1.反向输出一个三位数题解

在本题中,需要将该三位数个位、十位、百位上的数字依次求出来,并且按照个位、十位、百位的顺序输出。

例如输入的三位数n=123,则反向输出的结果为321。

求个位数字a=n%10

求十位数字b=n/10%10

求百位数字c=n/100

2.大象喝水题解

本题需要先将小圆桶的体积求出来,然后再求20升水需要多少桶。

本题用到了一个新的函数,向上取整函数ceil(x),它的作用是取大于等于x的最小整数,是一个数学函数,需要包含头文件#include<cmath>。

例如:ceil(3.14)的结果为4,ceil(3)的结果为3。

与ceil(x)函数具有类似作用的是向下取整函数floor(x),它的作用是取小于等于x的最大整数。

例如:floor(3.14)的结果为3,floor(3)的结果为3。