C++入门(2)

devtools/2025/3/3 21:57:11/

1.变量和常量

1.1变量的创建

我们把经常变化的值称为变量,不变的值称为常量。

data_type name;|       ||       |
数据类型   变量名
1  int age;   //整型变量
2  char ch;   //字符变量
3  double weight;  //浮点型变量

变量的命名规则遵循以下原则:

  • 变量名只能由字母、数字下划线组成,且必须以字母或下划线开头。
  • 变量名不能以纯数字开头,也不能包含特殊字符。
  • 变量名不能使用语言的关键字,如char、int等。
  • 变量名应具有意义,有助于理解变量的含义和用途。
  • 变量名应简短明了,避免使用过长的名称。
  • 变量名应区分大小写。

1.2变量初始化

变量在创建的时候就给一个初始值,就叫初始化。

1  int age = 18;
2  char ch = ‘w’;
3  double weight = 48.0;
4  unsigned int height = 100;

1.3变量的分类

  • 全局变量:在大括号外部定义的变量就是全局变量。
  • 局部变量:在大括号内部定义的变量就是局部变量。
#include "iostream"
using namespace std;int global=100;  //全局变量int main()
{int local=200;  //局部变量cout << local << endl;cout << global <<endl;return 0;
}

在局部变量和全局变量同名的时候,局部变量优先使用 

#include "iostream"
using namespace std;int local=100;int main()
{int local=200;cout << local << endl;return 0;
}

全局变量和局部变量在初始化上主要有以下区别:

  • 全局变量:全局变量通常在定义时就被初始化,如果没有明确指定初始值,它们通常会被初始化为0。
  • 局部变量:局部变量通常不会自动初始化。它们需要在使用之前明确地赋值或初始化。如果没有初始化,它们的值将是未定义的,使用未初始化的局部变量可能会导致不可预测的行为或运行时的错误。

1.4常量

常量就是不能被改变的值,通常我们会用三种常量:

  • 字面常量
  • #define定义的常量
  • const定义的常量

1.4.1字面常量

整型常量:100,-5,0,0x123整型常量一般可以写成10进制、8进制、16进制。

字符常量:‘a’

浮点型常量:3.14,1E6

1.4.2#define定义常量

1  #define 常量名 内容

代码举例: 

#include <iostream>
using namespace std;#define M 100
#define CH 'x'
#define PI 3.14159int main()
{cout << M << endl;cout << CH << endl;cout << PI << endl;return 0;
}

1.4.3const定义常量

1  const 类型 常量名字 = 常量值;

代码举例:

#include <iostream>
using namespace std;const double PI = 3.14159;int main()
{int r = 0;cin >> r;cout << "周⻓:" << 2 * PI * r << endl;cout << "⾯经:" << PI * r * r << endl; return 0;
}

 使用const定义常量的好处:

  • 增加了程序的可读性。
  • 增加了程序的可维护性,如果改变常量的值,只要在定义的部分修改,使用的地方也就随之改变了。
  • 常量是不能修改的。

1.5练习

练习1:牛牛买电影票_牛客题霸_牛客网

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

练习2:B2007 A + B 问题 - 洛谷

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

练习3:B2614 【深基1.习6】鸡兔共笼 - 洛谷 

#include"iostream"
using namespace std;int main()
{int a=0;int b=0;int c=35;int f=94;a=(4*c-f)/2;b=c-a;cout<<b<<" "<<a<<endl;return 0;
}

2.算数操作符

2.1算数操作符

算数操作符分别是:+、-、*、/、%,这些操作符都是双目操作符。

#include"iostream"
using namespace std;int main()
{int a = 7 + 2; //加法运算int b = 7 - 2; //减法运算int c = 7 * 2; //乘法运算int d = 7 / 2; //除法运算,得到的是整除后的商int e = 7 % 2; //取余运算,得到的是整除后的余数cout << a << endl;cout << b << endl;cout << c << endl;cout << d << endl;cout << e << endl;return 0;
}

易错:

  • /除法的操作符,除数不能为0,如果除数为0,程序会崩溃。
  • %取模操作符的计算结果是两个操作数进行除法运算后的余数。
  • 取模操作符的操作数只能是整型,不能是浮点型,这个编译器会报语法错误。

2.2浮点数的除法

#include <iostream>
using namespace std;int main()
{float x = 6 / 4;cout << x << endl; // 1float y = 6.0 / 4; // 6/4.0结果是⼀样的cout << y << endl; // 1.5return 0;
}

整数除法是整除,只会返回整数部分,丢弃小数部分。

如果要得到浮点数的结果,两个运算数必须至少有一个浮点数,这时就会进行浮点数除法。

2.3负数取模

负数也是支持取模的,但是负数求模结果的正负号由第一个运算数的正负号决定。

#include <iostream>
using namespace std;int main()
{cout << 11 % -5 << endl; cout << -11 % -5 << endl; cout << -11 % 5 << endl; return 0;
}

2.4练习

练习1:B2008 计算 (a+b)×c 的值 - 洛谷 

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

练习2:B2010 带余除法 - 洛谷 

#include"iostream"
using namespace std;int a,b;
int main()
{cin >> a >> b;int s = a/b;int y = a%b;cout << s << " " << y << endl;return 0;
}

练习3:整数的个位

#include"iostream"
using namespace std;int a;
int main()
{cin >> a;int r = a%10;cout << r <<endl;return 0;
}

练习4:整数的十位 

#include"iostream"
using namespace std;int a;
int main()
{cin >> a;cout << a%100/10 << endl;return 0;
}

练习5:1031-时间转换_牛客竞赛语法入门班顺序结构习题

#include"iostream"
using namespace std;int seconds;
int main()
{cin >> seconds;cout << seconds/60/60 << " " << seconds/60%60 << " " << seconds%60 << endl;return 0;
}

练习6: P1425 小鱼的游泳时间 - 洛谷

#include"iostream"
using namespace std;int main()
{int a,b,c,d;cin >> a >> b >> c >> d;int h,m;int t=-a*60-b+c*60+d;h=t/60;m=t%60;cout << h << " " << m << endl;return 0;
}

3.赋值操作符

在变量创建的时候给一个初始值叫初始化,在创建好后,再给一个值,这叫赋值。

赋值操作符=是一个随时可以给变量赋值的操作符,赋值运算符是把右边的值赋给左边的。

3.1连续赋值

int a = 3;
int b = 5;
int c = 0;
c = b = a + 3; //连续赋值,从右向左依次赋值的。

 3.2复合赋值符

复合赋值符样例一般写法
+=a+=10a=a+10
-=a-=10a=a-10
*=a*=10a=a*10
/=a/=10a=a/10
%=a%=10a=a%10

3.3练习

练习1:账户余额

#include"iostream"
using namespace std;int main()
{int m=100;m+=10;cout << m << endl;m-=20;cout << m << endl;m=0;cout << m << endl;return 0;
}

练习2:信息学奥赛一本通(C++版)在线评测系统

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

 

4.类型转换

4.1混合运算时的类型转换

整型提升:表达式中的char和short类型一定会先转换成int类型,然后参与运算。

算数转换:表达式中出现下面的任意两种类型的值进行计算的时候,要先将较下面的类型转换成另外一种类型才能计算。

1  long double
2  double
3  float
4  unsigned long int
5  long int
6  unsigned int
7  int

4.2赋值时类型转换

当赋值操作符两端的数据类型不一致时,就需要类型转换。

  1. float和double赋值给int,直接截断小数部分,保留整数部分。
  2. 较小的类型转换较大类型,直接转换,值不变。
  3. 较大类型转换较小的类型,一般会发生截断,按照较小类型的长度,保留低位数据给较小的类型。

4.3强制类型转换

(类型名)表达式

例如:

double d = 3.14;
int a = (int)d;

4.4练习

练习1:1034-[NOIP2017]成绩_牛客竞赛语法入门班顺序结构习题 

#include"iostream"
using namespace std;int a,b,c;int all;
int main()
{cin>>a>>b>>c;all=(int)(a*0.2+b*0.3+c*0.5);cout<<all<<endl;return 0;
}

练习2:B2016 浮点数向零舍入 - 洛谷 

#include"iostream"
using namespace std;double x;
int main()
{cin>>x;cout<<(long long int)x<<endl;return 0;
}

练习3:B2017 打印 ASCII 码 - 洛谷 

#include"iostream"
using namespace std;int main()
{char c=0;cin>>c;cout<<(int)c<<endl;return 0;
}

 

5.单目操作符

5.1++和--

  • 前置++或者后置++,都是让操作数自增1的
  • 前置--或者后置--,都是让操作数自减1的

前置++:先+1,后使用

后置++:先使用,后+1

前置--:先-1,后使用

后置--:先使用,后-1


http://www.ppmy.cn/devtools/164290.html

相关文章

Is Noise Conditioning Necessary for Denoising Generative Models?论文阅读笔记

很吸引人的一个标题&#xff0c;很吸引人的一个作者&#xff0c;来读一读明神的新作&#xff0c;讲的是怎么把去噪领域的一些有意思的思想&#xff0c;特别是blind denoising和noise-level estimation的思想&#xff0c;应用到denoising diffusion模型中&#xff0c;从而去掉de…

4-1.jvm的类加载

JVM的类加载机制是将字节码文件&#xff08;.class&#xff09;动态加载到内存&#xff0c;并进行验证、准备、解析和初始化的过程&#xff0c;最终生成可被虚拟机直接使用的类对象。&#xff1a; 一、类加载的五大阶段 ​加载&#xff08;Loading&#xff09;​​ ​任务&a…

Android双屏异显副屏实现PIP效果小窗口同步显示主屏播放画面

在KTV应用开发中一个常见的场景需求就是一台设备要接多个显示屏&#xff0c;其中一个主屏一般都是触摸屏&#xff0c;通过VGA线连接&#xff0c;支持手点击操作点歌切歌等。另外还会有多个副屏&#xff0c;一般都是电视机&#xff0c;通过HDMI线连接。 有一个特点就是所有电视…

2025国家护网HVV高频面试题总结来了01(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 0x1 高频面试题第一套 0x2 高频面试题第二套 0x3 高频面试题第三套 0x4 高频面试题第四套 0x5 高频面…

nio中ByteBuffer使用

创建ByteBuffer ByteBuffer buffer ByteBuffer.allocate(10);// 字符串转 bytebufferByteBuffer buffer01 Charset.defaultCharset().encode("hello world"); ByteBuffer buffer02 ByteBuffer.wrap("hello".getBytes()); ByteBuffer buffer03 Standard…

Cherry Studio + 火山引擎 构建个人AI智能知识库

&#x1f349;在信息化时代&#xff0c;个人知识库的构建对于提高工作效率、知识管理和信息提取尤为重要。尤其是当这些知识库能结合人工智能来智能化地整理、分类和管理数据时&#xff0c;效果更为显著。我最近尝试通过 Cherry Studio 和 火山引擎 来搭建个人智能知识库&#…

Spring Boot 中 RabbitMQ 的使用

目录 引入依赖 添加配置 Simple&#xff08;简单模式&#xff09; 生产者代码 消费者代码 ?编辑 Work Queue&#xff08;工作队列&#xff09; 生产者代码 消费者代码 Publish/Subscribe&#xff08;发布/订阅&#xff09; 生产者代码 消费者代码 Routing&#x…

【数据挖掘】NumPy

NumPy 是 Python 中一个用于进行科学计算的基础库&#xff0c;它提供了高效的数组操作和数学运算功能。在数据挖掘中&#xff0c;NumPy 被广泛应用于数据预处理、特征工程、算法实现等方面&#xff0c;尤其是在处理大规模数据时&#xff0c;因其提供的高效运算和矩阵操作的能力…