c++复习_第一天(引用+小众考点)
https://en.cppreference.com/w/cpp/io/manip
参考一下,这一部分比较基础,所以就一遍过
eg1:转16进制
#include<iostream>
#include<iomanip>
using namespace std;int main()
{int n;cout << "请输入一个整数:";cin >> n;cout << "十六进制输出为:" << showbase << hex << n << endl;return 0;
}
eg2:表格对齐
#include <iostream>
#include <iomanip>
using namespace std;int main() {// 表头cout << left << setw(10) << "姓名"<< right << setw(5) << "年龄"<< setw(8) << "成绩" << endl;// 学生信息cout << left << setw(10) << "张天一"<< right << setw(5) << 19<< setw(8) << 85.5 << endl;cout << left << setw(10) << "Alice"<< right << setw(5) << 21<< setw(8) << 90.0 << endl;cout << left << setw(10) << "欧阳中天"<< right << setw(5) << 22<< setw(8) << 78.2 << endl;return 0;
}
eg3:设置精度
#include<iostream>
#include<iomanip>
using namespace std;int main()
{double num;cout << "请输入一个浮点数: ";cin >> num;//设置精度为3cout << fixed << setprecision(3);cout << "保留三位小数:" << num << endl;//恢复默认精度cout.unsetf(ios::fixed);cout << setprecision(6); //恢复默认精度cout << "恢复默认精度" << num << endl;return 0;
}
e g4:小数点
//保留小数点后3位
#include<iostream>
#include<iomanip>using namespace std;int main()
{double num;cout << "请输入一个浮点数:";cin >> num;cout << fixed << setprecision(3);cout << "保留3位小数的输出结果为:" << num << endl;return 0;
}
eg5://值传递:不会真正交换主函数中的变量
//地址传递,使用指针,交换主函数变量的值
//引用传递,最简单最安全的方式,直接交换主函数变量
#include<iostream>
using namespace std;//值传递:不会真正交换主函数中的变量
void swapByValue(int a ,int b){int temp = a;a = b;b = temp;
}//地址传递,使用指针,交换主函数变量的值
void swapByAddress(int *a,int *b)
{int temp = *a;*a = *b;*b = temp;
}//引用传递,最简单最安全的方式,直接交换主函数变量
void swapByReference(int& a,int& b)
{int temp = a;a = b;b = temp;
}
int main()
{int x =10,y = 20;//值传递cout << "初值: x = " << x <<", y = " << y << endl;swapByValue(x,y);cout << "main中值传递后: x = " << x <<", y = " << y << endl;//地址传递swapByAddress(&x,&y);cout << "main中地址传递后: x = " << x <<", y = " << y << endl;//引用传递swapByReference(x,y);cout << "main中引用传递后: x = " << x <<", y = " << y << endl;return 0;
}
eg6:函数重载
//重载(overload)函数就是在同一个作用域内几个函数名字相同但形参列表不同。一个函数名对应多个不同的代码。
#include<iostream>
using namespace std;void add(int x,int y)
{cout << "int:" << x + y << endl;
}
void add(float x)
{cout << "float: " << 10 + x << endl;
}
double add(double x,double y)
{return x + y;
}int main()
{add(10.2);add(1,3);return 0;
}
e g7:默认参数
#include<iostream>
using namespace std;void greetings(string name,string greeting = "Hello")
{cout << greeting << "," << name << endl;
}int main()
{greetings("Alice");greetings("Bob","Hi");return 0;
}
e g8:函数重载
#include<iostream>
#include<cmath>
#define PI 3.14
using namespace std;double caculateArea(double radius)
{return PI * radius * radius;
}double caculateArea(double length,double width)
{return length * width;
}double caculateArea(double a ,double b,double c)
{double s = (a + b + c)/2.0;return sqrt(s*(s-a)*(s-b)*(s-c));
}int main()
{cout << "圆的面积" << caculateArea(5.0) << endl;cout << "矩形面积" << caculateArea(4.0,6.0) << endl;cout << "三角形面积" << caculateArea(3.0,4.0,5.0) << endl;return 0;
}
eg9:字符串
#include<iostream>#include<string>using namespace std;int main(){string s;//cin >> s; //无法读取含有空格的字符串getline(cin,s); //这个就可以读取一行的cout << s.length() << endl;cout << s.front() << "," << s.back() << endl;for(auto& ch : s)if(ch == 'a') ch = 'A';cout << s << endl;return 0;}