Bài tập C++ số 3
Câu 1: Kiểm tra số chính phương
Viết 1 hàm kiểm tra 1 số có là chính phương hay không (số chính phương là số bằng bình phương của một số nguyên nào đó); một hàm kiểm tra 1 số có phải là số Pitago hay không (số Pitago là số chính phương và bằng tổng 2 số chính phương khác). Trong hàm main nhập số nguyên dương và sử dụng các hàm trên kiểm tra có là số chính phương? số Pitago?
Code mẫu:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int socp(int);
int soptg(int);
void main()
{ clrscr();
int n;
printf("Nhap so nguyen duong n="); scanf("%d",&n);
if(socp(n))printf("\n%d la so chinh phuong",n);
else printf("\n%d khong phai so chinh phuong",n);
if(soptg(n))printf("\n%d la so Pitago",n);
else printf("\n%d khong phai so Pitago",n);
getch();
}
int socp(int n)
{int t=sqrt(n);
if(n==t*t)return 1;
else return 0;
}
int soptg(int n)
{int i;
if(!socp(n))return 0;
else
{for(i=1;i<n;i++)
if(socp(i)&&socp(n-i))break;
if(i<n)return 1;
else return 0;
}
Câu 2: Giải bất phương trình bậc nhất
Lập trình giải bất phương trình ax+b>0 theo yêu cầu: Viết 1 hàm nhập các hệ số a, b; một hàm giải bất phương trình. Hàm main sử dụng các hàm đã viết và có thể chạy nhiều lần giải các bất phương trình khác nhau.
Code mẫu:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void nhap(float &,float &);
void giaibpt(float,float);
void main()
{float a,b;
char c;
do
{clrscr();
nhap(a,b);
giaibpt(a,b);
fflush(stdin);
Câu 2: Giải bất phương trình bậc nhất
Lập trình giải bất phương trình ax+b>0 theo yêu cầu: Viết 1 hàm nhập các hệ số a, b; một hàm giải bất phương trình. Hàm main sử dụng các hàm đã viết và có thể chạy nhiều lần giải các bất phương trình khác nhau.
Code mẫu:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void nhap(float &,float &);
void giaibpt(float,float);
void main()
{float a,b;
char c;
do
{clrscr();
nhap(a,b);
giaibpt(a,b);
fflush(stdin);
{if(a>0)cout<<"Nghiem x>"<<-b/a;
else if(a<0)cout<<"Nghiem x<"<<-b/a;
else if(b>0) cout<<"Vo so nghiem";
else cout<<"Vo nghiem";
}
Câu 3: Viết hàm đệ quy tìm ước chung lớn nhất
Viết hàm đệ quy tìm ước số chung lớn nhất của 2 số tự nhiên; một hàm tìm bội số chung nhỏ nhất của 2 số tự nhiên. Hàm main sử dụng các hàm đã viết và có thể chạy nhiều lần để tìm ước số chung lớn nhất và bội số chung nhỏ nhất của các cặp số nguyên dương khác nhau. Yêu cầu kiểm tra dữ liệu nhập vào phải là các số nguyên dương.
Code mẫu:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
int usc(int,int);
int bsc(int,int);
void main()
{int a,b,d,p;
char c;
do
{clrscr();
do
{cout<<"Nhap 2 so nguyen duong a, b : "; cin>>a>>b;
}while((a<=0)||(b<=0));
d=usc(a,b);
p=bsc(a,b);
cout<<"USCLN("<<a<<","<<b<<")="<<d;
cout<<"\nBSCNN("<<a<<","<<b<<")="<<p;
fflush(stdin);
cout<<"\nTiep tuc ? (c/k):"; cin>>c;
}while ((c=='c')||(c=='C'));
}
int usc(int a, int b)
{if(a*b==0)return a+b;
else if(a>b)return usc(a-b,b);
else return usc(a,b-a);
}
int bsc(int a, int b)
{return a*b/usc(a,b);
}
Câu 4: Tính giai thừa cách của số nguyên dương n
Viết hàm đệ quy tính giai thừa cách của số nguyên dương n. Hàm main sử dụng hàm này và có thể chạy nhiều lần để tính cho nhiều số n khác nhau nhập từ bàn phím. Yêu cầu kiểm tra dữ liệu nhập vào phải là số nguyên dương. Công thức tính giai thừa cách của n: n!=1.3...n nếu n lẻ và n!=2.4...n nếu n chẵn.
Code mẫu:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
long gtc(long);
void main()
{long n;
char c;
do
{clrscr();
do
{cout<<"Nhap so nguyen duong n : "; cin>>n;
}while (n<1);
cout<<n<<"!!="<<gtc(n);
fflush(stdin);
cout<<"\nTiep tuc ? (c/k):"; cin>>c;
}while ((c=='c')||(c=='C'));
}
long gtc(long n)
{if((n==0)||(n==1))return 1;
else return n*gtc(n-2);
}
Câu 5: Viết hàm đệ quy giải bài toán tháp Hà Nội
Viết hàm đệ quy giải bài toán tháp Hà Nội: Cần chuyển n tầng tháp từ vị trí A sang vị trí B dùng vị trí C làm trung gian. Yêu cầu: Mỗi lần chỉ chuyển 1 tầng, chỉ được dùng các vị trí A, B, C để đặt các tầng tháp, không được đặt tầng lớn lên trên tầng nhỏ. Hàm main sử dụng hàm này và có thể chạy nhiều lần để tính cho nhiều số n khác nhau nhập từ bàn phím.
Code mẫu:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
int d;
void chuyen(int,char,char,char);
void main()
{int n;
char c;
do
{clrscr();
d=0;
do
{cout<<"Nhap so tang thap (<10), n="; cin>>n;
}while ((n<1)||(n>9));
chuyen(n,'A','B','C');
cout<<"\nTong so lan chuyen="<<d;
fflush(stdin);
cout<<"\nTiep tuc ? (c/k):"; cin>>c;
}while ((c=='c')||(c=='C'));
}
void chuyen(int n,char a,char b,char c)
{if(n==1)cout<<"\nLan chuyen "<<++d<<" : Tu "<<a<<" sang "<<b;
else
{chuyen(n-1,a,c,b);
chuyen(1,a,b,c);
chuyen(n-1,c,b,a);
}
}
0 comments:
Post a Comment