重新开始 杂类:C++基础

目录

1.输入输出

2 . i++ 与 ++i 

3.结构体

4.二进制


1.输入输出
#include<cstdio>//cin>>,cout
#include<iostream>//printf,scanf

(1) cin , cout输入输出流可直接用于数字,字符

(2)scanf("%数据类型",&变量名称 );

printf("%数据类型", 变量名称 );

整型
printf("%6d",a );
输出的数占6位
浮点型 
printf("%.6f", a );
输出小数点后6位
 

2 . i++ 与 ++i 

i++ 即后加加,原理是:先自增,然后返回自增之前的值
++i 即前加加,原理是:先自增,然后返回自增之后的值

详解


3.结构体

(1)结构体定义

//定义一
struct node {
    int num[100001] , length ;
    node() {//结构体初始化
        memset( num , 0 , sizeof(num) );
        length = 0 ;
    }
}
struct node a , b ;

//定义二
struct node {
    int num[100001] , length ;
    node() {//结构体初始化
        memset( num , 0 , sizeof(num) );
        length = 0 ;
    }
} a , b ;

(2)对结构体的运算符重载

例子为高精度加法

在结构体内部重载

struct node {
	int num[10001] , length;
	
	node() {//结构体初始化 
		memset( num , 0 , sizeof(num) );
		length = 0 ;
	}
	
	// 在结构体内部重载运算符 
	node operator + ( const node &y ) {//重载运算符 
		node z ;
		int len = max( length , y.length ) ;
		int Add = 0 ;
		for( int i = 1 ; i <= len ; ++ i ) {
			z.num[i] = num[i]+y.num[i]+Add ;
			Add = z.num[i]/10 ;
			z.num[i] %= 10 ;
		}
		len ++ ;
		z.num[len] = Add ;
		while( !z.num[len] && len> 1 ) {//0+0 = 0 ,需要保留一位0 
			len -- ;
		}
		z.length = len ;
		return z ;
	}
	
};

在结构体外部重载

struct node {
	int num[10001] , length;
	
	node() {//结构体初始化 
		memset( num , 0 , sizeof(num) );
		length = 0 ;
	}
	
	node operator +( const node &y );在结构体外部重载运算符 
	
};

//在结构体外部重载运算符 
node node::operator +( const node &y ) {//node::operator 该重载运算符仅在node类中能使用 
		node z ;
		int len = max( length , y.length ) ;
		int Add = 0 ;
		for( int i = 1 ; i <= len ; ++ i ) {
			z.num[i] = num[i]+y.num[i]+Add ;
			Add = z.num[i]/10 ;
			z.num[i] %= 10 ;
		}
		len ++ ;
		z.num[len] = Add ;
		while( !z.num[len] && len> 1 ) {//0+0 = 0 ,需要保留一位0 
			len -- ;
		}
		z.length = len ;
		return z ;
} 

 

基础概念

(1)::

::是一个作用域解析运算符,用于指定某个名字的声明或定义在哪个作用域内。在这个例子中,node::operator+表示operator+是一个在node类内部定义的成员函数。

因此,代码中的两个node分别表示不同的作用域。第一个node表示函数返回的值的类型是node类型,而第二个node则表示函数返回的是一个在node类内部定义的成员函数。

(2)public,private,protected

 


4.二进制

推荐博客      (1)       (2)

1.按位与 (&)
0 & 0 = 0、0 & 1 = 0、1 & 0 = 0、1 & 1 = 1
两者全部为true则结果为true,否则为false;

2.按位或(|)
0 | 0 = 0、0 | 1 = 1、1 | 0 = 1、1 | 1 = 1
两者有一个为true则结果为true,否则为false;

3.异或(^)
0 ^ 0 = 0、0 ^ 1 = 1、1 ^ 0 = 1、1 ^ 1 = 0
两者相同为false,不同为true;
可以使用交换律;
0和任何数^,结果为其本身;
任何数和自身^,结果为0。
4. 位移


 

 

5.部分函数应用

1.pow函数

函数原型

double pow(double a,double b);

  注意 pow( x , 1/2 ),默认1/2 为int类型,1/2 = 0 ,应改为 (double)(1/2) 

 

posted @ 2023-09-02 14:38  Nomad_Joe_violet  阅读(3)  评论(0编辑  收藏  举报  来源