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.