• 个人简介

    笔记:
    字符串的结束标志'\0'
    '\0'ASCII=0
    有结束标志'\0',可以整体输出,可以使用字符串相关函数对其进行处理
    1、'\0'整体是一个字符,所以使用单引号,其ASCLL码为0
    2、所有字符串都是在不确定字符串字符个数的情况下,使用\0表示字符串结束
    以下情况字符串数组中会包含结束标志
    1、对字符串数组进行整体输入
    2、人为修改某个字符为'\0'
    3、对字符串数组进行任何形式的初始化,前提是该字符数组有剩余空间存放'\0'
    4、双引号默认有'\0'
    1、scanf("%s",s); 会被空格打断,也就不能获取
    2、gets(s); 因为安全性问题,最新的c++已经不再支持
    3、fgets(s,n.stdin); 从标准输入读入时,会将行末回车符一起覆盖
    1、cin>>s; 会被空格覆盖,也就是不能获取空格
    2、cin.getline(s,n); n为读取字符数量的上限
    double atof(const char*str); 将str转为double进行返回
    #include<stdlib.h>
    

    埃式筛计算质数个数(最省时)

    #include<iostream>
    #define ll long long
    using namespace std;
    bool mk[100000001];
    int main(){
    	int n,cnt=1;
    	cin>>n;
    	for(long long i=3;i*i<=n;i+=2){
    		if(mk[i]==0){
    			for(long long j=i*i;j<=n;j+=i*2){ 
    				mk[j]=1;                             
    			}   
    		}
    	}
    	for(int i=3;i<=n;i+=2){
    		if(mk[i]==0){
    			cnt++;
    		}
    	}
    	cout<<cnt;
    	return 0;
    }
    

    高精度加法-倒序模拟

    #include<bits/stdc++.h>
    using namespace std;
    string a,b,sum;
    int main(){
    	cin>>a>>b;
    	int i=a.size()-1,j=b.size()-1,k=max(i,j),jin=0,s;
    	sum.resize(k+1);
    	for(;k>=0;i--,j--,k--){
    		if(i<0){
    			s=b[j]-'0'+jin;
    		} 
    		else if(j<0){
    			s=a[i]-'0'+jin;
    		}
    		else{
    			s=a[i]-'0'+b[j]-'0';
    		}
    		jin=s/10;
    		sum[k]=s%10+'0';
    	}
    	if(jin){
    		cout<<1;
    	}
    	cout<<sum;
    	return 0;
    }
    
  • 最近活动