Đề bài:
Tính F(x)
Cho hàm F(x), x ≥ 0 được định nghĩa như sau:
F(x) = x, nếu x ≤ 9 F(x) = F(S(x)), nếu x > 9
Trong đó S(x): tổng các chữ số của x.
Yêu cầu: Hãy viết chương trình tính F(n!), với 1 <= n <= 500
Tính F(x)
Cho hàm F(x), x ≥ 0 được định nghĩa như sau:
F(x) = x, nếu x ≤ 9 F(x) = F(S(x)), nếu x > 9
Trong đó S(x): tổng các chữ số của x.
Yêu cầu: Hãy viết chương trình tính F(n!), với 1 <= n <= 500
Phân tích bài toán:
Bài này khá đơn giản, chúng ta không cần phải suy nghĩ nhiều để tìm ra lời giải:
Bài này khá đơn giản, chúng ta không cần phải suy nghĩ nhiều để tìm ra lời giải:
- Xây dựng hàm tìm tổng cách chữ số của một số nguyên
- Xây dựng hàm tìm giai thừa của một số
- Kết hợp kiểm soát dữ liệu đầu vào
Lời giải:
Mã nguồn C:
//Tính F(x)
// Cho hàm F(x), x ≥ 0 được định nghĩa như sau:
// F(x) = x, nếu x ≤ 9
// F(x) = F(S(x)), nếu x > 9
// Trong đó S(x): tổng các chữ số của x.
// Yêu cầu: Hãy viết chương trình tính F(n!), với 1 <= n <= 500.
#include
#include
char sumChar(int n);
unsigned long giaiThua(char n);
void main()
{
int n;
char c, sum;
do {
do {
printf("Nhap n (1 <= n <= 500): ");
scanf("%d", &n);
}
while(n<1 n="">500);
if(n<=9) sum= n;
else sum= sumChar(n);
printf("Ket qua la: F(S(%d))= %lu\n", n, giaiThua(sum));
printf("Nhap q hoac Q de thoat\n");
fflush(stdin);
c=getch();
}
while(c != 'q' && c!= 'Q');
}
unsigned long giaiThua(char n)
{ unsigned long temp=1;
if(n==0) return false;
for(char i=1; i<=n; i++)
{ temp *=i; }
return temp;
}
char sumChar(int n)
{
char sum=0;
while(n != 0)
{
sum+= n % 10;
n= n/10;
}
return sum;
}1>
// Cho hàm F(x), x ≥ 0 được định nghĩa như sau:
// F(x) = x, nếu x ≤ 9
// F(x) = F(S(x)), nếu x > 9
// Trong đó S(x): tổng các chữ số của x.
// Yêu cầu: Hãy viết chương trình tính F(n!), với 1 <= n <= 500.
#include
#include
char sumChar(int n);
unsigned long giaiThua(char n);
void main()
{
int n;
char c, sum;
do {
do {
printf("Nhap n (1 <= n <= 500): ");
scanf("%d", &n);
}
while(n<1 n="">500);
if(n<=9) sum= n;
else sum= sumChar(n);
printf("Ket qua la: F(S(%d))= %lu\n", n, giaiThua(sum));
printf("Nhap q hoac Q de thoat\n");
fflush(stdin);
c=getch();
}
while(c != 'q' && c!= 'Q');
}
unsigned long giaiThua(char n)
{ unsigned long temp=1;
if(n==0) return false;
for(char i=1; i<=n; i++)
{ temp *=i; }
return temp;
}
char sumChar(int n)
{
char sum=0;
while(n != 0)
{
sum+= n % 10;
n= n/10;
}
return sum;
}1>
Mã nguồn C++:
#include
using namespace std;
char sumChar(int n);
unsigned long giaiThua(char n);
void main()
{
int n;
char c, sum;
do {
do {
cout<<"Nhap n (1 <= n <= 500): ";
cin>> n;
}
while(n<1 n="">500);
if(n<=9) sum=n;
else sum= sumChar(n);
cout<< "Ket qua la: F(S(" << n << "))= " << giaiThua(sum) << endl;
cout<< "Nhap q hoac Q de thoat\n";
fflush(stdin);
c=getchar();
}
while(c != 'q' && c!= 'Q');
}
unsigned long giaiThua(char n)
{
unsigned long temp=1;
if(n==0) return false;
for(char i=1; i<=n; i++)
{
temp *=i;
}
return temp;
}
char sumChar(int n)
{
char sum=0;
while(n != 0)
{
sum+= n % 10;
n= n/10;
}
return sum;
}1>
using namespace std;
char sumChar(int n);
unsigned long giaiThua(char n);
void main()
{
int n;
char c, sum;
do {
do {
cout<<"Nhap n (1 <= n <= 500): ";
cin>> n;
}
while(n<1 n="">500);
if(n<=9) sum=n;
else sum= sumChar(n);
cout<< "Ket qua la: F(S(" << n << "))= " << giaiThua(sum) << endl;
cout<< "Nhap q hoac Q de thoat\n";
fflush(stdin);
c=getchar();
}
while(c != 'q' && c!= 'Q');
}
unsigned long giaiThua(char n)
{
unsigned long temp=1;
if(n==0) return false;
for(char i=1; i<=n; i++)
{
temp *=i;
}
return temp;
}
char sumChar(int n)
{
char sum=0;
while(n != 0)
{
sum+= n % 10;
n= n/10;
}
return sum;
}1>
0 nhận xét:
Đăng nhận xét