Z1_上_1_输出与变量

一、程序的主体框架

示例

请将下列程序输入,并且按下“运行”,看一下会发生什么?

# include <iostream>
using namespace std;
 
int main ()
{
  cout << "Hello world!"; //此行控制输出Hello World !
  return 0;
}

这是一个非常经典的程序,我们逐一认识一下其中每个部分及其作用。

(1)“#include < iostream>”这个部分称为头文件

头文件可以理解为是一个工具包,当我们需要使用具体的工具时,就需要提前告诉计算机,我们需要调用相应的工具包。

iostream,i是in的简写,表示输入;o是out的简写,表示输出;stream表示流;所以这个头文件表示是输入输出流,其包含的工具我们用得比较多的就是cin和cout。

(2)using namespace std; 这个部分称为名空间

因为程序内部有很多名空间,有些词可能会出现重复,如果不加以说明,计算器就不知道我们所说的到底是哪个名空间,然后就会报错。

【试】尝试删掉这句话,看看会发生什么?

程序会报错,提示cout有误,可以在cout前面加上std::,也能达到相同的目的。

但此时每个特殊名词都需要加上这个前缀,不是很方便,所以还是推荐在最开始直接写上using namespace std;这句话。

(3)int main () {} 这个部分称为主函数,是整个程序的主体。

第一个词int表示程序的返回结果的数据类型,这个我们暂时不用深究,主函数一般都是int,并且在程序内部一般会跟一个return 0;匹配,看作固定搭配即可。

易错点:main单词拼错,括号忘记打。

大括号内部就是程序的代码语句了,也就是计算机执行的各项指令。

不同的语句使用分号分割,千万不要忘记打分号!

cout << " Hello world !";就表示计算机应该输出" Hello world !"这句话。

(4)后面的//此行控制输出Hello World !是注释,这个部分不是给计算机读的,而是给人看的。目的是为了方便自己或者其他人理解代码的含义,特别是在一些复杂的代码中,恰当的代码是很有必要的。

那如果写的代码非常长,需要换行怎么办呢?

此时可以可以使用/*   */的组合来写代码。

#include <iostream>
using namespace std;

int main ()
{
    cout << " Hello world !"; /*此行控制输出Hello World !
    这行只是一个单纯的注释,
    这行也是*/
    return 0;
}

 

【例】查错:代码模块

 

【分析】

头文件少写了一个“#”;文件名拼写错误,应该是iostream。

namespace拼写错误,应该是namespace;std后面没写分号。

主函数名称写错,是main,后面有一对括号。

主函数主体花括号没有成对,最后要补一个花括号。

输出的字符串中h和w要大写,感叹号后不用空格;换行符是endl;

分号使用的是中文分号,要切换成英文分号。

return 0后面分号没写。

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}
点击查看

 

二、cout语句

cout语句的一般格式为:

cout << 项目1 << 项目2 << …… <<项目n;

(1)字符串输出

如果项目加了双引号,那么程序就会把双印号内部的内容输出。

【试一试】如果输出的语句为:cout << "Hello" << "World";输出结果是什么?

如果希望输出的语句换行,那么需要使用endl。

cout << 项目1 << endl;

cout << 项目2 << endl;

【例】香蕉之歌

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    cout << "ba ba ba ba ba na na" << endl;
    cout << "ba ba ba ba ba na na" << endl;
    cout << "bananaaaaaaah!" << endl;
    return 0;
}
点击查看

当然,只用一个cout也能实现这个目的,如下所示。

#include <iostream>
using namespace std;

int main()
{
    cout << "ba ba ba ba ba na na" << endl  << "ba ba ba ba ba na na" << endl << "bananaaaaaaah!" << endl;
    return 0;
}
点击查看

但是从阅读美观性来说,一般选择上面那个,因为它会更符合人类的阅读习惯。

 

(2)表达式输出

如果项目本身是个表达式,那么cout会直接输出表达式的计算结果。

C++语言的基本算术符号主要有5种:加(+),减(-),乘(*),除(/),模(%)。

前4个和数学的算术符号基本一致,第5个其实就是取余数,比如14÷5=2……4,那么14%5=4。

示例

运行下列程序,体会编程算术运算符和数学运算符的联系与区别。

#include <iostream>
using namespace std;

int main ()
{
    cout << 7 + 2 << endl;
    cout << 7 - 2 << endl;
    cout << 7 * 2 << endl;
    cout << 7 / 2 << endl;
    cout << 7 % 2 << endl;
    return 0;
}

可以注意到,第4个运算符的结果不是我们预想中的3.5,而是3。

原因在于,如果被除数和除数都是整数,那么“/”其实是一个取商符号。

那么如果想输出实际的小数结果应该怎么办呢?

此时只要把被除数或者除数写成小数的形式,比如7.0/2或7/2.0,那么结果都是正常的3.5。

 

这些运算符的运算顺序和数学一致:先乘除模,后加减,有括号先算括号内的

【例】算术运算式

 

【分析】

将×换成*,将÷换成/。注意,程序语言中没有中括号,全都是小括号。

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    cout << 123 * 3145 - 2015 / 5 << endl;
    cout << 1.23 * 4.34 / 2.5 - 0.1234 << endl;
    cout << (2348 * (1345 + 114) - 116) / 8 << endl;
    cout << 123456789 % 123 << endl;
    return 0;
}
点击查看

 

【例】单位转换

【分析】

8000÷60=130……200,130÷60=2……10。

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    cout << 8000 / 3600 << ' ' << 8000 / 60 % 60 << ' ' << 8000 % 60 << endl;
    return 0;
}
点击查看

 

三、变量与赋值

如果一个量有不同的值,或者有不同的变化,此时我们需要一个“容器”来储存这个变化的量,这个量就叫做变量

不同的数据所使用的储存空间是不一样的,那么所需要使用的“容器”大小也不相同,所以在使用变量之前,需要声明变量的数据类型

 

布尔型其实就是真假型的意思,0为假,1为真,这个后续学习分支结构的时候再细说。

字符型是用来表示字母和符号的。

在数据计算阶段,我们常用的是后面几种。初级阶段,暂时可以按照下面这个规则来理解:

如果是整数,那么就用int,如果是个很大的整数,那么就得用long long。

如果是小数,低精度用float,高精度用double,但一般直接用double。

 

变量命名规则:

(1)变量名中只能出现字母(A~Z,a~z)、数字(0~9)和下划线(_),反例:UsD$

(2)第一个字符不能是数字,反例:2PAC

(3)不能是C++关键字,反例:int。

(4)区分大小写,A和a是两个不同的变量。

 

将变量赋予一个具体的值的过程,称为赋值

示例

观察下列赋值程序,理解变量与赋值的关系。

#include <iostream>
using namespace std;

int main ()
{
    int a;
    a = 10;
    cout << a << endl;
    a = 20;
    cout << a << endl;
    int b = 30;
    a = b;
    cout << a << endl;
    int c = 40;
    c = a;
    cout << a << endl;
    return 0;
}

如果右边也是一个变量,那么会把这个变量的值传递给左边。区别于数学中的“=”,程序中的“=”表示的是赋值,即将“=”右边的值赋予左边的变量

赋值过程具有很强的“喜新厌旧”的特点,即新的值会把原来的值直接替换

 

任何变量都需要提前进行声明,告诉计算机这个变量的类型和大小。

变量的声明和赋值可以同时进行,但是仅限一个变量的赋值,如果出现连等式的赋值,那么不能和声明同时进行,比如下面这种情况是不行的。

int a=b=c=0;

如果变量的赋值过程以自身为基础,那么可以进行简化。

比如a=a+2可以简写为a+=2,a-=2表示a=a-2。

示例

观察下列赋值程序,理解变量在自身基础上再赋值的特点。

#include <iostream>
using namespace std;

int main ()
{
    int a = 10;
    a += 1;
    cout << a << endl;
    a -= 2;
    cout << a << endl;
    a *= 3;
    cout << a << endl;
    a /= 4;
    cout << a << endl;
    a %= 5;
    cout << a << endl;
    a++;
    cout << a << endl;
    a--;
    cout << a << endl;
    return 0;
}

需要注意的是最后两个,a++是a+=1的简写,即a自增1;而a--是a自减1的意思。

自增和自减还有另外一种写法:++a和--b,它们和之前两个的区别在于赋值与计算的先后问题。

示例

观察下列程序,理解赋值与计算的先后关系。

#include <iostream>
using namespace std;

int main ()
{
    int a, b;
    a = 10;
    b = a++;
    cout << b << endl;
    b = ++a;
    cout << b << endl;
    b = a--;
    cout << b << endl;
    b = --a;
    cout << b << endl;
    return 0;
}

 

【例】查错:变量定义

【分析】

 $a变量定义不合法,不能出现特殊符号;

1b变量定义不合法,变量第1个字符不能是数字;

C0,Co,co变量定义不统一,要区分大小写,注意0和o的区别;

___变量定义不统一,第2个只有2个字符,应该统一为____;

int关键字不能定义为变量;

sum变量没有定义;

2=1b赋值过程错误,变量要写在左边。

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    int a, b, C, ___, in;
    a = 1;
    b = 2;
    C = 3;
    ___ = 4;
    in = 0;
     int sum = a + b + C + ___ + in;
    cout << sum <<endl;
    return 0;
}
点击查看

 

如果一个量在程序中需要反复调用,并且需要保持值恒定不变的话,那么可以定义一个常量

常量的定义格式为:int const a=2,或const int a=2。

 

四、cmath头文件与常用函数

1.精度与估算

需要需要对计算的结果进行近似取值,常用的函数有如下三个:

(1)floor(a),将浮点数a向下取整

(2)ceil(a),将浮点数a向上取整

(3)round(a),将浮点数a四舍五入取整

【思考】如果希望将结果四舍五入保留1位小数应该怎么办?

答案:先乘10,然后round取整,然后结果再除以10。

【例】取整

 

【参考代码】

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double a = 314.15926;
    cout << ceil(a) << endl;
    cout << floor(a) << endl;
    cout << round(a) << endl;
    cout << round(a * 100) / 100 << endl;
    return 0;
}
点击查看

 

【练】杯子的数量

【分析】

用12857.63÷214,最后的结果要用ceil函数向上取整。

【参考代码】

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    cout << ceil(12857.63 / 214) << endl;
    return 0;
}
点击查看

 

2.次方与开方

x的y次方,即xy,在C++语言中表示为pow(x,y),比如a的3次方,可以表示为pow(a,3)。

如果想对x进行开方,即,在C++语言中表示为sqrt(x)。

 

【选】次方与开方

 

【参考代码】

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    cout << pow(2, 16) << endl;
    cout << sqrt(1522756) << endl;
    return 0;
}
点击查看

 

【选】公式转换

 

【分析】

2x要写成2*x

【参考代码】

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double a, x, y;
    x = 1.2;
    y = 1.3;
    a = (2*x+pow(y,3))/(pow(x,2)+3*y);
    cout << a << endl;
    return 0;
}
点击查看

 


 

课后测

【1】输出“Hello World!”

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    cout << "Hello World!" << endl;
    cout << "Hello World!" << endl;
    return 0;
}
点击查看

 

【2】三角形面积

【分析】

23×51÷2,结果是小数,注意将数据写成小数的形式。

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    cout << 23.0 * 51 / 2;
    return 0;
}
点击查看

 


 

【练】静夜思

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    cout << "床前明月光" << endl;
    cout << "疑是地上霜" << endl;
    cout << "举头望明月" << endl;
    cout << "低头思故乡" << endl;
    return 0;
}
点击查看

 

【练】字符爱心

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    cout << " ** ** " << endl;
    cout << "*******" << endl;
    cout << "*******" << endl;
    cout << " ***** " << endl;
    cout << "  ***  " << endl;
    cout << "   *   " << endl;
    return 0;
}
点击查看

 

【练】数值运算

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    cout << 123321 * 456 + 5678910 << endl;
    cout << 245645345 / 1233 << endl;
    cout << 245645345 % 1233 << endl;
    cout << 11 * 12 + 12 * 13 + 13 * 14 + 14 * 15 + 15 * 16 << endl;
    cout << 1.23 * 5.67 << endl;
    return 0;
}
View Code

 

【练】铺地砖

【分析】

注意90÷4÷3结果是小数,需要把90写成90.0。

【参考代码】

#include <iostream>
using namespace std;

int main()
{
    cout << 90.0 / 4 / 3 * 5 * 6 << endl;
    return 0;
}
View Code

 

【练】聚餐

【分析】

结果要向上取整,要使用ceil函数。

n和m都是整数,要保证结果是小数,需要把n*1.0。

本题需要使用到cin语句,建议学完第二讲后再做。

【参考代码】

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int n, m;
    cin >> n >> m;
    cout << ceil(n * 1.0 / m);
    return 0;
}
View Code

 

posted @ 2022-01-12 16:59  CS_XES_4  阅读(420)  评论(0)    收藏  举报