1.【公约公倍】
输入两个正整数m和n,求其最大公约数和最小公倍数。
int main()
{
int m,n,t,s,max=1,min,i,j; //定义变量,并且(给需要比较的量)赋初值 //t为m,n的公约数;s为m,n中最小的数;max为m,n最大的公约数;min为m,n最小公倍数;i为m,n的公倍数;j为m,n中最大的数
scanf("%d %d",&m,&n);
min=m*n; //注意要先输入m,n;使m,n有值了才能给min赋具体常数值
s=m<n?m:n;
j=m>n?m:n;
for(t=1;t<=s;t++)
{
if(m%t==0 && n%t==0 && max<t)
{
max=t; //找出m,n的公约数,如果max<m,n最大公约数,就给max赋值公约数t——指更新max
}
}
for(i=m*n;i<=m*n;i--)
{
if(i%m==0 && i%n==0 && min>i)
{
min=i; //找出m,n的公倍数,如果min>m,n的最小公倍数,就给min赋值公倍数i——指更新min
}
}
printf("%d\n%d\n",max,min);
return 0;
}
2.【自定义函数】
输入一个正数x和一个正整数n,求下列算式的值。要求定义两个调用函数:fact(n)计算n的阶乘;mypow(x,n)计算x的n次幂(即x的n次方),两个函数的返回值类型是double。
x - x2/2! + x3/3! + ... + (-1)n-1xn/n!
×输出保留4位小数。
int main()
{
double fact(int n);
double mypow(double x,int n);
double x,sum=0.0; //正数x,sum是算式的值
int n,s=1; //正整数n,s作用相当于正负号
scanf("%lf %d",&x,&n);
for(int i=1;i<=n;i++) //n循环
{
sum=sum+s*mypow(x,i)/fact(i); //sum求和是个循环
s=-s; //s符号取反,用于下一轮循环
}
printf("%.4f\n",sum); //保留4位小数
return 0;
}
double fact(int n) //调用函数计算n的阶乘
{
double j=1.0; //j为n的阶乘的值,阶乘值的返回类型为double
for(int i=1;i<=n;i++)
{
j=i*j; //阶乘表达式
}
return j;
}
double mypow(double x,int n)
{
double num=1.0; //num为x的n次幂的值
for(int i=1;i<=n;i++)
{
num=num*x; //x的n次方表达式
}
return num;
}