C++ 第4章


——***《C++程序设计(Y.D L)》的搬运工***

4.2数学函数

利用#include<cmath>头文件

4.2.1三角函数

正反都是以弧度表示

4.2.2指数函数

exp(x);//e的x次幂
log(x);//以e为底
log10(x);
pow(a,b);//a^b
sqrt(x);//x的平方根

近似函数

ceil(x);//向上取整,为double类型,大于
floor(x);//向下取整,为double类型,小于

max、min、abs

利用#include<algorithm>头文件

max(a,b,c);//最大
max(abc);//最小
abs(x);//绝对值

4.3字符类型数据和操作符

char类型占一个字节,8位
char类型字符可以自增、自减

4.3.1ASCII码

将一个字符映射成他的二进制编码

读取字符

char ch;
cin>>ch;
cout<<ch<<endl;

4.3.3

空白符' ', \t, \f, \r, \n

4.3.4数值类型和字符类型之间的相互转换

一个整数被转换为一个字符时,只有低8位被使用,剩余的部分被忽略掉(没懂
浮点转换为char字符类型,先自动强转为int整型,注意强转是截断不是四舍五入,再转为charchar ch=65.23;//ch='A'
char字符类型转换为int整型int a='A';//'A'对应为65
char字符类型数字进行加减之后变成int整型数字

'a'>'A';//(int)'a'=97,(int)'A'=65

4.4生成随机字符

生成一个随机字符就是生成一个随机数字
字符ASCII码为0-127

3.9生成随机数

利用#include<cstdlib>和#include<ctime>头文件和rand()函数
rand()函数返回的是一个0-RAND_MAX(32767),rand()函数生成的是伪随机数,因为默认的seed种子为1,利用srand(seed)函数来改变不同的种子,保证每次种子的不同,利用time(0)函数

srand(time(0));
rand();//rand()%number,生成0-number

static_cast<char>(int)将int转换为char,static_cast<int>(char)将char转换为int
生成随机字符

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
	srand(time(0));
	char ch = 'a' + rand() % ('z' - 'a' + 1);//static_cast<char>('a'+rand()%('z'-'a'+1));
	cout << ch << endl;
	
	system("pause");
	return 0;
}

4.6字符函数

测试和转换字符的函数,利用#include<cctype>头文件

isdigit(ch);//是数字,返回true
isalpha(ch);//是字母,返回true
isalnum(ch);//是字母数字,返回true
islower(ch);//是小写,返回true
isupper(ch);//是大写返回true
isspace(ch);//是空白字符,空白符`' ', \t, \f, \r, \n`,返回true
tolower(ch);//转成小写
toupper(ch);//转成大写

4.8字符串类型

string不是原有的数据类型,是一个对象类型
string是一个预先定义在#Include<string>头文件中的类

string message="hello world!";//message是一个string类的对象,对象的值是hello world

string s;//定义一个空字符串

length();//返回字符串中字符的个数
size();//同length
at(index);//返回字符串中指定位置的字符
message.length();//个数不包括\n
message.size();//用length()
message.at(0);//返回第一个字符

4.8.1字符串索引和下标操作符

message.at()==meaasge[]

4.8.2连接字符串

C++可以利用加好’+'直接连接字符串,自动覆盖前面的\n

string s=s1+s2;//合法
string s="hello "+"world";//非法
string s=s+"hello";//合法

4.8.3比较字符串

利用<,>等直接比较字符串

4.8.4读字符串

直接利用cin,cout
注意和c语言中的scanf一样,只能读取第一个空白字符前的内容
改进:用getline()函数getline(cin,s,delimitCharacter);//cin输入设备,s要输入的字符串,delimitCharacter种子字符,默认为\n,读到\n丢弃\n(与C中的fgets还不一样)

4.10格式化控制台输出

流操作函数,利用#include<iomainip>头文件

setprecision(n);//设定一个浮点数的精度
fixed;//显示指定小数位数的浮点数
showpoint;//即使没有小数部分也显示以零补足的小数点后位数
setw(width);//指定打印字段的宽度
left;//调整输出到左边
right;//调整输出到右边

4.10.1setprecision(n)操作

n指定的是显示的总位数,且会四舍五入
该函数操作会指导精度被改变,一致保持不变
函数指定的n如果不够一个整数,那么该函数会被忽略

4.10.2修改操作

计算机会自动用科学计数法显示一个很长的浮点数,利用fixed函数可以强制数字显示为非科学计数法
默认fixed函数修复小数点后6位,当在fixed操作之后使用时,setpecision操作指定小数点后的位数。

	double amount = 12618.98;
	double interestRate = 0.0013;
	double interest = amount * interestRate;
	cout << fixed << setprecision(2) << interest << endl;//显示16.40

4.10.3showpoint操作

默认情况下没有小数部分的浮点数是不显示小数点的。
一种操作是可以使用fixed操作来强制浮点数显示小数点
另一种操作是使用showpoint操作,强制浮点数显示小数点并在需要的位置上补充0,showpoint操作应该与setpercisiion函数结合使用

4.10.4setw(width)操作

setw(width)函数指定输出的最小列数,包括字符型和数值型
setw(width)函数仅能影响下一次输出,cout<<setw(8)<<"c++"<<101<<endl;//影响c++,不影响101
setw(width)和setpercision(n)可以是整数变量、表达式或者是常量
setw(width)如果某一项需要比指定的宽度更多的空间,宽度会自动增加。
setw(width)函数默认使用右对齐

4.10.5left和right操作

左对齐和右对齐

4.11简单的文件输入输出

详见第13章
利用#include<fstream>头文件

4.11.1写入文件

需要声明一个ofstream类型的变量ofstream output其实output是一个对象
为指定文件,需要调用output对象的open函数output.open("numbers.txt")
如果文件已经存在了内容,将会被销毁,重新创建文件
上述可写成ofstream output("number.txt") output<<123<<endl;
完成后关闭文件output.close()

4.11.2读取文件

需要声明一个ifstream类型的变量ofstream input其实input是一个对象
为指定文件,需要调用input对象的open函数input.open("numbers.txt"),
如果文件不存在,则出现错误提示
上述可写成ifstream input("number.txt") input>>score1;
完成后关闭文件input.close()

发布了19 篇原创文章 · 获赞 0 · 访问量 1038

猜你喜欢

转载自blog.csdn.net/L_fengzifei/article/details/105265011