c语言例题

223 阅读2分钟

1.【公约公倍】

输入两个正整数m和n,求其最大公约数和最小公倍数。

#include<stdio.h>
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位小数。

#include<stdio.h>
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;
}