cpp基本语法笔记
一.变量、输入输出、表达式和顺序语句
1.固定格式
#include<iostream> using namespace std; int main() { cout << "Hello World" << endl; return 0; }u
2.变量类型
常用:
类型 | 字节 |
bool – > false / true – > 0/1 | 1byte |
char ‘c’, ‘a’, ’ ', ‘\n’ | 1byte |
int -1247483648 ~ 2147483647 | 4byte |
float 1.23, 2.5, 1.235e2 6~7位有效数字 | 4byte |
double 15~16位有效数字 | 8byte |
更长
类型 | 字节 |
long long //-2^63 ~ 2^63-1 | 8byte |
long double //18~19位有效数字 | 16byte |
3.输入输出
a+b
cin输入 cout输出
#include<iostream> using namespace std; int main() { int a,b; cin >> a >> b; //输入,方向 >> cout << a + b << a * b << endl; //输出,方向 <<, endl->回车 return 0; }
scanf输入 printf输出
#include<cstdio> using namespace std; int main() { int a,b; scanf("%d%d", &a, &b); //%d读入整数类型,加&符号 printf("a + b =%d\na * b= %d\n", a + b, a * b); return 0; }
浮点数:
#include<cstdio> using namespace std; int main() { float a,b; scanf("%f%f", &a, &b); //%d读入整数类型,加&符号 printf("a + b =%.2f\na * b= %.3f\n", a + b, a * b); //浮点数用%f,保留几位小数就在中间加点几 return 0; }
char型:
#include<cstdio> using namespace std; int main() { char a,b; scanf("%c%c", &a, &b); //%c读入字符型,%c会读入空格,cin不会 printf("%c%c", a , b); return 0; }
double/longlong型:
#include<cstdio> using namespace std; int main() { double a,b; scanf("%lf%lf", &a, &b); printf("%lf%lf", a , b); long long a,b; scanf("%lld%lld", &a, &b); printf("%lld%lld", a , b); return 0; }
总结
int: %d
float: %f
double: %lf
char: %c
long long: %lld
4.表达式
b+=a -->b = b+a
b-=a -->b = b-a
b*=a -->b = ba
b/=a -->b = b/a
强制类型转换
int->float float->int(取整)
int ->char (ASCII字符表,相互转换)
5.顺序结构
从前往后,从上往下
二、printf语句与判断结构
1.printf输出格式
使用printf时最好加头文件
printf保留小数点后几位
#include<cstdio> #include<iostream> using namespace std; int main() { double f = 138682436874; printf("%.7lf\n", f); return 0; }
左右对齐,保留小数点,空位补零
#include<iostream> #include<cstdio> using namespace std; int main() { int a = 1; int b = 23; int c = 456; double d = 12.45; printf("%5d!\n", a); //占5个空位,右对齐 printf("%-5d!\n", b); //占5个空位,左对齐 printf("%05d!\n", c); //空位填补0,右对齐 printf("%5.1lf!", d); //占5位且保留小数位数为1 return 0; }
2.if语句
①最基本语法if-else
#include<iostream> #include<cstdio> using namespace std; int main() { int score; cin >> score; if (score >= 60) { cout << "及格" << endl; } //一条语句可以省略{} else { cout << "不及格" << endl; } cout << "结束" << endl; return 0; }
②比较运算符
大于 a > b
小于 a < b
大于等于 a >= b
小于等于 a <= b
等于 a == b
不等于a != b
③if-else if
#include<iostream> #include<cstdio> using namespace std; int main() { int grade; cin >> grade; if (grade >= 85) cout << 'A' << endl; else //蕴含着grade<85 { if (grade >= 70) cout << 'B' << endl; else //蕴含着grade<70 { if (grade >= 60) cout << 'C' << endl; else //蕴含着grade<60 { cout << 'D' << endl; } } } } 可优化为——————>(c和cpp中不根据缩进判断语句结束(Python),根据分号判断) #include<iostream> #include<cstdio> using namespace std; int main() { int grade; cin >> grade; if (grade >= 85) cout << 'A' << endl; else if (grade >= 70) cout << 'B' << endl; else if (grade >= 60) cout << 'C' << endl; else cout << 'D' << endl; }
3.条件表达式
(1)与 && and
(2)或 || or
(3)非 ! not
#include <iostream> #include <cstdio> using namespace std; int main() { int a, b, c, d; cin >> a >> b >> c >> d; if (a > b && (c > d || a > d)) cout << "" << endl; if (a > b || c > d && a > d) cout << "" << endl; if (!(a > b)) cout << "" << endl; return 0; }
三、C++中的循环结构
循环语句——代码执行顺序
1.while循环
可以简单理解为循环版的if语句。if语句是判断一次,如果条件成立,则执行后面的语句;while是每次判断,如果成立,则执行循环体中的语句,否则停止。
求1~100中所有数的立方和
#include<iostream> using namespace std; int main() { int i = 1; int sum = 0; while (i <= 100) { sum += i * i * i; i++; } cout << sum << endl; return 0; }
斐波那契数列(水仙花)
f(1) = 1 f(2) = 1
f(n) = f(n-1) + f(n-2) n>=3
#include<iostream> using namespace std; int main() { int a = 1, b = 1; int n; cin >> n; int i = 0; while (i < n - 1) { int c = a + b; a = b; b = c; i++; } cout << a <<endl; return 0; }
避免写出死循环
2.do while循环
do while语句与while语句非常相似。唯一的区别是,do while语句限制性循环体后检查条件。不管条件的值如何,我们都要至少执行一次循环。(不常用)
3.for循环
for (init-statement : condition: expression) //init语句; 条件语句; 表达式 { statement }
init-statement可以是声明语句、表达式、空语句,一般用来初始化循环变量;
condition是条件表达式,和while中的条件表达式作用一样;可以为空,空语句表示true;
expression一般负责修改循环变量,可以为空。
#include <iostream> using namespace std; int main() { for (int i = 0; i < 10; i ++ ) { cout << i << endl; } return 0; }