cmath,iomanip,string常用函数

1.通过公式求三角形面积

cmath中常用的函数

  • int abs (int i) 返回 绝对值
  • double pow(double x,double y) 返回 x^y x的y次幂
  • double sqrt(double x) 返回 +根号x
  • int rand() 返回 随机数 srand((unsigned)time(0)); 种子

海伦公式:已知三条边长a,b,c,S=根号下p(p-a)(p-b)(p-c) p是三角形周长的一半 p=1/2(a+b+c)

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	double a,b,c;
	cin>>a>>b>>c;
	double x;
	x=(a+b+c)/2;
	double s=sqrt(x*(x-a)*(x-b)*(x-c));
	cout<<"面积是多少:"<<s<<endl;
	return 0;
} 

2.递归法转置数组,并输出,把数组下标index放在函数的参数列表中

#include<iostream>
using namespace std;
void fun(int a[],int index)
{
	if(index>0)
	{
		cout<<a[index-1]<<" ";
		fun(a,--index);
	}
}
int main()
{
	int a[5];
	for(int i=0;i<5;i++)
	{
		cin>>a[i];
	}
	for(int i=0;i<5;i++)
	{
		cout<<a[i]<<" ";
	}
	cout<<endl;
	fun(a,5);
	return 0;
}

3.两个集合的交集

int main()
{
	int a[]={1,2,3,4,5};
	int b[]={2,4,5,6,7};
	int a_size=sizeof(a)/sizeof(*a);
	int b_size=sizeof(b)/sizeof(*b);
	cout<<"交集:"; 
	int c[5];int n=0;
	for(int i=0;i<a_size;++i)
	{
		for(int j=0;j<b_size;++j)
		{
			if(a[i]==b[j])
			{
				c[n]=a[i];
				cout<<c[n]<<" ";
				n++;
			}
		}
	}
	return 0; 
}

参考https://blog.csdn.net/hnlyzyx/article/details/5504747 博主的,作为学习记录。
4.iomanip头文件常用函数

  • setw(n) 设置宽度
    用法:cout<<setw(5)<<255<<endl;
    结果是:(空格)(空格)255
  • setfill(char c) 填充
    用法:cout<<setfill(’@’)<<setw(5)<<255<<endl;
    结果是:@@255
  • setbase(n) 将数字转换为 n 进制
    用法:
    cout<<setbase(8)<<setw(5)<<255<<endl;
    cout<<setbase(10)<<setw(5)<<255<<endl;
    cout<<setbase(16)<<255<<endl;
    结果是:
    (空格)(空格)377
    (空格)(空格) 255
    (空格)(空格) f f
  • setprecision(n) 控制有效数字有几个
    用法:cout<<setprecision(3)<<3.1415926<<endl;
    结果是:3.14

5.string常用函数

  • getline
    用法:整行输入,包括空格字符,由于cin会以空格进行分割
    getline(cin,str);
    getline(cin,str,’,’); 用‘,’来分割
    cout<<str<<endl;

  • append()
    用法:将字符串s添加在字符串末尾
    原型: string append(const char *s)

  • assign()
    用法:赋值,将s所指向的字符串赋值给本对象
    原型:string assign(const char *s)

  • str.compare()
    用法: 比较字符串
    str.compare(“xxxxx”);
    str.compare(str2);相等返回0,大于返回正数,小于返回负数

  • find()
    用法:查找字符串中子串的位置
    原型:size_t find ( const char* s, size_t pos, size_t n ) const;

  • find_first_of()
    用法:如果str中含有substr中的任何字符,则就会查找成功,而find则不同
    原型:size_t find_first_of ( const string& str, size_t pos = 0 ) const;

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str="I don't want to study,but I am studying for test";
	int k1,k2,k3;
	k1=str.find("study");
	cout<<"第一次出现字符串的位置:"<<k1<<endl;
	k2=str.find("study",k1+1);
	cout<<"在第一次出现后,再次出现字符串的位置:"<<k2<<endl;
	k3=str.find("studying",k1+1,5);
	cout<<"在第一次出现后,再次出现字符串的位置,且我只需匹配前五个字符:"<<k3<<endl;
	cout<<"原字符串: "<<str<<endl;
	int k4;
	k4=str.find_first_of("aoieu");
	while(k4!=string::npos) //string::npos 代表查找错误
	{
		str[k4]='*';
		k4=str.find_first_of("aoieu",k4+1);
	} 
	cout<<"替换后的结果: "<<str<<endl;
	return 0;
}

在这里插入图片描述
此处参考:https://blog.csdn.net/iot_change/article/details/8496977

  • substr()
    用法:从s中的pos开始,n个字符的拷贝,返回一个string子串。
    原型: s.substr(pos, n)
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str="I have to study.";
	cout<<str.substr(2,7)<<endl;
	cout<<str.substr(2,8)<<endl; //证明也要复制空格 
	cout<<str.substr(2,9)<<endl;
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值