分享

C 程序结构(下)

 长沙7喜 2019-11-01

在上一讲中,我们分析了一个基本C++程序的三个部分,并且用dev C++编写了第一个C++程序,然后编译运行。

1.  #include<iostream>  

2.    

3.  using namespace std;  

4.    

5.  int main(){  

6.      int a,b,c;  

7.      cin>>a>>b;  

8.      c=a+b;  

9.      cout<<c;    

10.}  

但是,我们在程序运行检测中,发现程序不能支持大整数的加法,也不能支持小数的加法,为什么呢?

数据类型

上述问题,跟数据类型有关系。数据类型是程序的基础,它告诉我们数据的意义以及我们能在数据上执行的操作。C++语言支持广泛的数据类型。它定义了几种基本内置类型(如字符、整型、浮点数等),同时也为程序员提供了自定义数据类型的机制。这里,我们先认识两种基本的类型:整型和浮点型。

整型

整型,其实也是整数,C++中用int来标识。与数学上整数的概念不同的地方,计算机中的整型是一个有限的概念,数学上的整数是一个无穷的概念,不存在一个最大的整数,但是在C++中,int所能表示的整数是有一个范围的,在-21474836482147483647之间,超过这个范围,就不是int所能表示的了。当然,在C++中,关于整型的标识符可不止int一个,还有shortlong long等。如果我们把整型比喻成一个物品类,比如衬衣,那么int就相当于衬衣中的中码,short就是小码,long long就是大码,当然还有加大码,不过现在这三个整型标识符就足够我们用了。记住,每个整型标识符(shortintlong long)的表示范围都是有限的。以下是关于整型更详细的范围介绍。

数据类型

定义标识符

占字节数

数值范围

数值范围

短整型

short [int]

2(16)

-3276832767

-215215-1

整型

[long] int

4(32)

-21474836482147483647

-231231-1

长整型

long [int]

4(32)

-21474836482147483647

-231231-1

超长整型

long long [int]

8(64)

-92233720368547758089223372036854775807

-263263-1

无符号整型

unsigned [int]

2(16)

065535

0216-1

无符号短整型

unsigned short [int]

2(16)

065535

0216-1

无符号长整型

unsigned long [int]

4(32)

04294967295

0232-1

无符号超长整型

unsigned long long

8(64)

018446744073709551615

0264-1

认识整型概念了,我们要让我们的程序支持更大整数的加法,可以很容易的实现,如下图所示。但是,尽管改成了大码的整型long long,它也是有一个范围限制的。

1.  #include<iostream>    

2.  using namespace std;    

3.  int main(){  

4.      long long a,b,c;    //这里int改成了long long

5.      cin>>a>>b;  

6.      c=a+b;  

7.      cout<<c;    

8.  }  

浮点型

浮点型是用来表示小数的数据类型,在C++中浮点型的标识符有floatdoublelong double,这三个类型也好比衣服界的小码、中码、大码,表示的数据范围不同。具体范围如下:

数据类型

定义标识符

数值范围

占字节数

有效位数

单精度实型

float

-3.4E-383.4E+38

4(32)

67

双精度实型

double

-1.7E+3081.7E+308

8(64)

1516

长双精度实型

long  double

-3.4E+49321.1E+4932

16(128)

1819

表中的数值范围用的是科学计数法,如3.4E+38是指3.4*1038

同理,认识浮点型后,我们也很容易将我们的程序改造成支持小数运算,方法如下:

1.  #include<iostream>    

2.  using namespace std;    

3.  int main(){  

4.      double a,b,c;    //这里将int类型改成了double类型

5.      cin>>a>>b;  

6.      c=a+b;  

7.      cout<<c;    

8.  }  

变量

其实数据类型,指的是一种规范,一种标准,好比我们说大码的衣服,指的是这件衣服领口的标准、袖长的标准,并没有具体指哪一件衣服,我们说整型int,指的是一个能够表示整数,且数据范围在-21474836482147483647之间的一种规范,并没有具体告诉程序怎样来存储这样的数据。

正如我们可以按照大码的尺寸来生产衣服一样,我们也可以按照int的标准来制定存储空间,这样所制定的存储空间,我们称为变量。变量提供一个具名的、可供程序操作的存储空间,C++中的每个变量都有其数据类型,数据类型决定着变量所占的内存空间大小、存储值的范围以及变量能参与的运算。声明变量的格式如下:

类型说明符变量名列表;

这里,我们举例来说明:

 int a;  

这句话的意思是告诉程序,我需要分配一个能装int类型数据的内存空间,并且给这个内存空间取名为a。这里的内存空间就像一个容器一样,它能装int类型的数据,同时也意味着它只能装整数,而且整数的范围在-21474836482147483647之间。简单的理解就是,变量是一种能装特定数据类型的容器,具体能装什么数据类型,在声明的时候就确定了。以下是更丰富的变量声明方式:

1.  int sum;   //分配一个能装int数据类型的内存空间,给它取名为sum

2.  float price,cost,pay;  //声明三个float类型的变量,分别取名为price,cost,pay

3.  int a=5,b=10,c=1;  //声明三个int类型的变量abc,并且给它们赋初值

这里还需要特别强调的是,声明变量时,变量名是由我们自己取名的,取名的时候需要遵守以下规范:

  • C++的标识符(identifier)由字母、数字和下划线组成,其中必须以字母或下划线开头。

  • 标识符的长度没有限制,但是对大小写字母敏感。

  • C++语言保留了一些名字供语言本身使用,这些名字不能被用作标识符。

练习:请指出下面的名字中哪些是非法的?

1.  int double=3.14;  

2.  int _;  

3.  int catch-22;  

4.  int 1_or_2=1;  

5.  double Double=3.14;  

往下看答案。

1.  int double=3.14;  //非法,double是数据类型关键字

2.  int _;  //合法,下划线开头,但不建议这样取变量名

3.  int catch-22;  //非法,包含非法字符‘-’,变量名只能是数字、字母和下划线

4.  int 1_or_2=1;  //非法,必须以字母和下划线开头

5.  double Double=3.14;  //合法,Doubledouble是不一样的,区分大小写

赋值语句

刚刚,我们说了变量是一个容器,可以往里面装数据,但是怎么装呢?这里就需要用到我们的赋值语句。赋值语句的作用就是将一个数据存储到变量中,赋值语句的一般形式:

变量=表达式;  //不要漏了末尾的分号哦

C++语言中,“=”作为赋值运算符,而不表示“等于”判断。赋值语句是由赋值表达式再加上分号构成的表达式语句。样例分析

1.  a=3;    //将数值3存储在左边的变量a

2.  b=4;   //将数值4存储在左边的变量b

3.  c=a+b; //计算a+b的结果,将结果存储在左边的变量c

注意,赋值运算符的左侧运算对象必须是一个变量。以下赋值语句是非法的。

1.  1024=k;  //非法赋值,1024不能是变量名

2.  i+j=k;  //非法赋值,i+j不能是变量名

在进行赋值运算时,如果赋值运算符两边的数据类型不同,系统将会自动进行类型转换,即将赋值运算符右边的数据类型转换成左边的变量类型。当左边是整型而右边是实型时,将去掉小数部分并截取该整型对应的有效位数。如下程序所示:

1.  #include<iostream>    

2.  using namespace std;    

3.  int main(){  

4.      int a=4;  

5.      float b=3.1415624;  

6.      a=b;  

7.      cout<<a<<endl;  

8.  }  

输出语句

在了解了这么概念后,我们继续来看什么是输出语句。

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

2.  using namespace std;  //声明命名空间

3.  int main(){  //主函数

4.      int a,b,c;  //声明三个int类型的变量,命名为a,b,c

5.      cin>>a>>b;  

6.      c=a+b;   //赋值语句,将a+b的结果存储到c变量中

7.      cout<<c;    //输出语句,)σ..:*我是主角哦

8.  }  

一个程序可以没有输入,但不能没有输出(好吧,我说的是信息学竞赛的题目),我们辛辛苦苦编写一个程序,不就是让计算机计算之后告诉我们答案嘛。

C++中,输出语句由cout和流插入运算符<<结合在一起使用,可向显示器屏幕输出数据,其基本格式如下:

cout<<表达式;

输出语句可以把表达式的值输出到屏幕上,该表达式可以是各种基本类型的常量、变量或者由它们组成的表达式。输出时,程序根据表达式的类型和数值大小,采用不同的默认格式输出,大多数情况下可满足要求。若要输出多个数据,可以连续使用流插入运算符。

以下是示例

1.  #include<iostream>  

2.  using namespace std;  

3.  int main(){  

4.      double a,b,c;  

5.      a=3;  

6.      b=4;  

7.      c=3+4;  

8.      cout<<c; //输出变量的值

9. 

Cout的注意事项:

1.每当我们输出字符串常量的时候,必须用双引号把字符串引起来,以便将它和变量名明显的区分开来。下面两个语句是不同的:

1.  cout << 'Hello' ;         //打印字符串Hello到屏幕上  

2.  cout << Hello ;           //把变量Hello存储的内容打印到屏幕上  

2.必须注意,cout并不会自动在其输出内容的末尾加换行符,因此下面的语句:

cout << 'This is a sentence.' ;

cout << 'This is another sentence.' ;

将会有如下内容输出到屏幕:

This is a sentence.This is another sentence.

为了在输出中换行,可以用操作符endlendline)来换行,例如:

cout << 'First sentence.' << endl;

cout << 'Second sentence.' << endl;

将会输出:

First sentence.

Second sentence.

练习:如何让我们两个数的加法输出结果更友好一些,比如输出结果如下

这里是参考代码:

1.  #include<iostream>  

2.  using namespace std;  

3.  int main(){  

4.      int a,b,c;  

5.      cin>>a>>b;  

6.      c=a+b;  

7.      cout<<a<<'+'<<b<<'='<<c;    //注意这一句

8.  }  


输入语句

我们来讲本节的最后一个内容,输入语句。

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

2.  using namespace std;  //声明命名空间

3.  int main(){  //主函数

4.      int a,b,c;  //声明三个int类型的变量,命名为a,b,c

5.     cin>>a>>b;    //输出语句,)σ..:*轮到我做主角了

6.      c=a+b;   //赋值语句,将a+b的结果存储到c变量中

7.      cout<<c;    //输出变量c的值

8.  }  

我们的程序用了输入语句,才能实现交互,也才能解决各种不同数据的问题。输入语句由cin和流读取运算符>>结合在一起使用,其功能是程序运行后遇到输入语句停留下来,从键盘读取数据并将其赋给“变量”。以下是输入语句的格式

cin>>变量1>>变量2>>变量3·······;

以下是示例:

以上代码编译运行后,遇到cin语句,程序暂停运行,等待用户输入数据。这时,用户需要输入和cin语句后面所接的变量个数相同,变量类型相同的数据,数据输入后,会依次赋值给变量。如下图所示,因为cin>>a>>b;这里有两个变量ab,所以需要输入两个数值,因为ab是整型,所以要求输入的数据类型是整型,数据输入结束后(按回车表示输入结束),34会赋值给变量a26会赋值给变量b

输入语句的注意事项:

1、在使用cin输入的时候必须考虑后面的变量类型。如果你要求输入一个整数,在 >>后面必须跟一个整型变量,如果要求一个字符,后面必须跟一个字符型变量。

2、可以连续使用>>,实现从键盘对多个变量输入数据。这要求从键盘输入的数据的个数、类型与变量相一致。从键盘读取数据时,各数据之间要有分隔符,分隔符可以是一个或多个空格键、回车键等。

练习:输入三个整数,实现三个整数的加法。如下所示:

参考代码如下:

1.  #include<iostream>  

2.  using namespace std;  

3.  int main(){  

4.      int a,b,c,d;  

5.      cin>>a>>b>>c;  

6.      d=a+b+c;  

7.      cout<<a<<'+'<<b<<'+'<<c<<'='<<d;    

8.  }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多