C++数值计算
1.序
(1)程序设计分两种:
1.结构化设计(面向过程)——分解算法为模块,将算法的步骤分解为模块。
2.面向对象程序设计——主要是“类”与“对象”。
(2)进制的转换
1.二进制转十进制
整数部分与小数部分分开计算,整数部分“除2取余”倒排序;小数部分“乘2取整”正排序,出现循环的进行截断,取循环部分。
2.二进制转八进制和十六进制
三位二进制转成一位十进制数为一位八进制,四位二进制转一位十六进制。
2.变量与常量
关键字:int、float、unsigned、double等
标识符:abc、Abc、_bc、abc123等
标识符命名原则:
(1)由数字、字母和下划线组成
(2)不能以数字开头,区分大小写
(3)标识符要有意义
2.1变量定义
数据类型 变量名1,变量名2,...,变量名n;
变量的写入:输入
cin>>ctemp; //输入
ctemp = 36; //赋值
int x = 10,y; //初始化
变量的读出:
ftemp = ctemp * 1.8 + ; //自动读取
cout<<ftemp; //输出
2.2常量
字面常量:实数、负数、整数,一般默认为十进制数,后缀形式有长整形L、无符号u、浮点型f等
符号常量:
#define PI 3.14
字符串常量:双引号括起来,如 “CHINA”
2.3常变量
const 数据类型 变量名=初始值;
const int x=;
不能修改,不能赋值,只能读取。
3.算术运算
3.1算术运算符:
加(+)、减(-)、乘(*)、除(/)
数据类型转换:
(1)强制转换
short() //转成短整型
float() //结果:1.8 单精度,4字节
double(1.8) //双精度,8字节
short() //结果:-32767(溢出)
int(1.8) //结果:1 丢失小数位
(2)自动转换
char short int long float double
低 高
/ =
5.0 / = 2.5
取余:% 10 % 6 = 4
自增/减:++、--
x++:先x,后+1
++x:先+1,后运算,例
int x = , y;
y = (x++) * ; //结果为20
y = (++x) * ; //结果为22
3.2位运算
位反运算符:~ 按位取反,0转1,1转0
位与运算符:& s & 0x2 结果为0000 0010时倒数第二位是1,结果为0000 0000时倒数第二位是0,用于检测倒数第二位的状态,0x2位掩码
位或运算符:| 一真即为真
位异或运算:^ 非
左移运算符:<< s<<2 左移两位,高2位移除,低2位补0
右移运算符:>> 低位移除,高位补符号位
3.3赋值运算
a = ;b =;c = ; 等价于 a = b = c = ;
y = x; x = x + ; 等价于 y = x++;
x = x + ; y = x; 等价于 y = ++x;
复合赋值运算符:
+= -= *= /= %= |= ^= <<= >>=
x += ; 等价于 x = x+;
4数据的输入与输出
C++中为输入/输出流,键盘(cin)、显示器(cout),C++要输入输出需要导入外部程序
#include <iostream>
using namespace std;
cin输入流,标准输入,可同时输入多个数据,用空格或Tab键隔开,cin>>x>>y;
cout输出流,称为标准输出,
int x=;
cout<<x; //
cout<<x<<x * x; //525,中间无间隔
5访问变量内存单元
直接访问:变量名
间接访问:引用和指针
引用:
引用类型 & 引用变量名 = 被引用变量名;
int x; int & xa = x;
或
int x; & xa = x;
int x,y, & xa = x;
例 int x = ,y = ;
int & xa = x;
指针:内存地址 取地址运算符:& 取变量内存地址的首地址。
& 变量名
int x = ;
cout <<&x; //输出变量x的地址,一个8位的十六进制数,4个字节
通过地址访问某个变量x,分3步:
(1)定义一个专门保存地址的变量(假设为P)称指针变量
(2)取出变量x的地址,赋给p
(3)通过指针变量p所保存的地址访问变量x的内存单元
注:指针的指向类型不能改变,整型(int)指针只能指向整型,指针变量也是一个变量,也有其内存单元。
定义指针变量
指向类型 *指针变量名;
int x, y;
int *p; //定义指针变量p,未指向任何变量
p = &x; //取x的地址赋给指针变量p,则p指向x int *p = &x;
指针运算符:*
* 指针变量名
*p
int x;
int *p = &x;
*p = ;
cout<<*p; //结果:10
cout<<p; //显示p中保存的地址即8位十六进制数
注:*p 相当于x的另一个名字或标签
void类型
int x = ;
double y = 10.5;
void *p;
cout<<*((int*)p); //显示:10,需要强制转换为int p = &y;
cout<<*((double*)p; //显示:10.5,转为double
指向常变量的指针
const int x = ;
const int * p;
p = &x;
cout<< *p; //正确
*p = //错误
定义指针类型的常变量
int x =, y = ;
int *const p = &x; //初始化,以后不能修改
C++数值计算的更多相关文章
- Linux 中的数值计算和符号计算
不知道经常需要做科学计算的朋友们有没有这样的好奇:在 Linux 系统下使用什么工具呢?说到科学计算,首先想到的肯定是 Matlab,如果再说到符号计算,那就非 Mathematica 不可了.可惜, ...
- 复化梯形求积分——用Python进行数值计算
用程序来求积分的方法有很多,这篇文章主要是有关牛顿-科特斯公式. 学过插值算法的同学最容易想到的就是用插值函数代替被积分函数来求积分,但实际上在大部分场景下这是行不通的. 插值函数一般是一个不超过n次 ...
- HDU 4465 数值计算,避免溢出
数学,数值计算,求期望 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4465题目描述:有两个盒子,每个中有n个糖果,(n<10^5)每次任选一 ...
- JS(截取字符串,显示当前系统时间yyyy-MM-dd,从文本框得到的数值计算)
截取字符串: var str = "1234567890"; var a = str.substring(0,8); //==str.substring(8)---结果:12 ...
- Net数值计算MathNet.Numerics类库
一.Net自带的数值计算:System.Numerics 1.大整数BitInteger 方法:除数和余数.最大公约数 2.复数Complex 属性:实部.虚部.量值.相位 方法:共轭.倒数 二.Ma ...
- js数值计算
js在小数数值计算时会出现误差,比如0.19+15.02=15.20999999999999,出现此问题的原因,百度上有,为了避免误差产生可以这样做:(0.19*100+15.02*100)/100.
- C#环境下的数值计算库:MathNet
下面用一个简单的例子来说明MathNet的使用方法: 1. 进入MathNet官网找到数值计算库Math.NET Iridium(Numerics)并下载: 2. 将下载的文件解压缩,在目录下的Bin ...
- python与数值计算环境搭建
数值计算的编程的软件很多种,也见过一些编程绘图软件的对比. 利用Python进行数值计算,需要用到numpy(矩阵) ,scipy(公式符号), matplotlib(绘图)这些工具包. 1.Linu ...
- python数值计算模块NumPy scipy安装
NumPy为Python提供了快速的多维数组处理的能力,而SciPy则在NumPy基础上添加了众多的科学计算所需的各种工具包,有了这两个库,Python就有几乎和Matlab一样的处理数据和计算的能力 ...
- 使用Intel编译器获得一致的浮点数值计算结果
使用Intel编译器获得一致的浮点数值计算结果大多数十进制的浮点数, 用二进制表示时不是完全一致的; 与此同时, 大多数与浮点数值相关的计算结果, 存在着固有的不确定性.通常, 编写浮点计算应用软件希 ...
随机推荐
- SDNU ACM-ICPC 2019 Competition For the End of Term(12-15)山师停训赛题解
马鸿儒 目前已补:01 03 06 07 08 09 10 11目前未补:02 04 05 12 苏用 1582.柳予欣的舔狗行为 1587.柳予欣的女朋友们在分享水果 1585.柳予欣和她女朋友的购 ...
- ZR 8.31
ZR8.31 题目链接:http://www.zhengruioi.com/contest/388 版权原因,不放题面 A 首先,排序肯定要根据工作经验排序,因为这样便于选择 之后,如果两个人工作经验 ...
- 2018-2-13-win10-UWP-九幽数据分析
title author date CreateTime categories win10 UWP 九幽数据分析 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 1 ...
- 研发环境容器化实施过程(docker + docker-compose + jenkins)
目录 背景介绍 改造思路 容器构建 基础准备 中间件容器 外部依赖容器 业务应用容器 容器整合 自动构建容器 Maven相关 非Maven项目 总结 背景介绍 目前公司内部系统(代号GMS)研发团队, ...
- 深入Oracle的left join中on和where的区别详解
-- from http://blog.itpub.net/30175262/viewspace-1472060/ 今天遇到一个求某月所有天数的统计结果,如果某日的结果是0也需要显示出来,即: 日期 ...
- 安卓APP动态调试(IDA实用攻略)
转自:http://drops.wooyun.org/mobile/5942 0x00 前言 随着智能手机的普及,移动APP已经贯穿到人们生活的各个领域.越来越多的人甚至已经对这些APP应用产生了依赖 ...
- Cortex-A8/A76
Cortex-A8 关于Cortex-A8的微处理架构参考<ARM_Cortex-A8微处理器的架构和实现> 其中关于NEON有两段话摘录如下: NEON媒体引擎拥有自己的10段流水线,它 ...
- SpringBoot源码学习系列之启动原理简介
本博客通过debug方式简单跟一下Springboot application启动的源码,Springboot的启动源码是比较复杂的,本博客只是简单梳理一下源码,浅析其原理 为了方便跟源码,先找个Ap ...
- .Net快速上手Nlog日志组件
目录 一.NLog 简介 二.NLog 安装 三. NLog 配置 四.程序代码中写日志 五.参考 一.NLog 简介 NLog是适用于各种.NET平台的灵活,免费的日志记录平台.NLog使写入多个目 ...
- [白话解析] 深入浅出一致性Hash原理
[白话解析] 深入浅出一致性Hash原理 0x00 摘要 一致性哈希算法是分布式系统中常用的算法.但相信很多朋友都是知其然而不知其所以然.本文将尽量使用易懂的方式介绍一致性哈希原理,并且通过具体应用场 ...