基础语法冲冲冲

作业介绍

基础语法复习

  • 保存小数字的类型是 double
  • 保存字符的类型是 char
  • 四舍五入保留小数位数的方法如下
#include <bits/stdc++.h>
using namespace std;
int main()
{
	cout << fixed << setprecision(2) << 3.1415926;  // 单纯保留几位有效数字
    printf("%.4f",3.1415926);  // 结果是3.1416,四舍五入
    return 0;
}
  • int 类型之间做除法,结果算的是商,若需要小数结果,应切换为 double
  • 做题步骤
  1. 首先读题,搞清楚题目意思
  2. 写好输入格式,题目输入几个变量,每个变量定义的类型
  3. 按照输出格式写好代码,有些题目需不需要换行等等

long long 和 int 的优缺点

优点: long long 范围大

long long : 9101891018-9 * 10 ^ {18} \sim 9 * 10^{18}

int : 21092109-2 * 10 ^ 9 \sim 2 * 10 ^ 9

缺点:

long long 更加消耗内存,它需要的存储空间大, 计算速度慢于 int

总结:

合适的情况选择合适的数据类型,不要无脑去 long long

自动类型转换与强制类型转换

自动类型转换,例如 char 的变量和 int 的变量参与运算,结果为 int,其转换规则为,范围小的朝范围大的靠拢,类似于大鱼吃小鱼。

强制类型转换,可以借助以下方法实现。

char a;
cin >> a;
cout << (int)a;

通过 (类型名)变量名 来实现对结果的转换,例如 【打印 ASCII 码】 一题中就可以使用强制类型转换。

大小写互相转换

由于相同字母大小写的 ASCII 码差值为 3232,故可以借助这个数字实现大小写转换。

char a;
cin >> a; // 输入一个小写字母
char A = a - 32; // 小写转大写是减去 32,反之为加 32
cout << A;

基础运算符

  • 常规运算符,加减乘除, + - * /

用法和数学上相同,运算的优先级也是先乘除后加减,如果有括号就先算括号内的。

  • 自增,自减运算符 ++,--

在对单个变量使用时,等同于对该变量的数值加 11 或减去 11

例如

int a = 10;
a++; // ++a;
cout << a; // 结果都是 11
int a = 10;
a--;//--a;
cout << a; // 结果是 11
  • 取余运算符 %

作用为获取被除数除以除数的余数,例如 a % b

需要注意 % 左右两边必须为整数类型。

并且 bb 不能为 00,也就是 00 不能作为除数。

重点 如何将任何一个数字 nn 通过数学运算把每一位拆出来。

  • 任何一个数字对 1010 取余的结果是个位,例如 123 % 10 的结果就是 33

接下来我们只需要重复以下步骤即可

  1. 首先对该数字除以 1010 将个位抹去

  2. 在对新的数字 % 10 来获取新的个位。

例如

1234 % 10 = 4; // 个位
1234 / = 10; // 变为 123
123  % 10 = 3; // 十位
123 / = 10; // 变为 12
12   % 10 = 2; // 百位
12 / = 10; // 变为 1
1    % 10 = 1; // 千位
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int z = n % 10; // 个位
    n /= 10;
    int y = n % 10; // 十位
    n /= 10;
    int x = n % 10; // 百位
    cout << z << y << x;
    return 0;
}

bool 类型

布尔类型,结果只有 1100,或者说 truefalse。在实际情况中,所有的非 00 数字都代表真,只有 00 代表假。

bool a = 105;
cout << a; // 结果显示 1 代表真
a = true;
cout << a;// 结果显示 1 代表真
bool b = 0;
cout << b; // 显示 0 代表假
b = false;
cout << b;// 结果显示 0 代表假

常见运算符总结

运算符 含义 举例 备注
++ 加法 cout << a + b;
== 赋值 int a = 5; 一个等号是赋值
- 减法 cout << a - b;
* 乘法 cout << a * b;
// 除法 cout << a / b; 注意结果类型
%\% 取余 cout << a % b; 获取 aa 除以 bb 的余数,a,ba,b 都必须是整数
>> 大于号 cout << (a > b); 结果类型为 bool
>=>= 大于等于号 cout << (a >= b);
<< 小于号 cout << (a < b);
<=<= 小于等于号 cout << (a <= b);
==== 等于号 cout << (a == b);
!=!= 不等于号 cout << (a != b);
&&\&\& 逻辑与 cout << (10 <= n && n <= 99); 结果类型为 bool,只有 && 两边的条件都成立,整个式子结果才为 true
|| 逻辑或 cout << (10 <= n || n <= 99); 结果类型为 bool|| 两边的条件只要有一个成立,整个式子结果就为 true
!! cout << (!(a>=99)) 结果类型为 bool,对原来式子结果取反,原来为真取反后为假。

if 语句

格式:

if (表达式)
{
   代码 1;
   代码 2;
   ……
}

只要表达式的结果成立,那么花括号括起来的代码都会被执行。

例如

if (1) // 非 0 结果多是 true 都成立
{
  cout << "yes";
}
int a = 5, b = 3;
if (a > b) // 5 > 3 成立会执行
{
  cout << "yes";
}

注意事项

多个 if 语句并列,它们之间都是互相独立的,成立的就都执行

int a = 5, b = 3;
if (a > b) // 5 > 3 成立会执行
{
  cout << "yes";
}

if (a % 2 == 1) // 5 除以 2 的余数是 1 成立执行
{
  cout << "yes";
}

if - else 语句

if - else 语句意味如果否则,即如果表达式成立则执行 if 内部的代码,否则执行 else 内部的代码

if (4 % 2 == 0)
{
  cout << "yes";
}
else
{
  cout << "no";
}

注意

if - else 是一个整体,if 是可以单独出现,else 不能单独出现必须和 if 搭配使用。

重要应用

  • 判断一个数字 aa 是不是 bb 的倍数。

可以通过 if (a % b == 0) 是否成立来判断。

例如 if (a % 2 == 0) 可以判断 aa 是不是偶数。

  • 交换两个变量的数值。

交换两个变量的数值必须借助中间变量来实现。

例如交换 a=5,b=3a=5,b=3 使得 aa 保存 33bb 保存 55

int a = 5, b = 3;

cout << "交换前" << endl;
cout << a << " " << b << endl;

int temp = a;
a = b;
b = temp;

cout << "交换后" << endl;
cout << a << " " << b << endl;
  • 求三个数字的最大值

例如输入三个数字 a,b,ca,b,c 求它们三个的最大值。

思路

  1. 先设定一个最大值变量,例如为 mx 该变量需要初始化一个较小的数字,具体多小呢?

需要小于等于将来可能的结果,那么将来可能的结果需要我们自己结合数据范围和题目去分析。

  1. 用该变量不断地和 a,b,ca,b,c 比较,更新迭代即可。
#include<iostream>
using namespace std;
/*
int : -20亿 ~ 20亿 -2*10^9 ~ 2*10^9
long long : - 9*10^18 ~ 9*10^18 
*/
int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	//最大值变量一定要初始化一个很小的数字,小于等于将来可能的结果
	int mx = 0; 
	//核心做法:用 mx 不断地和 a,b,c 比较然后更新 mx 的值即可。
	if (a > mx)
	{
		mx = a;	
	} 
	if (b > mx) // 实际就是 b > a 
	{
		mx = b;	 // mx 就重新赋值为 b 
	} 
	if (c > mx) // 实际就是 a,b 的较大值和 c 去比较的 
	{
		mx = c; // mx 就重新赋值为 c 
	}
	cout << mx;
	return 0;
}

求最小值同理

#include<iostream>
using namespace std;
/*
int : -20亿 ~ 20亿 -2*10^9 ~ 2*10^9
long long : - 9*10^18 ~ 9*10^18 
*/
int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	//最小值变量一定要初始化一个很大的数字,大于等于将来可能的结果
	long long mn = 1e10; 
	//核心做法:用 mn 不断地和 a,b,c 比较然后更新 mn 的值即可。
	if (a < mn)
	{
		mn = a;	
	} 
	if (b < mn) // 实际就是 b < a 
	{
		mn = b;	 // mn 就重新赋值为 b 
	} 
	if (c < mn) // 实际就是 a,b 的较小值和 c 去比较的 
	{
		mn = c; // mn 就重新赋值为 c 
	}
	cout << mn;
	return 0;
}

给定三个数字 a,b,ca,b,c 实现从小到大排序。

  • aa 保存三个变量里最小的数字
  1. 先比较 a,ba,baa 大于 bb,交换 a,ba,b 的值,经过这个操作,aa 保存了 a,ba,b 的较小值。
  2. 在比较 a,ca,c,若 aa 大于 cc,交换 a,ca,c,经过这个操作,aa 保存了 a,b,ca,b,c 的较小值。

此时由于 b,cb,c 大小关系不确定,故而在比较 b,cb,c 的大小关系,若 b>cb>c 则交换 b,cb,c 的值。

若题目需要从大到小排序,同理实现即可,将所有的大于改为小于即可。

#include<iostream>
using namespace std;
/*
int : -20亿 ~ 20亿 -2*10^9 ~ 2*10^9
long long : - 9*10^18 ~ 9*10^18 
*/
int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	if (a > b) // 若 a 大于 b 需要交换 a 和 b 
	{
		int temp = a;
		a = b;
		b = temp;
	}
	// 经过第一个 if a 保存的就是 a 和 b 的较小值
	if (a > c)
	{
		int temp = a;
		a = c;
		c = temp;	
	} 
	// 经过第二个 if a 保存的就是 a,b,c 的最小值
	// 但是 b,c 的大小还不确定
	if (b > c)
	{
		int temp = b;
		b = c;
		c = temp;
	} 
	cout << a << " " << b << " " << c;
	return 0;
}
  • ifelse ifelse ifelseif- else\ if - else\ if \cdots else

中间可以写多个 else if(表达式)

基本框架如下

if (表达式)
{
  代码;
}
else if (表达式)
{
  代码;
}
else
{
  代码;
}

需要注意 else if(表达式) 不能脱离 if() 单独出现

这些多分支,最终只会执行一行

状态
已结束
题目
1
开始时间
2026-3-13 0:00
截止时间
2026-3-20 23:59
可延期
24 小时