目录

一、程序

二、分支

三、循环

四、数组

五、字符串

六、文件操作

七、函数

八、结构体

九、模拟

十、高精度

十一、排序

十二、暴力枚举

十三、递推与递归

十四、贪心

十五、二分

十六、搜索

十七、线性表

十八、二叉树

十九、集合

二十、图

二十一、位运算与进制转换

二十二、计数原理与排列组合

二十三、整除理论


一、程序

错误 代码

#include<iostream>
using namespace std;
int main(){
	int n1=10,t1=20,n2=16,t2=10;
	//草的生长速度
	//(对应的牛头数×吃的较多天数-相应的牛头数×吃的较少天数)÷(吃的较多天数-吃的较少天数)
	int gro=(n1*t1-n2*t2)/(t1-t2);
	//原有草量
	//牛吃草的速度×吃的天数-草的生长速度×吃的天数
	int ori=n1*t1-gro*t1;
	//吃的天数
	//原有草量÷(牛吃草的速度-草的生长速度)
	int time=ori/(ori/(n1*t1)-gro);
	cout<<time<<endl;
	return 0;
}

字数反转P5705

//P5705
#include<iostream>
using namespace std;
int main(){
	double n,n1=0;
	//变量使用前查看是否赋值. 
	scanf("%lf",&n);
	int m=10*n;
	while(m!=0){
		n1=m%10+n1*10;
		m /= 10; 
	}
/*
	循环 除法 判断 不要浮点 
	while(n!=0){
		
		n1=(int)n%10+n1*10;
		//取余 只能整数 
		n /= 10;
		cout<<n<<endl; 
	}
*/
	n1/=10;
	printf("%.1lf\n",n1);
	return 0;
} 
/*char
#include<cstdio>
int main(){
	char a,b,c,d;
	scanf("%c%c%c.%c",&a,&b,&c,&d):
	printf("%c.%c%c%c\n",a,b,c,d);
	return 0;
}

 1.单位先统一再计算

小鱼的游泳时间P1425

#include<iostream>
using namespace std;
int main(){
	int h1,m1,h2,m2;
	scanf("%d%d%d%d",&h1,&m1,&h2,&m2);
	m1+=h1*60;
	m2+=h2*60;
	int h=(m2-m1)/60,m=(m2-m1)%60;
	printf("%d %d\n",h,m); 
	return 0;
}

2.cout输出浮点数,默认保留不超过6位有效数字

3.数学函数<cmath>

double sin(double x)

double cos(double x)

double exp(double x)

double log(double x)

double pow(double x,double y)

double sqrt(double x)

double fabs(double x)

double ceil(double x)

double floor(double x)


4.定义常量

const double PI = 3.1415926 

#define PI  3.1415926 

5.命名

1)字母 数字 下划线 -

2)不能数字开头

3)不能和 关键字 重复

6.常见数据类型

7.ASCII表

深入浅出 Java 多线程 pdf 深入浅出程序设计竞赛 pdf_#include

8.char类型的本质是一个不超过127 的整数

9.利用函数方程等预处理来降低编程难度

10.四舍五入

int (ans + 0.5) 

11.数字反转 

可以考虑 用char“分解”成单个字符

12. 常见输入输出占位符

13.setprecision()

c++ setprecision用法详解 (biancheng.net)

深入浅出 Java 多线程 pdf 深入浅出程序设计竞赛 pdf_算法_02

http://c.biancheng.net/view/1340.html14.关闭同步加快cin读入速度

在程序前加

ios::sync_with_stdio(false);

15.浮点数误差

1)可以*10转为整数在计算

16.提交评测与错误自查 

二、分支

1.优先级

2.逻辑运算规则

3.

swith(变量名){
		case 变量可能的情况 1:执行语句1;break;
		case 变量可能的情况 1:执行语句1;break;
		default:执行语句n; 
	}

以点代线  

多个case 

#include<cstdio>
int main(){
	int y,m;
	scanf("%d%d",&y,&m);
	switch(m){
		case 1: case 3: case 5: case 7: case 8: case 10: case 12: 
		printf("%d\n",31);break;
		case 4: case 6: case 9: case 11: 
		printf("%d\n",30);break;
		case 2:
		if(((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) 
			printf("%d\n",29); 
		else
			printf("%d\n",28);
		break;
	} 
	return 0;
}

三、循环

四、数组

五、字符串

1.字符数组

//s为数组名
//s中的每一个元素,都储存了一个不超过127的整数,对应ASCII

//输入
    
    scanf("%s",s)
    cin>>s
//只能读到空格或者换行符
//数组多一个:字符串结束后,加 '\0'

    char c = getchar();
//getchar()函数获得输入数据中的一个字符
//每次读入一个字符

//输出

    printf("%s\n",s) 
    cout<<s;
    
    putchar(c);
//putchar()函数输出一个字符


//结束

//Ctrl+Z  回车 Ctrl+Z(输入EOF标志)

    while(getchar(c)!=EOF)
//如果文件读完,getchar()函数会返回EOF(一个特殊的常量)

#include<iostream>
using namespace std;
int main(){
	char a;
	while(1){
		a=getchar();
		if(a==EOF) break;
		if(a<='z'&&a>='a')
			a-='a'-'A';
		putchar(a);
	}
	return 0;
}
#include<iostream>
using namespace std;
int main(){
	char a[110];
	cin>>a;
	for(int i=0;a[i]!='\0';i++)
		if(a[i]>='a'&&a[i]<='z')
			a[i]-='a'-'A';
	cout<<a<<endl;
	return 0;
}
#include<iostream>
using namespace std;

char a[110];

int main(){
	scanf("%s",a);
	for(int i=0;a[i]!='\0';i++)
		if(a[i]>='a'&&a[i]<='z')
			a[i] -= 'a'-'A';
	printf("%s\n",a);
	return 0;
}

 1)主函数可以递归

#include<bits/stdc++.h>
using namespace std;
char ch;
int main(){
	if(cin>>ch){//判断是否输入 
		if(ch>='a'&&ch<='z')ch+='A'-'a';//转换大小写 
		cout<<ch;//输出 
		main();//递归调用 
	} 
	return 0;//如果没有输入就退出 
}

 2)toupper函数 小写转大写

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

3)tolower 大写转小写

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

圆型的转换 先找偏移量(减去一个最小值) 再取模

#include<iostream>
using namespace std;
int main(){
	char a[60];
	int n;
	scanf("%d%s",&n,a);
	for(int i=0;a[i]!='\0';i++){
	printf("%c",(a[i]-'a'+n)%26+'a');
	}
	return 0;
}

5) 字母减去‘a’转换为数字

2.string类型

//string反转,需包含头文件<algorithmn>
reverse(s.begin(),s.end());


//读入直到空格(不包括空格)
string s;
cin>>s;


//读入直到指定字符ch,这里ch不会被读入到s中,而且好像也不会存在于缓冲区中

string s;
getline(cin,s,ch);//第3个参数省略时默认为'\n'

//字符串截取
string s;
//注意第2个参数是截取的长度而不是结束的下标
s.substr(s,len);

六、文件操作

七、函数

八、结构体

九、模拟

十、高精度

十一、排序

十二、暴力枚举

十三、递推与递归

十四、贪心

十五、二分

十六、搜索

十七、线性表

1.vector

义:vector <data_type> vector_name;

如:vector <int> v;

v.empty()   返回bool型,可以用来判断vector是否为空

v.pop_back()  可以将最尾端的元素删除

v[i]  类似于数组


3.队列

4.列表

十八、二叉树

十九、集合

二十、图

二十一、位运算与进制转换

二十二、计数原理与排列组合

二十三、整除理论