数学函数,字符和字符串
数学函数
- cmath头文件中提供了非常多有用的函数来执行常用的数学功能。
三角函数
功能 | 描述 |
---|---|
sin(radians) | 返回以弧度表示的角度的正弦值 |
cos(radians) | 返回以弧度表示的角度的余弦值 |
tan(radians) | 返回以弧度表示的角度的正切值 |
asin(radians) | 返回正弦函数的弧度角度值 |
acos(radians) | 返回余弦函数的弧度角度值 |
atan(radians) | 返回正切函数的弧度角度值 |
指数函数
功能 | 描述 |
---|---|
exp(x) | 返回e的x次方的值 |
log(x) | 返回自然对数的值 |
log10(x) | 返回以10为底的对数的值 |
pow(a,b) | 返回a的x次方的值 |
sprt(x) | 返回x的平方根 |
近似函数
功能 | 描述 |
---|---|
ceil(x) | x被向上取整到一个最接近它的整数,为double类型 |
floor(x) | x被向下取整到一个最接近它的整数,为double类型 |
min(),max(),abs()函数
- 函数都定义在cstdlib头文件下
字符数据类型和操作符
- 一个字符数据类型代表着一个字符
- 字符串文字必须被双引号括起来(“ “)
- 一个字符文字:单引号括起啦
从键盘读取一个字符
char ch;
cin>>ch;
cout<<ch<<endl;
特殊字符的转义字符
cout<<"He said \" Programming is fun"<<endl;
数值类型和字符类型之间的相互转换
- 一个字符能被转换为任何数值类型,反之亦然
- 当一个整数被转换为一个字符时,只有低八位能被使用
- 当一个浮点数转换为一个字符类型时,浮点数先转换为int类型,然后再转换为char类型
- char类型被看作是byte长度的整数
char uppercaseLetter = static_cast<char>('A'+(lowercaseLetter - 'a'));//大小写转换
- 大小写字母或者数字判断
if(ch>='A' && ch <= 'Z') //大写字母判断
cout<< ch <<" is an uppercase letter <<endl;
if(ch>='a' && ch <= 'z')//小写字母判断
cout<< ch <<" is an uppercase letter <<endl;
if(ch>='0' && ch <= '9') //数字判断
cout<< ch <<" is an uppercase letter <<endl;
生成随机字符
- 一个字符是用一个整数编码的
a+rand( )%b //返回一个a~a+b的随机数
rand( )% 10 //返回一个0~9的随机数
50+rand( )% 50 //返回~个50-99的随机数
static_cast<char>('a' + rand( )%('z' - 'a' + 1); //生成一个随机的小写字母
static_cast<char>(ch1 + rand( )% (ch2 - ch1 + 1) //生成一个位于ch1与ch2之间的随机字符
字符串类型
- 一个字符串是一序列的字符
- 使用string的数据类型
string message = “Programming is fun";
- 声明一个对象实际上是创建一个对象
- 对象是通过类定义的
- 一个对象是一个类的实例
- 调用一个实例函数的语法是 objectName.functionName(arguments)
- 默认的,一个string被初始化为一个字符串
- string对象的简单函数
函数 | 描述 |
---|---|
length( ) | 返回字符串中的字符个数 |
size( ) | 同上 |
at(index) | 返回字符串中指定位置的字符 |
- 连接字符串 string s1 = s2 + s3;
- 直接连接两个字符串是非法的
- 读取空白字符的方法:getline(cin, s);
格式化控制台输出
操作 | 描述 |
---|---|
setprecision(n) | 设置一个浮点数的精度 |
fixed | 显示指定小数位数的浮点数 |
showpoint | 即使没有小数部分也显示以零补足的小数点后位数 |
setw(width) | 指定打印字段的宽度 |
left | 调整输出到左边 |
right | 调整输出到右边 |
- setprecision操作的作用是知道精度改变之前,一直保持效果
- 如果精度的宽度不足够一个整数,setprecision操作将会被忽略
- 可以用fixed操作来强制数字显示为非科学记数法的形式 cout<<fixed<<21311313.3224
简单的文件输入输出
写入文件
- 首先要声明一个
ofstream
类型的变量:ofstream output;
- 指定文件,需调用output对象的open函数:
output.open("numbers.txt");
- 可通过
ofstream.output("number.txt)
创建一个输出对象和打开这个文件 - 写入数据,使用流插入操作符**<<**
- 输入文件完成后,调用output对象的close函数:
output.close( )
保证程序退出之前,数据已经写入到了文件
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream output;
output.open("number.txt");
output << 95 << " " << 56 << " " << 34;
output.close();
cout << "Done!" << endl;
return 0;
}
读取一个文件
-
首先声明一个
ifstream
类型的变量:ifstream input;
-
用input对象的open函数指定一个文件:
input.open("number.txt");
-
可通过
ifstream.input("number.txt)
创建一个输入对象和打开这个文件 -
读取数据,使用流插入操作符**<<**:
input>>score1>>score2>>score3
; -
调用input对象的close函数:
input.close( )
//从文件中读取数据
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream input;
input.open("number.txt");
int score1, score2, score3;
input >> score1 >> score2 >> score3;
cout << "Total score is " << score1 + score2 + score3 << endl;
input.close();
cout << "Done!" << endl;
return 0;
}