C++标准输入输出流中的控制符
【注】使用前需要导入头文件:#include <iomanip>
①setprecision(n):设置浮点数的精度为n位
当以一般十进制小数形式输出时,n代表有效数字
当以fixed形式和scientific形式输出时,n代表小数所占的位数
②setw(n):设置字段宽度为n位
③setiosflags(ios::fixed):设置浮点数以固定的小数位数显示
④setiosflags(ios::scientific):设置浮点数以指数形式显示
⑤setiosflags(ios::left):输出数据左对齐
⑥setiosflags(ios::right):输出数据右对齐
⑦setiosflags(ios::uppercase):数据以16进制输出时,字母以大写表示
⑧setiosflags(ios::lowercase):数据以16进制输出时,字母以小写表示
⑨setw(n):设置字宽长度为n位
// 对本题:实现各行小数点对齐 -- 书P51
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double a = 123.456, b = 3.14159, c = -3214.67;
// 先统一设置每一字段取2位小数 + 右对齐,这个设置对其后的输出均有效
cout << setiosflags(ios::fixed) << setiosflags(ios::right) << setprecision(2) << endl;
// setw(n)只对某一个单独的输出项有效
// 设置每一项字段宽度为10
cout << setw(10) << a << endl;
cout << setw(10) << b << endl;
cout << setw(10) << c << endl;
return 0;
}
借助getchar()和putchar()进行字符的输入输出
putchar(c):向终端输出1个字符,注意每次只能输出1个字符
getchar():从终端输入1个字符,注意每次只能接收1个字符
// 例题3.3 -- 书P53
#include <iostream>
using namespace std;
int main()
{
char c;
c = getchar(); // getchar()函数得到的字符,可以赋给一个字符变量或整型变量
putchar(c + 32);
putchar('\n'); // 换行
return 0;
}
// 例题3.5 -- 书P55
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float a,b,c,x1,x2;
cin >> a >> b >> c;
x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
cout << "x1 = " << x1 << endl;
cout << "x2 = " << x2 << endl;
return 0;
}
运算符优先级:由高到低
!
算术运算符(+ - * /)
关系运算符(>= <= > <)
&& ||
赋值运算符
// 例3.6 -- 书P62
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a,b,c;
cin >> a >> b >> c;
if(a + b > c && b + c > a && a + c > b)
{
double s, area;
s = (a + b + c) / 2;
area = sqrt(s * (s - a) * (s - b) * (s - c));
cout << "area = " << area << endl;
}
return 0;
}
三目运算符下的条件表达式:
表达式1 ? 表达式2 : 表达式3
先求解表达式1:若为真则求解表达式2,表达式2作为整个条件表达式的值
若为假则求解表达式3,表达式3作为整个条件表达式的值
// 例3.7 -- 书P64
#include <iostream>
using namespace std;
int main()
{
char ch; cin >> ch;
if(ch >= 'A' && ch <= 'Z')
{
ch += 32;
cout << ch << endl;
return 0;
}
cout << ch << endl;
return 0;
}
// 例3.8 -- 书P67
#include <iostream>
using namespace std;
int main()
{
int year; cin >> year;
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
cout << "是闰年" << endl;
}
else
{
cout << "不是闰年" << endl;
}
return 0;
}
// 例3.12 -- P76
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double pi = 0.0, c;
long k = 1;
do
{
c = 1.0 / (2 * k - 1);
if(k % 2 == 1) // 如果是奇数项
{
pi += c;
}
else // 偶数项
{
pi -= c;
}
k++;
}while(fabs(c) >= 1e-6);
pi = pi * 4;
cout << pi << endl; // 3.14159
return 0;
}
// 例3.13 -- 书P76
#include <iostream>
using namespace std;
int main()
{
int a[40] = {0};
a[0] = 1, a[1] = 1;
for(int i = 2; i <= 40; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
for(int i = 0; i <= 40; i++)
{
cout << a[i] << " ";
}
return 0;
}
// 例3.14 -- 书P78
#include <iostream>
#include <cmath>
using namespace std;
int is_prime(int n)
{
int flag = 1;
for(int i = 2; i < sqrt(n); i++)
{
if(n % i == 0)
{
flag = 0;
}
}
if(flag == 1)
{
return 1;
}
}
int main()
{
for(int i = 100; i <= 200; i++)
{
if(is_prime(i))
{
cout << i << " ";
}
}
return 0;
}
// 例3.15 -- 书P79
#include <iostream>
using namespace std;
int main()
{
string str;
getline(cin, str);
for(int i = 0; str[i]; i++)
{
if(str[i] >= 'A' && str[i] <= 'Z')
{
str[i] = (str[i] - 'A' + 4) % 26 + 'A';
}
else if(str[i] >= 'a' && str[i] <= 'z')
{
str[i] = (str[i] - 'a' + 4) % 26 + 'a';
}
}
cout << str << endl;
return 0;
}