计算机宗旨:一切皆为数字。
万能头 #include<bits/stdc++.h>
C++解决问题步骤
- 准备房间
- 迎接客人
- “处理”客人
- 送走客人
- 结束
return 0;
C++代码框架
#include<iostream>
using namespace std;
int main()
{
return 0;
}
1.1 常量与变量
常量(住在家里):在程序运行期间,不可以改变的量(值)。 变量(住在酒店):在程序运行期间,可以改变的量(值)。 字面值常量(literal constant),“字面值”是指只能用它的值称呼它,“常量”是指其值不能修改。每个字面值都有相应的类型,3.14是double型,2是int型。只有内置类型存在字面值。(了解)
1.1.1 常量有哪些?
整数、小数、字符、字符串、布尔值、宏变量
int double char string bool
常见的宏变量:INT_MAX 、INT_MIN、LONG_LONG_MAX、LONG_LONG_MIN
1.1.2 如何定义变量?标识符:
- 由字母、数字、下划线组成
- 第一个符号为字母或者下划线
- 不用使用系统关键字来命名
1.1.3 变量里的值来源有哪些?
原则:先有房子,再住人!!! 变量与赋值语句:变量必须先定义,才可以使用。不能重名。 1. 定义时初始化!!!,未初始化后果是里面随机值危险!!! 手动初始化为0。(好习惯) int a = 0; 计算机初始化为随机值 int a; 2. 手动赋值 赋值语句、(赋值符号=) int a; a=90; 3. 从键盘输入到变量,输入格式:
单个输入 cin >> a ;
两个输入 cin >> a >> b ;
多个输入 cin >> a >> … >> n ;
多个变量赋值、定义变量时候可以简写
int a , b , c ;
a=80;
b=90;
1.1.4 输入输出格式
单个输出 cout << a ;
两个输出 cout << a << b ;
多个输出 cout << a << … << n ;
换行 cout << endl;
cout << a << endl;
两个变量换行输出 cout << a << endl << b;
1.1.5 认识符号
算术运算符 +、-、*、/、%、++、--
关系运算符 >、<、==、>=、<=
逻辑运算符 && || !
位运算 <<、>>、&、|、^
赋值运算符 =
求字节数运算符 sizeof
1.2 算术运算符与算术表达式(五则运算,类比数学四则运算)
算术优先级: 乘法(*)、 加法(+)、 减法(-) 除法(/) 、带小数除法 求余数(%)、 模的概念 取模运算 只能运用于整数运算,得到余数。 负数的取模运算:如果第一个操作数为负数,则得到的模也是负数;如果第一个操作数是正数,则得到的模也是正数。
1.2.1 自增、自减运算符
变量自增(a++, ++a)、 变量自减(a—, —a)
++a与a++的区别 ++a (人人为我,先自己后别人)、a++(我为人人,先别人再自己)
1.2.2 赋值符号和赋值表达式
用逗号表达式,简写赋值语句
int a , b , c ;
a=80 , b=90 , c =70;
当两个变量值相同时候,可以用连等赋值
int a , b, c;
a=b=c=90;
1.2.3 复合赋值运算符
C++语言中,a = a + 1; 可以简写为:a += 1; 还有其他符合运算符,+=,-=,=,/=,%=等、对应着五大运算法则
1.2.4 整型
int整型 4字节 范围:-2147483648 - 2147483647 long long长整型 8字节 范围:-9223372036854775808 - 9223372036854775807
变量溢出、爆int 变量溢出规则:unsigned short 相当于取模 %65536
1.2.5 实型
float 单精度 、4字节 、范围1.17549e-038 - 3.40282e+038 double 双精度(默认)、8字节 、 范围2.22507e-308 - 1.79769e+308
默认有效位6位
#include <iostream>
#include <iomanip> //处理客人用的工具(处理小数的工具)
using namespace std ;
int main()
{
double x; //准备房间
cin >> x; //迎接客人
cout << fixed << setprecision(2) ;//处理客人 (保留2位小数)
cout << x; //送走客人
return 0; //结束
}
1.2.6 字符型
char 字符、 1字节 范围 -128~127 表示的ASCII范围:0~127 ASCII码概念、数字字符、 以及转义字符 '\n','\0','\t'等 数字字符转成数字: '9' - ? == 9 小写字母转换大写字母:'?' - 'a' + 'A' 每个常用字符都对应一个-128~127的数字,二者之间可以相互转化: 字符可以参与运算,运算时会将其当做整数:
int a = 'B' - 'A';
int b = 'A' 'B';
char c = ‘A’ + 2;
cout << a << ' ' << b << ' '<< c;
常用ASCII值:'A'-'Z' 是65~90,'a'-'z'是97-122,'0'-'9'是48-57。
1.2.7 布尔型
bool 布尔类型 1字节 0~1 它的结果只有0或者1,true代表1,false代表0。
bool a = 100;
cout << a << endl;
1.3 数据类型转换
类型转换发生的场景 - 赋值符号左右两边的类型不相同 - 不同类型的混合运算
类型转换导致数据丢失 整数之间转换,超过范围会被截断 小数转整数,小数部分丢失 解决方法: 1. 用体积大的类型来存储数据(char < int < long long < double)。 2. 用double来存储小数
1.3.1 隐式类型转换(自动转换):表达式中,各类混合运算时,编译器会自动类型提升。
- char 与 int 一起运算,会被提升为int
- int 与 long long 一起运算,会被提升为long long
- int 与 double 一起运算, 会被提升为double
1.3.2 显式类型转换(强制转换),这是一种临时的转换,并不会改变原来的类型。
int a = 3;
int b = 10;
double re = (double)a / b ; //将一个变量a中的值临时转换成double类型,也即3.0后参加运算,等价于 3.0 / 10
注意与: cout << 3.0 /10 ; 区别
例子1:
已知 int b=7; double a= 2.5, c=4.7;
求下面的表达式的值
a + (int)(b / 3 (int)(a+c)/2.0) % 4
输出:???
例子2:
float v0 = (40/3) , a=0.2;
int t=120;
float vt,s;
vt = v0 + at;
s = v0t + 0.5att;
cout << "vt=" << vt << " s=" << s << endl;
return 0;
输出:???
例子3:
float pi=3.14;
int s, r =4;
s = rrpi;
cout << s << endl;
输出:???
例子4:
int x;
float a = 15.75;
double b = 323.01;
cout << (int)a << endl;
cout << (int)(b+0.5)%10 << endl;
cout << (int)b%(int)a + 1;
输出:???
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com