C++学习知识

C++知识小菜单:

备赛蓝桥杯过程中的一些小知识积累,持续更新中!


文章目录

  • C++知识小菜单:
    • 1.小数取整:
    • 2.小数点后保留几位:
    • 3.数字占几位字符:
    • 4. 求x 的 y 次幂(次方)
    • 5. 求平方根
    • 6. 万能头文件
    • 7. 各个数字类型的范围
    • 8. 字符串和整型之间的转化
    • 9.向上向下取整
    • 10.冒泡排序
    • 11.判断质数
    • 12.去掉数组中的重复数据
    • 13. 计算绝对值
    • 14.字符的大小写转化
    • 15.C语言中sscanf函数
    • 16.递归求括号种类
    • 17.求阶乘
    • 18.判断是否闰年
    • 19. 求时间差(特殊的输入方法)
    • 20.最小公倍数和最大公约数
    • 21.背包问题(动态规划)
    • 22. 动态规划入门(硬币种类问题)
    • 23.

1.小数取整:

需要包含的头文件:

#include <cmath>

代码示例:

float num1=3.14;
int ceil_num=(ceil)num1;//ceil_num=4
int floor_num=(floor)num1;//floor_num=3

2.小数点后保留几位:

需要包含的头文件:

#include <iomanip>

代码示例:

float num1=3.1415926525;
cout<<setprecision(5)<<fixed<<num1<<endl;//3.14159
cout<<setprecision(2)<<fixed<<num1<<endl;//3.14

3.数字占几位字符:

需要包含的头文件:

#include <iomanip>

代码示例:

cout << right << setw(2) << 1 <<" "<< setw(2) << 2 <<" "<<setw(2) <<3<<" "<<setw(2) <<4<< endl;
cout << left << setw(2) << 12 <<" "<< setw(2) << 13<<" " <<setw(2) <<14<<" "<<setw(2) <<right<<5<< endl;
cout<<left<<setw(2)<<11<<" "<<setw(2)<<16<<" "<<setw(2)<<15<<" "<<right<<setw(2)<<6<<endl;
cout<<right<<setw(2)<<10<<" "<<setw(2)<<9<<" "<<setw(2)<<8<<" "<<setw(2)<<7<<endl;
//rigth是右对齐,left是左对齐,setw()表示该数字占几位
//如果没有using namespace std,需要在前面加std::,如cout<<std::left<< 

输出示例:
在这里插入图片描述

4. 求x 的 y 次幂(次方)

需要包含的头文件:

#include <math.h>

代码示例:

double a=pow(2,5);//a=32

5. 求平方根

需要包含的头文件:

#include <math.h>

代码示例:

#include<math.h>
#include<stdio.h>
 
int main(void)
{
    printf("%lf",sqrt(4.0));
 
    return 0;
}

6. 万能头文件

需要包含的头文件:

#include <bits/stdc++.h>

代码示例:

#include <bits/stdc++.h>

int main()
{
	// write code here
	
	return 0
}

它是C++中支持的一个几乎万能的头文件,几乎包含所有的可用到的C++库函数。以后写代码就可以直接引用这一个头文件了,不需要在写一大堆vector、string、map、stack……

7. 各个数字类型的范围

整形 int 16位:-32768至+32767
无符号整型 unsigned int 16位:0至65535
短整型 short int 16位:-32768至+32767
无符号短整型 unsigned short int 16位:0至65535
长整型 long 32位:-2147483648至2147483647(-263~263-1)

8. 字符串和整型之间的转化

字符串转整型代码示例:

#include <iostream>
using namespace std;
#include <typeinfo>

int main(){
	
	
	string str="12345";
	cout<<str<<endl;
	
	//typeid(a).name()是查看数据类型 
	int a=str[0]-'0';//-0是为了将字符串转换为普通数字
	cout<<"a="<<a<<" "<<typeid(a).name()<<endl;int
	

	char b=a+'0';//+0是为了将数字变成字符串 
	cout<<"b="<<b<<" "<<typeid(b).name()<<endl;//char
	
	
	return 0;
}

运行截图:
在这里插入图片描述

整型转字符串型代码示例

//普通回文数 
bool judge1(int n){
	char buffer[8];
	sprintf(buffer, "%d", n);
	for(int i=0;i<4;i++){
		if(buffer[i]!=buffer[7-i])
			return false;
	}
	return true;
	
}

9.向上向下取整

需要包含的头文件:

#include <math.h>

代码示例:

cout<<floor(1.2)<<endl;//向下取整  1
cout<<ceil(1.2)<<endl;//向上取整  2
cout<<round(1.2) <<endl;//四舍五入到最临近的整数  1

10.冒泡排序

代码示例:

//冒泡排序,从小到大
for(int i=0;i<len;i++){
	for(int j=i+1;j<len;j++){
		if(arr[i]>arr[j]){//前一个大于后一个,交换
			int temp=arr[j];//临时变量
			arr[j]=arr[i];//前一个覆盖后一个
			arr[i]=temp;//临时值赋值给前一个
		}
	}
}

使用STL容器,从小到大排序
需要包含的头文件:

#include <algorithm>

代码示例:

#include <iostream>
using namespace std;
#include <algorithm>
int main(){
	int len;cin>>len;
	int arr[len];
	for(int i=0;i<len;i++){
		cin>>arr[i];
	}
	sort(arr,arr+len);
	printf("%d",arr[len-1]-arr[0]);
	return 0;
}

11.判断质数

判断质数不用从2循环到n/2,循环到n的平方根即可
需要包含的头文件:

#include <math.h>

代码示例:

bool zhi(int n){
	if(n==2)return 1;
	for(int i=2;i<=sqrt(n);i++){
		if(n%i==0)return 0;
	}
	
	return 1;
}

12.去掉数组中的重复数据

(1)先排序才去重,利用vector和set容器,缺点是打乱了数组的顺序
以洛谷的一道题目为例:
在这里插入图片描述
答案代码:

#include <iostream>
using namespace std;
#include <algorithm> 
#include <vector>
#include <set> 
int MAX=6553005;
int main(){
	int l,m;cin>>l>>m;
	
	int arr[200];

	for(int i=0;i<2*m;i++){
		cin>>arr[i];
	}
	
	int brr[MAX]={0};
	int len=0;

	
	for(int i=0;i<2*m;i+=2){
		for(int j=arr[i];j<=arr[i+1];j++){
			brr[len]=j;
			len++;
		}
	}
	
	sort(brr,brr+len);
	
	vector<int> v(brr,brr+len);
	set<int> s(v.begin(),v.end());
	v.assign(s.begin(),s.end());
	
	cout<<l-v.size()+1<<endl;	
}

(2)不打乱数组顺序,去掉重复数据

#include<iostream>
using namespace std;

int main() {
	int n, array[100], flag = 1;
	cin >> n;
	for (int i = 0; i<n; i++) {
		cin >> array[i];
		for (int k = 0; k<i; k++) {
			if (array[i] == array[k]) {
				flag = 0;
			}
		}
		if (flag) {
			cout << array[i] << " ";
		}
		flag = 1;
	}
}

在这里插入图片描述

13. 计算绝对值

需要包含的头文件:

#include <math.h>

代码示例:

#include <iostream>
using namespace std;
#include <math.h>
int main(){
	cout<<abs(5-9)<<endl;
	cout<<abs(9-5)<<endl;
	return 0;
}

14.字符的大小写转化

第一种方法:
需要包含的头文件:

#include <ctype.h>

代码示例:

#include <iostream>
using namespace std;
#include <ctype.h>
int main(){
	string s;cin>>s;
	for(int i=0;i<s.size();i++) s[i]=toupper(s[i]);
//	printf("%s",&s);
	cout<<s;
	return 0;
}

运行截图
在这里插入图片描述
说明:
toupper是小写转大写函数,其函数原型:

int toupper(int c)  
{  
    if ((c >= 'a') && (c <= 'z'))  
        return c + ('A' - 'a');  
    return c;  
}

toupper是大写转小写函数,其函数原型:

int tolower(int c)  
{  
    if ((c >= 'A') && (c <= 'Z'))  
        return c + ('a' - 'A');  
    return c;  
}  

它们有一个优点:只会修改英文字母

注意,这两个函数只能一次修改一个字符

第二种方法:

题目示例
在这里插入图片描述

代码示例

#include <bits/stdc++.h>
using namespace std;
int main(){
	
	string s;
	cin>>s;
	
	for(int i=0;i<s.size();i++){
		if(s[i]>='a'&&s[i]<='z'){
			s[i]-=32;
		}
		cout<<s[i];
	}
	
//	char a = 'a'-32;
//	cout<<a<<endl;
	
	return 0;
}

15.C语言中sscanf函数

需要包含的头文件:

#include <cstdio>

函数定义

int sscanf(const char *str, const char * format, ...);

函数说明
sscanf()定义于头文件stdio.hsscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。

返回值
成功则返回参数数目,失败则返回-1(也即EOF)。

例如将数字字符串转换成数字:

代码示例:

#include <iostream>
using namespace std;
#include <stdio.h>
int main(){
	int a;
	char ch[10]="1234";
	sscanf(ch,"%d",&a);
	cout<<a+1;//1235
	return 0;
}

16.递归求括号种类

题目:

在这里插入图片描述

代码示例:

#include <bits/stdc++.h>
using namespace std;

class Solution{
public:
	vector<string>ans;
	vector<string> aa(int n){
		help(n,n,"");
		return ans;
	}
	void help(int l,int r,string a){
		if(l==0 && r==0){
			ans.push_back(a);
			return ;
		}
		
		if(l!=0) help(l-1,r,a+'(');
		if(l<r) help(l,r-1,a+')');
	}
		
};

int main(){
	int n;
	cin>>n;
	Solution s;
	vector<string> rs =s.aa(n);
	for(int i=0;i<rs.size();i++){
		cout<<rs[i]<<endl;
	}
	return 0;
}

17.求阶乘

代码示例:

#include <bits/stdc++.h>
using namespace std;

//求全排列 
typedef long long ll; 
ll c(int a,int b){
	ll res=1;
	for(int i=a,j=1;j<=b;i--,j++){
		res = res*i/j;
	}
	return res;
} 

int main(){
	
	int a,b;
	cin>>a>>b;
	cout<<c(a,b);
	
	return 0;
}

18.判断是否闰年

代码示例:

//闰年2月29天,平年2月28天
bool judge(int year){
	if( (year%4==0&&year%100!=0) || year%400==0 ){
		return true;
	}else{
		return false;
	}
}

19. 求时间差(特殊的输入方法)

题目
在这里插入图片描述

代码示例:

#include <bits/stdc++.h>
using namespace std;

int second = 1000;
int minute = 60*1000;
int hour = 60*60*1000;

int main(){
	
	int h,m,s;
	int h1,m1,s1;
	int h2,m2,s2;
	scanf("%d:%d:%d",&h,&m,&s);
	scanf("%d:%d:%d",&h1,&m1,&s1);
	
	int t=h*hour+m*minute+s*second;
	int t1=h1*hour+m1*minute+s1*second;	
	int rs = t1-t;
	
	h2 = rs/hour;
	rs%=hour;
	m2 = rs/minute;
	rs%=minute;
	s2=rs/second;
	printf("%02d:%02d:%02d",h2,m2,s2); 
	
	
	return 0;
} 

20.最小公倍数和最大公约数

题目示例:

在这里插入图片描述

代码示例:

#include<bits/stdc++.h>
using namespace std;

//最大公约数 辗转相除法(欧几里得算法) 
int gcd(int x,int y){
	return !y?x:gcd(y,x%y);
} 

//最小公倍数 
int lcm(int x,int y){
	return x*y/gcd(x,y); 
} 

int main(){
	
	cout<<gcd(2,4)<<endl;
	cout<<lcm(2,4)<<endl;

	return 0; 
} 

21.背包问题(动态规划)

代码示例:

#include <bits/stdc++.h>
using namespace std;

//背包问题 i表示偷前i件背包,j表示当前背包的容量,返回总价值
int f[5][9]={0}; 
int w[5]={0,2,3,4,5};//背包重量
int v[5]={0,3,4,5,8};//背包的价值 

int main(){
	int i,j;
	memset(f,0,sizeof(f));
	for(int i=1;i<5;i++){
		for(int j=1;j<9;j++){
			if(w[i]>j)//背包重量大于当前的容量
				f[i][j]=f[i-1][j];//偷不了
			else{//背包容量够,可以选择偷或者不偷
				//			选择不偷   选择偷 
				f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+v[i]);
			} 
		}
	} 
	
	for(int i=0;i<5;i++){
		for(int j=0;j<9;j++){
			printf("f[%d][%d]=%d\n",i,j,f[i][j]);
		}
	} 
	return 0;
}

22. 动态规划入门(硬币种类问题)

需要包含的头文件:

#include <math.h>

代码示例:

#include <bits/stdc++.h>
using namespace std;

#define MAX 10000

int n;
int coin[MAX];//n种硬币

int sum;
int f[MAX];//f[i]表示当金额为i时所需要的最少硬币数目 

void dp(int m){
	f[0]=0;
	for(int i=1;i<=sum;i++){//金额从0开始 
		f[i]=MAX;
		for(int j=0;j<n;j++){//查看每一枚硬币的面值 
			if( (i-coin[j])>=0 && (f[i-coin[j]]!=MAX) ){//i-coin[j]表示有该方案,(f[i-coin[j]]!=MAX)表示前一种方案有解 
				f[i]=min(f[i],f[i-coin[j]]+1);//状态转移方程,		
			} 
		}
	} 
} 


int main(){
	cin>>n;//硬币的种类数 
	for(int i=0;i<n;i++){
		cin>>coin[i];
	}
	cin>>sum;//输入需要的金额数 
	
	dp(sum);
	
	cout<<((f[sum]==MAX)?-1:f[sum])<<endl;//凑齐sum金额需要的最少硬币数目 
	
	for(int i=0;i<=sum;i++){
		cout<<"i="<<i<<":";
		cout<<f[i]<<" "<<endl;
	} 
	return 0;
}

23.

需要包含的头文件:


代码示例:



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/538161.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Security——13,认证成功失败注销成功处理器

认证成功&&失败&&注销成功处理器 说明&#xff1a;一、认证成功处理器1.1 自定义成功处理器1.2 配置自定义成功处理器 二、认证失败处理器2.1 自定义失败处理器2.2 配置自定义失败处理器 三、登出成功处理器3.1 自定义登出处理器3.2 配置登出处理器 四、完结撒…

NineData创始人CEO叶正盛受邀参加『数据技术嘉年华』的技术大会

4月13日&#xff0c;NineData 创始人&CEO叶正盛受邀参加第13届『数据技术嘉年华』的技术大会。将和数据领域的技术爱好者一起相聚&#xff0c;并分享《NineData在10000公里跨云数据库间实时数据复制技术原理与实践》主题内容。 分享嘉宾 叶正盛&#xff0c;NineData CEO …

node后端上传文件到本地指定文件夹

实现 第一步&#xff0c;引入依赖 const fs require(fs) const multer require(multer) 第二步&#xff0c;先设置一个上传守卫&#xff0c;用于初步拦截异常请求 /*** 上传守卫* param req* param res* param next*/ function uploadFile (req, res, next) {// dest 值…

【刷题】图论——最小生成树:Prim、Kruskal【模板】

假设有n个点m条边。 Prim适用于邻接矩阵存的稠密图&#xff0c;时间复杂度是 O ( n 2 ) O(n^2) O(n2)&#xff0c;可用堆优化成 O ( n l o g n ) O(nlogn) O(nlogn)。 Kruskal适用于稀疏图&#xff0c;n个点m条边&#xff0c;时间复杂度是 m l o g ( m ) mlog(m) mlog(m)。 Pr…

小鸡宝宝考考你每匹斑马身上的条纹都不相同吗?蚂蚁庄园4.13答案

蚂蚁庄园是一款爱心公益游戏&#xff0c;用户可以通过喂养小鸡&#xff0c;产生鸡蛋&#xff0c;并通过捐赠鸡蛋参与公益项目。用户每日完成答题就可以领取鸡饲料&#xff0c;使用鸡饲料喂鸡之后&#xff0c;会可以获得鸡蛋&#xff0c;可以通过鸡蛋来进行爱心捐赠。其中&#…

数学基础:深度学习的语言

数学基础&#xff1a;深度学习的语言 概述 在深度学习的世界里&#xff0c;数学不仅仅是一套工具&#xff0c;它是构建、理解和优化深度学习模型的基石。从向量空间的概念到复杂的优化算法&#xff0c;数学的每一个分支都在深度学习的发展中扮演着关键角色。本文的目标是通过深…

2024-4-5修改vscode的代理

今天在vs code 上面配置go环境的时候出现了以下的报错&#xff1a; 2024-04-05 16:18:00.786 [info] Installing golang.org/x/tools/goplslatest FAILED 2024-04-05 16:18:00.786 [info] { “code”: 1, “killed”: false, “signal”: null, “cmd”: “E:\Go\bin\go.exe in…

如果你想在Nomad Web中操作Excel数据

大家好&#xff0c;才是真的好。 没有意外&#xff0c;我猜你也会想在Nomad Web中操作Excel数据&#xff0c;毕竟你在Notes客户机中就是这样操作的。 不过&#xff0c;一个运行在浏览器中&#xff0c;一个运行在Notes客户机&#xff08;操作系统&#xff09;中。因此&#xf…

个人博客项目笔记_05

1. ThreadLocal内存泄漏 ThreadLocal 内存泄漏是指由于没有及时清理 ThreadLocal 实例所存储的数据&#xff0c;导致这些数据在线程池或长时间运行的应用中累积过多&#xff0c;最终导致内存占用过高的情况。 内存泄漏通常发生在以下情况下&#xff1a; 线程池场景下的 ThreadL…

【力扣题】关于单链表和数组习题

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

蓝桥杯-单片机基础20——第14届省赛真题代码详解

网上传言说14届最难&#xff0c;实际做下来感觉确实是这样的 本试题&#xff0c;需要将矩阵键盘短接&#xff0c;J3的555定时器输出口与P34短接 1.比赛题目 2.编程的大致思路 首先&#xff0c;完成基础代码与数码管的不同窗口&#xff0c;定义大部分要用到的变量&#xff0c…

Qt/QML编程之路:HVAC control(51)

空调控制是智能座舱的重要组成部分。传统汽车里,空调控制一般通过机械按钮实现,比如内循环、空调on/off开关、空调风量调节、专门的前挡风玻璃吹风加热等,出风口可以手动调节。 过去很多年一直是机械按键,随着新能源汽车的大势所趋,空调控制方式也逐渐被颠覆。 现在这些控…

【自然语言】使用词袋模型,TF-IDF模型和Word2Vec模型进行文本向量化

一、任务目标 python代码写将 HarryPorter 电子书作为语料库&#xff0c;分别使用词袋模型&#xff0c;TF-IDF模型和Word2Vec模型进行文本向量化。 1. 首先将数据预处理&#xff0c;Word2Vec 训练时要求考虑每个单词前后的五个词汇&#xff0c;地址为 作为其上下文 &#xf…

如何开辟动态二维数组(C语言)

1. 开辟动态二维数组 C语言标准库中并没有可以直接开辟动态二维数组的函数&#xff0c;但我们可以通过动态一维数组来模拟动态二维数组。 二维数组其实可以看作是一个存着"DataType []"类型数据的一维数组&#xff0c;也就是存放着一维数组地址的一维数组。 所以&…

CRMEB 多商户和多店版的区别

&#xff08;1&#xff09;两个系统根本属性不同 CRMEB多商户是一款B2B2C多业态商家入驻平台系统&#xff0c;通俗点说&#xff0c;就是一个商城系统有多个商家运营各自的店铺。 多商户系统具有联营、自营、招商、混合等多种运营模式&#xff0c;主要用来构建类似京东、淘宝的…

【二分算法】

17. 二分查找&#xff08;easy&#xff09; 算法流程&#xff1a; 算法代码&#xff1a; int search(int* nums, int numsSize, int target) {// 初始化 left 与 right 指针int left 0, right numsSize - 1;// 由于两个指针相交时&#xff0c;当前元素还未判断&#xff0c;因…

2024最新仿默往IM即时通讯系统源码(PC+WEB+IOS+Android)客户端

简介: 2024最新仿默往IM即时通讯系统源码(PC+WEB+IOS+Android)客户端 系统功能配置灵活、海量并发、稳定可靠、数据安全,2小时快速部署、数据安全、单聊群聊、系统通知等通信功能,支持App、PC、Web等多端快速接入。 群功能:设置群二维码,群公告,昵称,头像,群共享文件…

零基础教程|四步学会自制宣传手册

在当今竞争激烈的市场中&#xff0c;一本精美而引人注目的宣传手册是吸引客户和推广产品的重要工具。但对于许多人来说&#xff0c;制作宣传手册似乎是一项艰巨的任务&#xff0c;特别是对于零基础的人来说。然而&#xff0c;通过以下四个简单的步骤&#xff0c;您也可以轻松学…

解决redis乱码问题

目录 1.问题 2.查看redis序列化机制 3.设置redis的序列化器 1.问题 在使用redis最为缓存时&#xff0c;发现key乱码问题 这是由于redis的序列化机制导致的 2.查看redis序列化机制 3.设置redis的序列化器 Configuration Data public class RedisConfig {/*** redis序列化*…

应急响应-战前反制主机HIDSElkeid蜜罐系统HFish

知识点 战前-反制-平台部署其他更多项目&#xff1a; https://github.com/birdhan/SecurityProduct HIDS&#xff1a;主机入侵检测系统&#xff0c;通常会有一个服务器承担服务端角色&#xff0c;其他主机就是客户端角色&#xff0c;客户端加入到服务端的检测范围里&#xff…