Viết chương trình các bài sau trong đó có sử dụng hàm hoặc thủ tục: -Tìm UCLN, BCNN của 2 số nguyên -Tính n! Với n nguyên -Tính a^b với a,b thực -Tráo đổi 2 số nguyên x và y

2 câu trả lời

1)

#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
    int tmp;
    while(b != 0) {
        tmp = a % b;
        a = b;
        b = tmp;
    }
    return a;
}
int main(){
    int a,b;
    cin>>a>>b;
    cout<<"UCLN("<<a<<","<<b<<") = "<<gcd(a,b)<<endl;
    cout<<"BCNN("<<a<<","<<b<<") = "<<(a*b)/gcd(a,b);
    //samon247
    return 0;
}

2)

#include <bits/stdc++.h>
using namespace std;
int giaithua(int n)
{
    int total=1;
    for(int i=1;i<=n;i++){
        total*=i;
    }
    return total;
}
int main(){
    int n;
    cin>>n;
    cout<<giaithua(n);
    //samon247
    return 0;
}

3)

#include <bits/stdc++.h>
using namespace std;
int luythua(double a, double b)
{
    double total=1,c=0;
    for(;c<b;c++){
        total*=a;
    }
    return total;
}
int main(){
    double a,b;
    cin>>a>>b;
    cout<<luythua(a,b);
    //samon247
    return 0;
}

4)

#include <bits/stdc++.h>
using namespace std;
void hoanvi(int &a, int &b)
{
    int temp=a;
    a=b;
    b=temp;
}
int main(){
    int a,b;
    cout<<"a: ";
    cin>>a;
    cout<<"b: ";
    cin>>b;
    hoanvi(a,b);
    cout<<"a: "<<a;
    cout<<"\nb: "<<b;
    //samon247
    return 0;
}

Bài 1: UCLN và BCNN 

Program FNG;
Uses crt;
Var x,y: qword;

Function UCLN(a,b: qword): qword;
Var r: qword;
Begin
        While a<>0 do
        Begin
                r:=b mod a;
                b:=a;
                a:=r;
        End;
        UCLN:=b;
End;

Begin
        Clrscr;
        Write('Nhap x, y: '); Readln(x,y);
        Writeln('UCLN = ',UCLN(x,y));
        Write('BCNN = ',x*y div UCLN(x,y));
        Readln
End.

Bài 2:

Program FNG;
Uses crt;
Type bignum = Ansistring;
Var St,so: bignum;
    n,i: longint;

Function add(a,b: bignum): bignum;
Var sum,carry,i: longint;
    c: bignum;
Begin
        carry:=0; c:='';
        While length(a)<length(b) do a:='0'+a;
        While length(b)<length(a) do b:='0'+b;
        For i:=length(a) downto 1 do
        Begin
                sum:=Ord(A[i])-48 + Ord(B[i])-48 + carry;
                carry:=sum div 10;
                c:=chr(sum mod 10+ 48) + c;
        End;
        If carry>0 then c:='1'+c;
        add:=c;
End;

Function multiply1(a: bignum; b: longint): bignum;
Var i: longint;
    carry,s: longint;
    c,tmp: bignum;
Begin
        c:='';
        carry:=0;
        For i:=length(a) downto 1 do
        Begin
                s:=(Ord(A[i])-48)*b + carry;
                carry:=s div 10;
                c:=chr(s mod 10+48)+c;
        End;
        If carry>0 then Str(carry,tmp) else tmp:='';
        multiply1:=tmp+c;
End;

Function multiply2(a,b: bignum): bignum;
Var sum,tmp: bignum;
    m,i,j: longint;
Begin
        m:=-1;
        sum:='';
        For i:=length(a) downto 1 do
        Begin
                m:=m+1;
                tmp:=multiply1(b,Ord(A[i])-48);
                For j:=1 to m do tmp:=tmp+'0';
                sum:=add(tmp,sum);
        End;
        multiply2:=sum;
End;

Begin
        Clrscr;
        Write('Nhap n: '); Readln(n);
        St:='1';
        For i:=1 to n do
        Begin
                Str(i,so);
                St:=Multiply2(St,so);
        End;

        Write(n,'! = ',St);
        Readln
End.

Bài 3:

Program FNG;
Uses crt;
Var a,b: extended;

Function luythua(x,y: extended): extended;
Begin
        luythua:=exp(ln(x)*y);
End;

Begin
        Clrscr;
        Write('Nhap a, b: '); Readln(a,b);
        Write(a:0:2,'^',b:0:2,' = ',luythua(a,b):0:2);
        Readln
End.

Bài 4: 

Program FNG;
Uses crt;
Var a,b: qword;

Procedure doi;
Var tg: qword;
Begin
        tg:=a;
        a:=b;
        b:=tg;
End;

Begin
        Clrscr;
        Write('Nhap a,b: '); Readln(a,b);
        doi;
        Write(a,' ',b);
        Readln
End.