C++ 语法概括总结
文章目录
- 1 输入输出
- 1.1 注意事项
- 1.2 输入
- 1.2.1 C
- 1.2.2 C ++
- 1.2.3 C/C++ 字符串输入小结
- 1.3 scanf / printf
- 2 条件、数组
- 2.1 if
- 2.2 switch
- 2.3 数组
- 3 指针
- 3.1 指针变量
- 3.2 指针数组
- 4 函数
- 4.1 传递参数:变量
- 4.2 传递参数:数组
- 5 其他
- 5.1 int / long long(空间大小)、OJ最大运算次数(时间大小)
- 5.2 ASCII码
- 5.3 数据类型的转换
- 5.4 逻辑运算符
- 5. 5 条件运算符
- 5.6 typedef
- 5.7 浮点数的比较
1 输入输出
1.1 注意事项
- 一个.cpp文件,最好不要 printf 和 cout 交杂,要么全用C,要么全用C++
- 除了string的输入用cin外,其余任何都用scanf、printf
- 涉及浮点数,都用double
1.2 输入
1.2.1 C
#include<cstdio>
输入 | 停止符(不能读) | 可读 | 输出 | 举例 |
---|---|---|---|---|
scanf | 空格、/n | 当读入%c,可读空白(空格、/n、/t) | printf | |
getchar | 读一个字符【任何】 | putchar |
char ch; ch = getchar(); putchar(ch);
|
|
gets | \n | 读一行char数组【可读 空格,不读 \n】 | puts |
char chs[10]; gets(chs); puts(chs);
|
// 用getchar 输入字符串数组
char str[20];
for(int i=0;i<5;i++){str[i] = getchar();
}
str[5] = '\0'; // 关键
1.2.2 C ++
#include<iostream>
输入 | 停止符(不能读) | 可读 | 输出 | 举例 |
---|---|---|---|---|
cin>>xxx>>… | 空格、/n | cout<<xxx<<… | ||
getline | /n | 读一行char数组 或 string【可读 空格,不读 \n】 |
char chs[10]; string str; cin.getline(chs,10); getline(cin, str);
|
int a;char b[20];double db;string str;cin>>a>>b>>db>>str;cout<<a<<endl<<b<<endl<<setiosflags(ios::fixed)<<setprecision(2)<<db<<endl<<str<<endl;//cin.getline(b,5); //只能读4个+\0cout<<b<<endl;getline(cin,str);cout<<str<<endl;
1.2.3 C/C++ 字符串输入小结
字符串类型 | 是否含有空格 | 输入 |
---|---|---|
char* | 没有 | scanf |
有 | gets(char*); | |
string | 没有 | cin |
有 | getline(cin, string); |
1.3 scanf / printf
#include<cstdio>
#include<iostream>
#include<cmath>using namespace std;const double PI = acos(-1.0);
const int INF = 0x3fffffff; //无穷大, 7个fint main(){int a;scanf("%d",&a);printf("%d",a);printf("%6d",a); // 右对齐,不足6位的补空格printf("%06d",a); // 右对齐,不足6位的补0long long b;scanf("%lld",&b);printf("%lld",b); // 保留小数char c;scanf("%c",&c); // 可读空白(空格、/n、/t)printf("%c",c);double d;scanf("%lf",&d); // %lfprintf("%f",d);printf("%.2f",d);char s[20];scanf("%s",s); // 没有 &printf("%s",s);string str;cin>>str;printf("%s",str.c_str());return 0;
}
2 条件、数组
2.1 if
if(n){ // n != 0... } if(!n){ // n == 0... }
2.2 switch
int a = 1 , b=1;int c = 5;switch(c){case 2:case 3:case 4:printf("%d",a+b); //c=2 || c=3 || c=4break;case 5:printf("%d",a-b);break;default:printf("end");}
2.3 数组
二维初始化:
int arr[3][6] = {{1,2,3},{},{4,5}};
当数组较大(10610^6106)时, 设置全局变量
3 指针
unsigned类型的整数
3.1 指针变量
int *a;int b;a = &b; //a指向b
a的内容:b的地址
- a 等价于 &b
- *a 等价于 b
扩展:
搞懂以下代码
int *a;int b;a = &b; //a指向b//b = 100;printf("*a = %d b = %d a = %d &b = %d\n",*a,b,a,&b);*a = 200; //改变bprintf("*a = %d b = %d a = %d &b = %d\n",*a,b,a,&b);//a ++; // 跨越了一个int存储单元(4B)printf("a = %d\n",a);
3.2 指针数组
int a[5];for(int i=0; i<5; i++){scanf("%d",a+i); // 相当于 scanf("%d", &a[i]);}for(int i=0;i<5;i++){printf("%d ",*(a+i)); // 相当于 printf("%d ",a[i]);}//int *p;p = a; //相当于 p = &a[0];for(; p<a+5; p++){scanf("%d", p);}for(p=a; p<a+5; p++){printf("%d ",*p);}
4 函数
4.1 传递参数:变量
一共有5种情形,对应如下5个swap函数
// 不改变main中变量(函数中的变量是main中的副本)
void swap1(int a, int b){int temp;temp = a;a = b;b = temp;
}//引用:改变main中的变量(函数中的变量是main中的别名)
void swap2(int &a, int &b){int temp;temp = a;a = b;b = temp;
}// 地址传值/指针传值:改变main中的变量
void swap3(int * a, int * b){int temp; // int *temp;temp = *a; // *temp = *a; 运行错误,理由:temp未初始化,存放随机*a = *b;*b = temp;
}// 不改变main中变量
void swap4(int * a, int * b){ int *temp;temp = p;p = q;q = temp;
}// 指针引用:不改变main中变量
void swap5(int * &p, int * &q){ int *temp;temp = p;p = q;q = temp;
}int main(){int a=1, b=2;swap1(a, b);swap2(a, b); // 交换swap3(&a, &b); // 交换swap4(&a, &b); int *p = &a, *q = &b;swap5(p, q);return 0;
}
4.2 传递参数:数组
void fun(int a[], int b[][3]){...
}int main(){int a[10];int b[5][3];fun(a, b);return 0;
}
5 其他
5.1 int / long long(空间大小)、OJ最大运算次数(时间大小)
一般比赛平台,最大运算次数:10710^7107
类型 | 位数 | 可表示范围 |
---|---|---|
int | 32 | −231-2^{31}−231(−2∗109-2*10^9−2∗109) ~~~ 231−12^{31}-1231−1(2∗1092*10^92∗109) |
long long | 64 | −263-2^{63}−263(−9∗1018-9*10^{18}−9∗1018) ~~~ 263−12^{63}-1263−1(9∗10189*10^{18}9∗1018) |
总结:
- x <= 10910^9109 或 32位,用int
- x <= 101810^{18}1018 或 64位,用long long
5.2 ASCII码
小写 = 大写 + 32
字符 | ASCII码 |
---|---|
‘0’ | 48 |
‘A’ | 65 |
‘a’ | 97 |
char c = 117;printf("%c",c);char c = '9';printf("%d",c);
5.3 数据类型的转换
char*(字符串数组)<——> int、double、 char*(字符串数组)
sscanf()和sprintf()
详情见:此文章:3 cstringchar*(字符串数组) <——> string
详情见:此文章:2 stringint <——> double
int a; double db; a = (int)db; db = (double)a;
5.4 逻辑运算符
类型 | 代码 |
---|---|
与 | && |
或 | || |
非 | ! |
位与 | a & b |
位或 | a | b |
位异或 | a ^ b |
取反 | ~ a |
1左移8位:
1<<8 = 282^{8}28
5. 5 条件运算符
int max(int a, int b){return a>b?a:b ;
}
5.6 typedef
当复杂数据类型出现太多,起别名
typedef 数据类型 别名
如:typedef long long LL;
#include<cstdio>
using namespace std;typedef long long LL; int main(){LL a = 23LL;printf("%lld",a);return 0;
}
5.7 浮点数的比较
#include<cstdio>
#include<cmath>using namespace std;const double eps = 1e-8; // 1*10^(-8)// define中定义的函数:变量带(),返回bool
#define Equ(a,b) ( (fabs((a)-(b))) < (eps)) // a==b: b-eps< a <b+eps
#define More(a,b) ( ((a)-(b)) > (eps)) // a>b: a > b+eps
#define Less(a,b) ( ((a)-(b)) < (-eps)) // a<b: a < b-eps
#define MoreEqu(a,b) ( ((a)-(b)) > (-eps)) // a>=b: a > b-eps
#define LessEqu(a,b) ( ((a)-(b)) > (eps)) // a<=b: a < b+epsint main(){double db1 = 4 * asin(sqrt(2.0)/2); // 4 * pi/4double db2 = 3 * asin(sqrt(3.0)/2); // 3 * pi/3// 浮点数的比较printf("%d\n",db1==db2); // 不精确printf("%d\n",Equ(db1,db2)); // 精确// 修正double res = -0.00; //某个结果printf("%f\n",res+eps); // 修正return 0;
}
C++ 语法概括总结相关推荐
- php核心语法,PHP核心语法总结
这些天学习了PHP的核心编程语法,PHP核心语法概括起来不多,大致分为php标签,语法规范.数据类型.变量.常量.当然还有预定义的,还有操作符.循坏等等,最后几天学习了函数,其中数组的常用函数非常多. ...
- python基础语法手册-Python学习手册(第4版)pdf
Python学习手册(第4版) 内容简介 <Python学习手册(第4版)>学习Python的主要内建对象类型:数字.列表和字典.使用Python语句创建和处理对象,并且学习Python的 ...
- Vue模板语法(理解前端渲染)
目录 如何理解前端渲染: 前端渲染方式: 1.原生js拼接字符串: 2.使用前端模板引擎 模板语法概括: 指令? v-cloak解决闪动问题. 数据绑定指令 数据响应式: 双向数据绑定: 事 ...
- java while语句打印三角形_Ruby 和 Java 基础语法比较
前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...
- 动静结合?Ruby 和 Java 的基础语法比较(入门篇)
前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...
- python学习手册条件-Python学习手册(第4版)pdf
Python学习手册(第4版) 内容简介 <Python学习手册(第4版)>学习Python的主要内建对象类型:数字.列表和字典.使用Python语句创建和处理对象,并且学习Python的 ...
- python学习手册中文版免费下载-Python学习手册
Python学习手册第4 版将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者.本书是易于掌握和自学的教程,根据作者Python专家Mark Lutz的著名培训课程编写而成 ...
- Web安全学习 Week1
这周主要学HTML 写个静态百度页面 看懂DOM 写好文件想运行 option+b <h1>这不是一个标题<h1> <p>这不是一个段落<p> 1.网页 ...
- 加入收藏代码_100个原生JavaScript代码片段知识点详细汇总【实践】
作者:小棋子js 转发链接:https://www.jianshu.com/p/b5171efa340f JavaScript 是目前最流行的编程语言之一,正如大多数人所说:"如果你想学一门 ...
- python零基础学习书-Python零基础到进阶必读的书藉:Python学习手册pdf免费下载
提取码:0oor Google和YouTube由于Python的高可适应性.易于维护以及适合于快速开发而采用它.如果你想要编写高质量.高效的并且易于与其他语言和工具集成的代码,<Python学习 ...
最新文章
- 一切都是问题,一切都着落在自身
- @angular/core里的 NgZone -使得Angular不跟踪变化
- VueConf China 2021 《Vue3生态进展-尤雨溪》 Reaction
- linux宝塔类似工具,有没有比宝塔面板更好的linux运维工具?
- OPNFV发布首个版本Arno
- excel报表汇总工具
- keil编译后MCU需要的flash和RAM容量
- c语言分解质因数法求最大公约数,最大公约数求法大全
- 聊一个自己写的MVC框架
- angular 易犯错误
- Python与Anaconda、Jupyter Notebook与Pycharm
- 【每日新闻】华米科技收购Zepp与PEI核心资产;西藏宁算科技与阿里云签署框架合作协议...
- 斜杠‘/‘ 和反斜杠‘\‘
- 【Unet系列】(三)Unet++网络
- React 基础----1
- 运行elevation_mapping流程记录
- 线性代数:裁剪变换(投影变换)(一)
- CodeForces - 764B Timofey and cubes
- bios sgx需要开启吗_win10不重装系统如何开启ahci驱动 快速开启ahci驱动的图文步骤_windows10_Windows系列_操作系统...
- 学生端android版二1班,一起作业学生端安卓版