C++算法基础语法-13
计算从某年某月某日到某年你某日的分钟数
#include <bits/stdc++.h>
using namespace std;
int main()
{
int flag=0,answer=0;
for(int year = 2000; year <=2025; year++)
{
for(int month = 1; month <= 12; month++)
{
for(int day = 1; day <= 31; day++)
{
if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
if(day > 31) break;
}
else if(month == 2)
{
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
if(day > 29) break;
}
else
{
if(day > 28) break;
}
}
else
{
if(day > 30) break;
}
if(year==2018&&month==4&&day==21)
{
flag=1;
}
if(flag==1) answer+=24*60;
if(year==2024&&month==6&&day==15)
{
cout<<answer;
break;
}
}
}
}
return 0;
}
ASCII码值、字母大小写转换、'0'~'9'
数字转字符:'A'(65) 'a'(97) '0'(48)
char A = char(65);
char a = char(97);
char c = 'a' + 2; // 'c' = 'a' + 2
char seven = '0' + 7; // '7' = '0' + 7
字符转数字
int a = 'a'; // a: 97
int A = 'A'; // A: 65
int t = 't' - 'a'; // 计算字母间差值
int seven = '7' - '0';
所谓字典序就是以ASCII码排序
两个字符串 abcd 和 abdd 比较大小,从第一个字符开始逐位比较,第一个字符不相等, ASCII码值小谁的字典序就小;若第一个相等,继续逐位比较后续字符
sort() 可以对字符串进行字典序排序,字符按ASCII码值由小到大排列
#include <iostream>
#include <algorithm> // 包含 sort 函数
#include <string>
using namespace std;
int main() {
string str = "cbad";
cout << "原始字符串: " << str << endl;
sort(str.begin(), str.end());
cout << "排序后的字符串: " << str << endl;
return 0;
}
浮点数比较相等
C/C++内置的double类型由相应的二进制存储的,double在计算的时候是会可能丢失精度的,最后进行浮点数比较的时候要注意做一个fabs,检查两个数的差的绝对值是否小于一个很小的正数(称为“epsilon”或“精度阈值”),如果小于这个阈值,就认为这两个数是相等的
#include <iostream>
#include <cmath> // 包含 fabs 函数
using namespace std;
bool compareDouble(double a, double b) {
double epsilon = 1e-6; // 注意精度,默认是1e-6, epsilon代表比较时允许的最大误差
if (fabs(a - b) < epsilon)
return true;
return false;
}
int main() {
double num1 = 0.0000001;
double num2 = 0.0000002;
double num3 = 0.0000001 + 1e-10;
// 比较 num1 和 num2
if (compareDouble(num1, num2))
{
cout << "num1 和 num2 相等" << endl;
} else
{
cout << "num1 和 num2 不相等" << endl;
}
if (compareDouble(num1, num3))
{
cout << "num1 和 num3 相等" << endl;
} else
{
cout << "num1 和 num3 不相等" << endl;
}
return 0;
}