整型int
一个整数占用32位(bit),即4字节(Byte),取值范围 -231~(231-1) 即绝对值109以内整数。
长整型long long
一个整数占用64位(bit),即8字节(Byte),取值范围 -263~(263-1) 即绝对值1018以内整数;
当赋予大于231-1的初值时,初值后应加上LL。
浮点型float double
单精度和双精度浮点数分别占用32,64bit;但前者有效精度只有6 ~7位,后者有15 ~16位。
字符型
小写字母ASCII码比大写字母大32。
布尔型
整型常量在赋值给布尔型时会自动转换为true(非零)或false(零);但在计算机中true储存为1,false储存为0。
const常量
const int INF=(1<<30)-1;
const double eps=1e-8;
const double Pi=acos(-1.0);
#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))
fabs(double x)
对double型变量取绝对值
floor(double x) 和 ceil(double x)
对double型变量向下和向上取整
pow(double r,double p)
rp
sqrt(double x)
double型变量算术平方根
log(double x)
double型变量以自然数为底的对数
sin(double x) cos(double x) tan(double x)
正弦,余弦和正切值,参数要求为弧度制
double db=sin(pi*45/180);
printf("%f",db);
0.707107
round(double x)
将double型变量四舍五入,返回值也是double型,需进行取整
double db=round(3.49);
printf("%d\n%d\n",(int)db);
3
break用于跳出循环,continue用于结束当前循环,直接进入下一轮循环
若将整个数组都赋初值0:
//直接用一个大括号表示
int arr[10]={};
//将数组的第一个元素赋值为0
int arr[10]={0};
memset()
memset(数组名,值,sizeof(数组名))
memset是按照字节赋值,因此对于int型整数其4个字节会赋同样的值,一般赋值0或-1
#include
#include
int main(){
int arr[5];
memset(arr,0,sizeof(arr));
for(int i=0;i<5;i++){
printf("%d ",arr[i]);
}
}
0 0 0 0 0
对于一个普通定义的结构体,其内部生成一个不可见的默认构造函数,因此可以不经初始化就定义结构体类型的变量。
struct stuInfo{
int id;
char gender;
//默认生成的构造函数
stuInfo(){
}
};
但是当结构体内变量很多时赋值比较复杂,因此可以重新定义构造函数。
struct stuInfo{
int id;
char gender;
//其中_id _gender也可以是其他不与id gender相同的变量名
stuInfo(int _id,char _gender){
id=_id;
gender=_gender;
}
};
或者可以简化为一行
struct stuInfo{
int id;
char gender;
stuInfo(int _id,char _gender):id(_id),gender(_gender){
}
};
重新定义构造函数后,可以在需要时直接对结构体变量进行赋值
stuInfo stu=stuInfo(1203,'M');
但是重新定义构造函数后,由于默认生成的构造函数被覆盖,不能不经初始化就定义结构体变量。可以将其手动加上,只要参数个数和类型不完全相同,就可以定义任意多个构造函数以适应不同的初始化需要。
struct stuInfo{
int id;
char gender;
//用以不初始化就定义结构体变量
stuInfo(){
}
//只初始化gender
stuInfo(char _gender):gender(_gender){
}
//同时初始化id和gender
stuInfo(int _id,char _gender):id(_id),gender(_gender){
}
};
scanf() printf()
scanf()中,%c格式能够识别空格和换行并将其输出;%s通过空格或换行来识别一个字符串的结束
getchar() putchar()
输入输出单个字节
gets() puts()
gets()用来输入一行字符串,识别换行符作为结束,并将其储存在一维数组中;
在使用scanf()后,若使用gets(),需先用getchar()接受换行符。
puts()用来输出一行字符串,即将一维数组在界面上输出,并跟一个换行。
#include
int main(){
char str[10];
gets(str);
puts(str);
return 0;
}
sscanf() sprintf()
sscanf(str,"%d",&n);
将数组str中的内容以%d的格式写入n中
sprintf(str,"%d",n);
将n中的内容以%d的格式写入str中
cin() cout()
要读入一整行,需使用getline()函数
char str[100];
cin.getline(str,100);
若为string容器,则用如下方式输入
string str;
getline(cin,str);
string.h头文件
#include
#include
int main(){
char str1[10]="abc";
char str2[10]="xyz";
printf("%d\n",strlen(str1));
if(strcmp(str1,str2)>0)
printf("str1>str2\n");
else if(strcmp(str1,str2)<0)
printf("str1);
else
printf("str1=str2\n");
strcpy(str1,str2);
puts(str1);
strcat(str1,str2);
puts(str1);
return 0;
}
3
str1xyz
xyzxyz