首页 > 其他分享 >第二章数据的存储和读入

第二章数据的存储和读入

时间:2022-12-11 22:36:32浏览次数:36  
标签:main 存储 include 变量 int namespace 读入 第二章 cout

2.1变量和变量的类型

例2.1将整数65存储到计算机内存,并且输出

#include<iostream>
using namespace std;
int main()
{
      int a;
      a=65;
      cout<<a<<endl;
      return 0;
}

2.1.1变量与变量类型概念

内存:计算机存储数据与程序的地方,主要单位有

字节Byte=8bit(位)

1KB (Kilobyte 千字节)=1024B

1MB (Megabyte 兆字节 简称“兆”)=1024KB

1GB (Gigabyte 吉字节 又称“千兆”)=1024MB

1TB (Trillionbyte 万亿字节 太字节)=1024GB

1PB(Petabyte 千万亿字节 拍字节)=1024TB

1EB(Exabyte 百亿亿字节 艾字节)=1024PB

1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB

1YB (Jottabyte 一亿亿亿字节 尧字节)= 1024 ZB

1BB (Brontobyte 一千亿亿亿字节)= 1024 YB

计算机高级语言通常用变量名标识数据存储在内存的位置,同时需要指明给变量名所在空间开辟多大的空间。那么,应该依据什么开辟空间的大小呢?高级语言把数据进行分类,称之为数据类型,在使用变量,需要定义变量的数据类型,系统依据定义的数据类型,给变量分配内存空间。例如,上例中a是int表示该数据类型为整型的空间,该整型空间占用4字节,允许放在a中的数据为-2147483648~2147483647范围内的整数。

例2.2阅读下列程序的运行结果,说一说变量a的作用

#include<iostream>
using namespace std;
int main()
{
	int a;
	a=65;
	cout<<a<<endl;
	a=100;
	cout<<a<<endl;
	return 0;
}


2.1.2
变量名

在计算机语言中变量表示某个存储数据空间的名称,因此,命名时要遵守一定的规则

(1)只能出现字母,数字或下划线

(2)第一个字符不能是数字

(3)不能是C++关键字

(4)区分大小写

例2.3合法变量的认识
(A) int (B) 10days (C) my_book (D) us$D.count

 

2.1.3变量定义

变量定义的作用是,在内存中开辟一个类型标识符指定类型的空间,用变量名标识。

C++语言中,数据存入变量前,首先要定义变量

变量的定义格式如下

类型标识符 变量名1,变量名2,….,变量名n;

变量定义的两个关键要素是数据类型与变量名。
例2.4将实数65.5存储到计算机内存变量a中,并且输出

#include<iostream>
using namespace std;
int main()
{
	float a;
	a=65.5;
	cout<<a<<endl;
	return 0;
}

例2.5将字符'A'存储到计算机内存变量a中,并且输出

#include<iostream>
using namespace std;
int main()
{
	char a;
	a='A';
	cout<<a<<endl;
	return 0;
}

例2.6求长为7.5cm,宽为10.6cm的矩形面积,要求先将矩形长和宽分别存储到变量x,y中

#include<iostream>
using namespace std;
int main()
{
	float x=7.5;
	float y=10.6;
	cout<<"Area of a rectangle"<<x*y<<endl;
	return 0;
}

2.2赋值语句与数学表达式

例2.7求半径为7cm的圆面积

#include<iostream>
using namespace std;
int main()
{
      float radius;
      float area;
      radius=7;
      area=3.1415926*radius*radius;
      cout<<"Circula area="<<area<<endl;
      return 0;
}

为什么这里radius和area的类型是float,能不能为int,为什么?

2.2.1赋值语句

格式:变量 赋值运算符 表达式

赋值语句作用是,将运算的结果放到变量中存储起来。

赋值运算符用于对变量进行赋值,分为简单赋值(=),复合算术赋值(+=,-=,*=、/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共11种。
例2.8阅读下列程序,理解赋值语句

#include<iostream>
using namespace std;
int main()
{
      int a=5;
      cout<<a<<endl;
      a=a+2;
      cout<<a<<endl;
      a=a+5;
      cout<<a<<endl;
      return 0;
}

例2.9阅读下列程序,理解复合算术赋值的功能

#include<iostream>
using namespace std;
int main()
{
      int a,b;
      a=b=3;
      cout<<a<<" "<<b<<endl;
      a+=b;
      cout<<a<<" "<<b<<endl;
      return 0;
}

 

说明:c++支持连等号赋值的表达形式,a+=b与a=a+b等效,前者执行速度比后者快。

例2.10编程实现两个变量x,y之间值的交换
方法一

#include<iostream>
using namespace std;
int main()
{
	float x,y;
	x=10.5;
	y=30.6;
	cout<<x<<" "<<y<<endl;
	x+=y;y=x-y;x-=y;
	cout<<x<<" "<<y<<endl;
	return 0;
} 

方法二

#include<iostream>
using namespace std;
int main()
{
	float x,y,t;
	x=10.5;
	y=30.6;
	cout<<x<<" "<<y<<endl;
	t=x;x=y;y=t;
	cout<<x<<" "<<y<<endl;
	return 0;
} 

2.2.2变量的自增与自减

C++语言中整型或浮点型变量的值加1可以使用自增运算符”++”。

有两中用法

用法1:变量名++;

用法2:++变量名;

这两种用法都能使变量的值加1,但它们是有区别的。
例2.11阅读下列程序,说一说变量自增两种用法的区别

#include<iostream>
using namespace std;
int main()
{
      int n1,n2=5;
      n2++;
      cout<<n2<<endl;
      ++n2;
      cout<<n2<<endl;
      n1=n2++;
      cout<<"n1="<<n1<<"n2="<<n2<<endl;
      n1=++n2;
      cout<<"n1="<<n1<<"n2="<<n2<<endl;
      return 0;
}

 

2.2.3程序中的数学表达式

数学表达式由数据,变量,运算符,数学函数,括号组成,程序跌数学表达式需要用语言能够接受的运算符和数学函数表示。

例2.12已知a=5.5、b=6.7、c=9.3,编程求式子

#include<iostream>
using namespace std;
int main()
{
	float a,b,c,f;
	a=5.5;
	b=6.7;
	c=9.3;
	f=(-b+4*a*c)/(2*a);
	cout<<f<<endl;
	return 0;
} 

例2.13

2.2.4常量定义

圆周率π是一个常数,对于常数可以定义一个常量来存储。所谓常量,即常量的值在程序中不能发生变化。

定义和说明一个常量的格式

类型说明符 const 常量名=值

或者

const 类型说明符 常量名=值

使用常量有几个好处

(1)方便修改

(2)可读性强

(3)为了区别变量与常量,常量名通常用大写字母。

2.3数据类型转换

例2.15已知三角形的底为23,高为51,求面积

#include<iostream>
using namespace std;
int main()
{
      int a,h;
      float s;
      a=23;
      h=51;
      s=a*h/2.0;//注意与s=a*h/2的区别
      cout<<s<<endl;
      return 0;
}

 

数据类型转换就是将数据(变量,表达式的结果)从一种类型转换到另一种类型。数据类型的转换有自动转换与强制转换两种。

2.3.1自动转换

在不同数据类型的混合运算中,编译器会隐式地进行数据类型的转换称为自动类型转换。

规则如下

(1)若参与运算的数据类型不同,则先转换成同一类型,然后进行运算

(2)转换按数据长度增加的方向进行,以保证精度不降低。

(3)在赋值运算中,赋值号两边的数据类型不相同时,将把右边表达式值的类型转换为左边变量的的类型。如果右边表达式值的数据类型长度比左边长,将丢失一部分数据。

(4)在赋值语句中,赋值号两边数据类型一定是相兼容的类型,如果等号两边数据类型不兼容,语句在编译时会报错。

2.3.2强制类型转换

当自动类型转换不能实现目的时,可以显式进行类型转换,称为强制类型转换。

强制类型转换的一般格式

(类型名)(表达式)

(类型名)(变量)

需要注意的是,无论是自动转换还是强制转换,都只是为了本次运算的需要而对变量的数据类型进行临时性转换,不改变数据说明时对变量定义的类型。

例2.16求三个数的和

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

      int a,b,c,s;
      a=1562345672;
      b=1456789343;
      c=1234567832;
      s=a+b+c;
      cout<<s<<endl;
      return 0;
}

运行结果

-41264449

为什么会出现这个错误的结果呢?

将s定义为long long试一试

#include<iostream>
using namespace std;
int main()
{
      int a,b,c;
      long long s;
      a=1562345672;
      b=1456789343;
      c=1234567832;
      s=a+b+c;
      cout<<s<<endl;
      return 0;
}

 

为什么还是错呢?

进行强制转换

#include<iostream>
using namespace std;
int main()
{
      int a,b,c;
      long long s;
      a=1562345672;
      b=1456789343;
      c=1234567832;
      s=(long long)a+b+c;
      cout<<s<<endl;
      return 0;
}

 

能这样写吗?

#include<iostream>
using namespace std;
int main()
{
      int a,b,c;
      long long s;
      a=1562345672;
      b=1456789343;
      c=1234567832;
      s=(long long)(a+b+c);
      cout<<s<<endl;
      return 0;
}

 

说明:表达式运算过程的类型变化导致结果出错是程序设计中容易犯的错误,但是由于这种错误在程序编译时不报错,同时要在数据比较大的情况才发生,不容易发现,因此,数据类型变换是程序设计中需要注意的细节。

2.3.3字符型和整型的转换

将一个字符存放到内存单元时,实际上并不是把该字条本身放到内存中,而是将该字符相应的ASCII码存放到内存中。如字条’a’存放的是97。

例2.17字符类型赋给整型

#include<iostream>
using namespace std;
int main()
{
	int i,j;
	i='A';
	j='B';
	cout<<i<<' '<<j<<'\n';
	return 0;
}

例2.18通过字符数据与整数进行算术运算进行字母的大小写转换。

#include<iostream>
using namespace std;
int main()
{
	char c1,c2;
	c1='a';
	c2='b';
	c1=c1-32;
	c2=c2-32;
	cout<<c1<<' '<<c2<<endl;
	return 0;
}

2.4变量的读入

例2.19从键盘输入一个三位数,然后将它反向输出。例如输入673,输出为376

#include<iostream>
using namespace std;
int main()
{
	int x,y,x1,x2,x3;
	cin>>x;
	x1=x/100;
	x2=(x-x1*100)%10;
	x3=x%10;
	y=x3*100+x2*10+x1;
	cout<<y<<endl;
	return 0;
}

2.4.1cin语句格式

cin>>变量1>>变量2>>..>>变量n
例2.20依据五组输入数据和运行结果分析cin数据读入方式

#include<iostream>
using namespace std;
int main()
{
	char c1,c2;
	int a;
	float b;
	cout<<"输入:"<<endl;
	cin>>c1>>c2>>a>>b;
	cout<<"输出:"<<endl;
	cout<<c1<<endl;
	cout<<c2<<endl;
	cout<<a<<endl;
	cout<<b<<endl; 
	return 0;
}

(1)cin语句把空格字符与回车换行符作为分隔符,不输入给变量,如果相将空格字符或回车换行符(或任何其它键盘上的字符)输入给字符变量,可以用getchar()函数

(2)cin语句忽略多余的输入数据

(3)在组织输入流数据时,要仔细分析cin语句中的变量类型,按照相应的格式输入,否则容易出错。
2.5c语句中的scanf语句与printf语句

C++语句兼容c语言中基本语句语法,scanf语句与printf语句是c语句中的输入输出语句,在c++语言环境中亦可使用。对于大数据的输入输出,使用scanf语句和printf语句比c++输入输出流cin和cout效率高。

2.5.1printf格式输出函数

printf(“格式控制字符串”,输出列表);

p43

2.5.2scanf格式输入函数

scanf(“格式控制字符串”,地址列表)

p46

2.6顺序结构程序设计实例

2.28鸡兔同笼

 

标签:main,存储,include,变量,int,namespace,读入,第二章,cout
From: https://www.cnblogs.com/smghj/p/16974717.html

相关文章

  • 邻接表存储实现图的深度优先遍历
    题目要求第一行输入顶点个数及边的个数,第二行依次输入各顶点,第三行开始依次输入边的两个顶点,用空格分开。最后输入深度优先遍历的起始点。输出格式:输出深度优......
  • 使用 dragonflydb 作为godns 的redis 存储
    玩法没变,可以参考我以前写的,主要是调整了redis为dragonflydb测试下参考docker-compose文件version:"3"services:redis:image:docker.dr......
  • Hive压缩和存储
    1Hadoop源码编译支持Snappy压缩1.1资源准备1)CentOS联网配置CentOS能连接外网。Linux虚拟机ping​​www.baidu.com​​是畅通的注意:采用root角色编译,减少文件夹权限出现......
  • 第二章 快捷键/命令
    第二章快捷键/命令快捷键win+上下左右:窗口位置移动终端字体大小:方法一:查看-放大方法二:ctrl+(shift)+'+(=)':放大ctrl+'-':缩小ctrl+alt+F1:打开字......
  • Kubernetes(k8s)存储管理之数据卷volumes(五):动态制备-存储类StorageClass
    目录一.系统环境二.前言三.静态制备和动态制备四.存储类StorageClass4.1存储类StorageClass概览4.2StorageClass资源五.创建存储类StorageClass5.1配置NFS服务端以及共......
  • k8s--数据存储、PV、PVC
    介绍在前面学了使用NFS提供存储,此时就要求用户会搭建NFS系统,并且会在yaml中配置nfs。由于kubernetes支持的存储系统有很多,要求客户全都掌握,显然不合理。为了能够......
  • 《MySQL必知必会》之快速入门存储过程
    使用存储过程本章介绍什么是存储过程,为什么使用、如何使用,并介绍如何创建和使用存储过程的基本语法存储过程在实际应用中,往往需要执行多个表的多条sql语句存储过程就......
  • 《深入理解计算机系统》第二章学习笔记
    补码编码是表示有符号整数的最常见的方式,有符号整数就是可以为正或者为负的数字。计算机的表示法是用有限数量的位来对一个数字编码,因此,当结果太大以至不能表示时,某些运算......
  • Kubernetes(k8s)存储管理之数据卷volumes(四):持久卷Persistent Volume
    目录一.系统环境二.前言三.持久卷(PersistentVolume)3.1持久卷(PersistentVolume)概览3.2持久卷和持久卷申领的生命周期3.3持久卷的类型3.4持久卷的回收策略persistentVo......
  • 第一章第二章
    数据库的发展人工管理阶段、文件系统阶段、数据库系统阶段数据库管理系统(DBMS)数据库系统(DBS)结构化查询语言(SQL) E-R模型(实体-联系模型)数据模型有层次模型、网状模型......