1.用函数实现求一元二次方程ax^2+bx+c=0的根,要求二次方程的系数a,b,c由键盘输入。
#include "iostream"
#include "math.h"
using namespace std;
void getValue(double a,double b,double c){
if(b*b-4*a*c<0){
cout<<"此方程无实数解!"<<endl;
return;
}
double delta=sqrt(b*b-4*a*c);
if(delta==0){
cout<<"此方程的解为同解: "<<-b/(2*a)<<endl;
}else
cout<<"此方程的两个实数解为: "<<(-b-delta)/(2*a)<<" ºÍ "<<(-b+delta)/(2*a)<<endl;
}
int main()
{
double a,b,c;
cout<<"请输入一元二次方程ax^2+bx+c=0的三个参数a,b,c: ";
cin>>a>>b>>c;
getValue(a,b,c);
return 0;
}
2.编写函数求下面表达式的值
K=n!/m!(n-m)! n≥m
#include "iostream"
#include "math.h"
using namespace std;
long factorial(int n){
long result=1;
for(int i=1;i<=n;i++)
result*=i;
return result;
}
double getValue(int n,int m){
return factorial(n)/(factorial(m)*factorial(n-m));
}
int main()
{
int n,m;
cout<<"请输入n,m(n≥m): ";
cin>>n>>m;
cout<<getValue(n,m);
return 0;
}
3.由键盘输入两个整数,用函数实现求两个整数的最大公约数和最小公倍数
#include "iostream"
#include "math.h"
using namespace std;
int maxYue(int m,int n){
int min=m<n?m:n;
int i=min;
for(;i>=1;i--){
if(m%i==0&&n%i==0)
break;
}
return i;
}
int minBei(int m,int n){
int max=m>n?m:n;
int i=max;
for(;;i++){
if(i%m==0&&i%n==0)
break;
}
return i;
}
int main()
{
int m,n;
cout<<"请输入两个整数: ";
cin>>m>>n;
cout<<"最大公约数是: "<<maxYue(m,n)<<" 最小公倍数是: "<<minBei(m,n)<<endl;
return 0;
}
4.通过函数实现由键盘输入一个十六进制数,输出相应的十进制数
#include "iostream"
#include "math.h"
#include "string.h"
using namespace std;
double getdecimalism(char n[]){
int length,num=0;
length=strlen(n);
for(int i=length-1;i>=0;i--)
{
if(n[i]>='0'&&n[i]<='9')
num+=(n[i]-'0')*pow(16,length-1-i);
else if(n[i]>='A'&&n[i]<='F')
num+=(10+(n[i]-'A'))*pow(16,length-1-i);
else if(n[i]>='a'&&n[i]<='f')
num+=(10+(n[i]-'a'))*pow(16,length-1-i);
}
return num;
}
int main()
{
char n[15];
cout<<"请输入一个十六进制数n: ";
cin>>n;
cout<<getdecimalism(n);
return 0;
}