一些个人编程小技巧的记录纠错

一些编程小技巧的个人总结,方便后期查看:
#include<bits/stdc++.h>
using namespace std;
int INF = 2147483647;
double eps = 1e-8;
#define Equ(a,b) (fabs((a)-(b))<(eps))
#define More(a,b) (((a)-(b))>(eps))
#define Less(a,b) (((a)-(b))<(-eps))
#define MoreEqu(a,b) (((a)-(b))>(-eps))
#define LessEqu(a,b) (((a)-(b))<(eps))

int main(){
//	scanf("%lld  %lf  %f");
//	printf("\\  %%   %05d  %.0f %.1f");
//	double = fabs(double x);
//	%.0f  = floor/ceil(double) 
//	pow(double)  求的是幂次方
//	sqrt也是double         
//	PI = acos(负一。0)   
//	round 四舍五入         
//	strcat是把2接到1上面   
//	sscanf 注意有一题是接受的个数  前面补0
//	sscanf("%d:%lf,%s")可以实现切取
//	二维数组作为参数  【】【n】第二个必须写明
//	*p = &int a 
	const double eqs = 1e-8; 
	double a,b;
	a = 1.23;
	b = 1.2300;
	if(Equ(a,b)) printf("1");
	
}


//
//int main(){
//	strncpy(s,s起始地址,长度即可);
//	特定截取的方式 


//int len(int k){
//	int temp = 0;
//	while(k!=0){
//		temp++;
//		k/=10;
//	}
//	return temp;
//}
//int main(){
//	cout<<len(233)<<endl;
//	int lena = 5;
//	int qian;
//	while(lena > 0){
//		lena--;
//		qian *= 10;
//	}
//	cout<<qian;
//char Toup(char aa) {


//	if(isdigit(aa)) return aa;
//	if(aa >= 'a'&&aa <= 'z') {
//		return aa-32;
//	} else {
//		return aa;
//	}
//}
//int main() {
//	printf("%c",Toup('a'));
//	printf("%c",Toup('A'));
//	printf("%c",Toup('c'));
//	printf("%c",Toup('0'));
//	printf("%c",Toup('Z'));




//
//	memcpy(temp.matrix, matrix, sizeof(matrix));
//	//拷贝数组,二维数组,大小已知的!


//int main() {
//	char a[8][9];
//
//	int t, i, j, k;
//	scanf("%d", &t);
//	k = 1;
//	getchar();
//	while(t--) {
//.......A
//........
//........
//........
//........
//........
//........
//U.......
//		for(i = 0; i < 8; i++) {
//			scanf("%s", a[i]);
//		}


//const int maxn=100000+10;
//const int INF=2*int(1e9)+10;
//#define LL long long
//int cmd(int a,int b) {
//	return a>b;
//}
//int main() {
//	int num[6]= {1,2,4,7,15,34};
//	sort(num,num+6);                           //按从小到大排序
//	int pos1=lower_bound(num,num+6,7)-num;    //返回数组中第一个大于或等于被查数的值
//	int pos2=upper_bound(num,num+6,7)-num;    //返回数组中第一个大于被查数的值
//	cout<<pos1<<" "<<num[pos1]<<endl;
//	cout<<pos2<<" "<<num[pos2]<<endl;
//	cout<<endl;

//	sort(num,num+6,cmd);    // !!!两部技巧!!greater             //按从大到小排序
//	int pos3=lower_bound(num,num+6,7,greater<int>())-num;  //返回数组中第一个小于或等于被查数的值
//	int pos4=upper_bound(num,num+6,1,greater<int>())-num;  //返回数组中第一个小于被查数的值
//	cout<<pos3<<" "<<num[pos3]<<endl;
//	cout<<pos4<<" "<<num[pos4]<<endl;
//	return 0;


//#include<functional>//因为用了greater<int>()
//
//int main() {
//	int a[]= {3,1,4,2,5};
//	int len=sizeof(a)/sizeof(int);//这里切记要除以sizeof(int)!
//	sort(a,a+len,greater<int>());//内置类型的由大到小排序
//	for(int i=0; i<len; i++)
//		cout<<a[i]<<" ";


//	//scanf不能读取空串回车串。。会一直回车无效!!!
//	//必须使用其他!!!get会接受回车  为空串!
//	//同理getline
//	//scanf也可以加个 %【^\n】表示以\n结尾    这个时候很厉害,就跟输入int一样,连续的就进
//	//也可以用单位, while(s【i】 = getchar()!=‘\n’) i++;
//	//                s【i】 = ‘\0’;
//	char s[100];
 方法1
//	gets(s);
 方法2
//	scanf("%[^\n]", s);
 方法3
//	int i = 0;
//	while((s[i]=getchar())!='\n') i++;
//	s[i]='\0';
方法4
//	cin.getline(s,100);



//	bool vis[600]={false};//可以


//memset  对-1 0使用   多看正规书,别乱看博客


//二维数组初始化
int a[100] = {0};
//int a[10000][10000] = {0};
//int main() {
	for(int i =0;i < 100;i++){
		printf("%d ",a[i]);
	}
//	for(int i = 0;i<10000;i++){
//		for(int j=0;j < 10000;j++){
//			printf("%d ",a[i][j]);
//		}
//	}




//struct t {
//	int a;
//	bool b;
//} T[1010];
//int main() {
//
//	for(int i = 0; i < 50; i++) {
//		t test1;
//		printf("test-2 %d %d\n",test1.a,test1.b);
//
//	}
//	// 直接t定义
//	//直接T
//	for(int i = 0; i < 1010; i++) {
//		printf("test-1 %d %d\n",T[i].a,T[i].b);
//	}




//struct t { //最好还是初始化一下,比较保险,如果结构体的值,有需要一个初始值的话,没有覆盖输入,
见p 120实战
//	int name[15];
//	char password[15];
//	bool flag;
//} T[10];//可见这种形式的都是有初始化,只不过为甚name也有初始化???
//int main() {
//	//!!!!!!!!!!!!!!!
//	t tt;
//	t tt1;//这种形式的一定要初始化
//	t tt2;
//	t tt3;
//	t tt4;
//	t tt5;
//	t tt6;
//	printf("name %d\n",tt1.name[5]);
//	printf("%d\n",tt1.flag);
//	printf("name %d\n",tt2.name[9]);
//	printf("%d\n",tt2.flag);
//	printf("name %d\n",tt.name[10]);
//	printf("%d\n",tt.flag);
//	printf("%d\n",tt3.flag);
//	printf("%d\n",tt4.flag);
//	printf("%d\n",tt5.flag);
//	printf("%d\n",tt6.flag);
//	for(int i =0; i < 10; i++) {
//		for(int j = 0; j < 15; j++)
//			printf("%d ",T[i].name[j]);
//		printf("%d   flag bool\n",T[i].flag);
//	}


//	int a[100];
//	for(int i=0;i <100;i++){
//		printf("%d",a[i]);
//	}//main栈内的指针值也得初始化!!!!



//char 和 string 不停读入的方式已经 begin与size的区别
//以及get的方式  都可以c【i】
//		int num = 0;
	string c;
	while(getline(cin,c)) {
		//getline()这个函数是可以读取空格,
		//遇到换行符或者EOF结束,但是不读取换行符的
		sort(c.begin(),c.end());
		//    sort(a.begin(),a.end());
		for(int i =0; i<c.size(); i++)
			printf("%c",c[i]);
		printf("\n");
	}
//
//	char c[220];
//	while(cin.getline(c,220)) {
//		//getline()这个函数是可以读取空格,
//		//遇到换行符或者EOF结束,但是不读取换行符的
//		sort(c,c+strlen(c));
//		//    sort(a.begin(),a.end());
//		for(int i =0; i<strlen(c); i++)
//			printf("%c",c[i]);
//		printf("\n");
//	}




struct t { //最好还是初始化一下,比较保险,如果结构体的值,有需要一个初始值的话,没有覆盖输入,
//见p 120实战
	int name[15];
	char password[15];
	bool flag;
	t(){
		memset(name,0,sizeof(name));
		memset(password,0,sizeof(password));
		flag = 0;
	}
} T[10];//可见这种形式的都是有初始化,只不过为甚name也有初始化???
int main() {
	//!!!!!!!!!!!!!!!
	t tt;
	t tt1;//这种形式的一定要初始化
	t tt2;
	t tt3;
	t tt4;
	t tt5;
	t tt6;
	printf("name %d\n",tt1.name[5]);
	printf("%d\n",tt1.flag);
	printf("name %d\n",tt2.name[9]);
	printf("%d\n",tt2.flag);
	printf("name %d\n",tt.name[10]);
	printf("%d\n",tt.flag);
	printf("%d\n",tt3.flag);
	printf("%d\n",tt4.flag);
	printf("%d\n",tt5.flag);
	printf("%d\n",tt6.flag);
//	for(int i =0; i < 10; i++) {
//		puts(T[i].password);
//	}
}







//	//向上取整的方法  证明书的错误
//	int a = (int)(3.6);
//	int b = round(3.4);
//	int c = round(3.5);
//	int d = round(3.5);
//	int e = round(3.3) + 0.5;
//	int f = round(3.9) + 0.5;
//	printf("%d\n",a);
//	printf("%d\n",b);
//	printf("%d\n",c);
//	printf("%d\n",d);
//	printf("%d\n",e);
//	printf("%d\n",f);


//默认为0;
//	struct t {
//		char name[15];
//		char password[15];
//		bool flag;
//	};
//	t tt;
//	t tt1;
//	t tt2;
//	printf("%d",tt1.flag);
//	printf("%d",tt2.flag);
//	printf("%d",tt.flag);


//单个字符比较
//	char M[18] = {'1' ,'0' ,'X' ,'9' ,'8' ,'7' ,'6' ,'5' ,'4' ,'3','2'};
//	printf("%d",M[1]=='1');


//strcpy后要加\0

//	char a[81];
//	cin.getline(a,81!!!!);

//字符串比较   3333不是222
//char a [3][10] = {
//	"hello",
//	"iam",
//	"iam"
//};
//if(strcmp("hello",a[0]) == 0) printf("dui");
//printf(" %s",a[0]);
//


//1和0
//	bool a = true;
//	int aa = a;
//	bool b = false;
//	int bb = b;
//	cout<<aa<<" "<<bb<<endl;

//	//sscanf只能分两次截取,不可以写在一起
//	sscanf(T_y,"%d",&a_y);
//	sscanf(T_m,"%d",&a_m);


//正则表达式
//char buffer[] = "2423|dfgdfg|329234";
//char str1[20], str2[20], str3[20];
//sscanf(buffer, "%[^|]|%[^|]|%s", str1, str2, str3);
//	printf("%s\n%s\n%s\n", str1, str2, str3);


//	char str[100];
//	char buf1[100];
//	char buf2[100];
//	char buf3[100];
//	int test;
//	strcpy(str, "123456abcdedfANDFS");
//	sscanf(str, "%[0-9]%[a-z]%[A-Z]", buf1, buf2, buf3);
//	printf("%s\n%s\n%s\n", buf1, buf2, buf3);
//	sscanf(str, "%[0-9]%[a-z]%[A-Z]", test, buf2, buf3);
//	printf("%s\n%s\n%s\n", test, buf2, buf3);
//	//只能正则  对于字符串,,int不行


//	char c;
//	scanf("%c",&c);//接受空格


struct s {
	char n[20];//直接浅拷贝
	char nn[2][3];
	int a;
	int b;
	int c;
} mmin,mmax,temp;

int main() {
	mmax.a = 0;
	mmax.b = 0;
	mmax.c = 0;
	for(int i = 0; i < 2; i++) {
		strcpy(mmax.nn[i],"ab");
	}
	mmin.a = 24;
	mmin.b = 21;
	mmin.c = 21;
	mmin = mmax;
	printf("%d %d %d\n",mmin.a,mmin.b,mmin.c);
	puts(mmin.nn[0]);
	puts(mmin.nn[1]);

}






//	int i = 2 > 1;
//	cout<<i<<endl;
//	i = 1 > 2;
//	cout<<i<<endl;
//	i = 1 > 1;
//	cout<<i<<endl;//过 2>1返回值只有1 0 没有-1,即只有大于跟不大于
//	bool a = 1;
//	bool b = -1;// 返回1,因为非0都为true,不
//	bool c = 0;
//	cout<<a<<endl;
//	cout<<b<<endl;
//	cout<<c<<endl;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值