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;
}