DANH SÁCH BÀI VIẾT Giải bài tập thực hành 1 – Các thành phần trong ngôn ngữ C Giải bài tập thực hành 2 – Cấu trúc rẽ nhánh Giải bài tập thực hành 3 – Cấu trúc lặp for Giải bài thực hành 4 – Cấu trúc lặp While, do…while Giải bài thực hành 5 – HÀM Giải bài thực hành 6 – Truyền tham số cho hàm Giải bài thực hành 7 – Mảng Giải bài thực hành 8 – Chuỗi ký tự Giải bài thực hành 9 – Kiểu cấu trúc Giải bài thực hành 10 – Tập tin
Bài tập thực hành 5: Hàm
Bài 1: Viết chương trình tính giá trị của hàm f,với x là số thực được nhập từ bàn phím. 0 x<=0 f(x) = x^2 – x 0< x <=2 x^2-sinπx^2 x>2
Code mẫu
#include<stdio.h>
#include<math.h>
#define PI 3.14
float f(int x)
{
if(x<=0)
return 0;
else
if(x>0 && x<=2)
return x*(x - 1);
else
return x * x - sin(PI * x * x);
}
int main()
{
int x;
printf("Nhap X = ");
scanf("%d", &x);
printf("f(%d) = %10.2f", x, f(x));
}
Bài 2. Viết hàm tính N!. Viết chương trình nhập vào N từ bàn phím sau đó sử dụng hàm vừa xây dựng để tính N!
Code mẫu
#include<stdio.h>
int Giaithua(int n)
{
int s=1;
if(n == 0)
return 1;
int i;
for(i=1;i<=n;i++)
s*=i;
return s;
}
int main()
{
int n;
do
{
printf("Nhap n = ");
scanf("%d",&n);
}
while(n<0);
printf("N! = %d", Giaithua(n));
}
Bài 3. Nhập số nguyên dương n (n>0). Liệt kê tất cả các số nguyên tố nhỏ hơn n.
#include<stdio.h>
#include<math.h>
void Ngto(int n) {
int i, j;
int ngt=1;
if(n==1)
printf("K");
else {
for(i=2; i<n; i++) {
ngt=1;
for(j=2; j<=sqrt(i); j++) {
if(i%j==0) {
ngt=0;
break;
}
}
if(ngt==1)
printf("\t %d",i);
}
}
}
int main() {
int n;
do {
printf("Nhap n = ");
scanf("%d",&n);
} while(n<0);
printf("Cac so nguyen to la: ");
Ngto(n);
}
Bài 4. Nhập số nguyên dương n (n>0). Liệt kê n số chính phương đầu tiên.
Code mẫu
#include<stdio.h>
void ChinhPhuong(int n);
int main() {
int n;
do {
printf("Nhap n: ");
scanf("%d",&n);
} while(n<=0);
printf("Cac so chinh phuong la: ");
ChinhPhuong(n);
}
void ChinhPhuong(int n) {
int i = 1, j, dem = 0;
int chinhphuong=0;
while(dem<n) {
chinhphuong=0;
for(j=1; j<=i; j++) {
if(j*j==i) {
chinhphuong = 1;
}
}
if(chinhphuong==1) {
printf("\t %d",i);
dem++;
}
i++;
}
}
Bài 6. Nhập x, epsilon từ bàn phím, tính gần đúng sin(x) theo công thức sau với độ chính xác epsilon. ( đạt sai số epsilon: số hạng cuối cùng có giá trị tuyệt đối không lớn hơn epsilon). Sin(x) ≈ 1 – x^3/3! + x^5/5! – x^7/7! +…+〖(-1)〗^(n-1) x^(2n-1)/((2n)!)
#include<stdio.h>
#include<math.h>
float tong(int x, float epsilon);
int gt(int n) {
if(n==0||n==1)
return 1;
int g=1, i;
for(i=1; i<=n; i++)
g = g * i;
return g;
}
int main() {
int x;
float epsilon;
do {
printf("Nhap x: ");
scanf("%d",&x);
printf("Nhap epsilon: ");
scanf("%f",&epsilon);
} while(x<=0);
tong( x , epsilon);
}
float tong(int x,float epsilon) {
int i=1,mau=1;
float s=0,gg=0;
do {
gg = pow ( x , 2 * i - 1 ) /gt(2*i-1);
s = s + pow (- 1 , i - 1) * gg;
printf("\tg = %f,\t s= %f\n",gg,s);
i++;
} while(gg>=epsilon);
printf("\nsin(x) la: %f",s);
}
Bài 7. Nhập x, epsilon từ bàn phím, tính gần đúng cos(x) theo công thức sau với độ chính xác epsilon. ( đạt sai số epsilon: số hạng cuối cùng có giá trị tuyệt đối không lớn hơn epsilon). cos(x) ≈ 1 – x^2/2! + x^4/4! – x^6/6! +…+〖(-1)〗^n x^2n/((2n)!)
Code mẫu
#include<stdio.h>
#include<math.h>
float tong(int x, float epsilon);
int gt(int n) {
if(n==0||n==1)
return 1;
int g=1, i;
for(i=1; i<=n; i++)
g = g * i;
return g;
}
int main() {
int x;
float epsilon;
do {
printf("Nhap x: ");
scanf("%d",&x);
printf("Nhap epsilon: ");
scanf("%f",&epsilon);
} while(x<0 || epsilon<0);
tong( x , epsilon);
}
float tong(int x,float epsilon) {
int i=1,mau=1;
float s=1,gg=1;
do {
gg = pow ( x , 2 * i ) /gt(2*i);
s = s + pow (- 1 , i ) * gg;
printf("\tg = %f,\t s= %f\n",gg,s);
i++;
} while(gg>=epsilon);
printf("\ncos(x) la: %f",s);
}
Bài 8. Nhập x, epsilon từ bàn phím, tính gần đúng ln(x) theo công thức sau với độ chính xác epsilon. ( đạt sai số epsilon: số hạng cuối cùng có giá trị tuyệt đối không lớn hơn epsilon). ln(1+x) ≈ 1 – x^2/2 + x^3/3 – x^4/4 +…+〖(-1)〗^(n-1) x^n/n
Code mẫu
#include<stdio.h>
#include<math.h>
float tong(float x, float epsilon);
int main() {
float x;
float epsilon;
do {
printf("Nhap x: ");
scanf("%f",&x);
printf("Nhap epsilon: ");
scanf("%f",&epsilon);
} while(x<0 || epsilon<0);
tong( x , epsilon);
}
float tong(float x,float epsilon) {
int i = 1;
float s = 0, gg = 1;
do {
gg = pow ( x , i ) / i;
s = s + pow (- 1 , i - 1) * gg;
printf("\tg = %f,\t s= %f\n",gg,s);
i++;
} while(gg>=epsilon);
printf("\nln(1+x) la: %f",s);
}
Bài 9. Nhập x, epsilon từ bàn phím, tính gần đúng số pi đạt sai số epsilon theo công thức gần đúng được khai triển maclaurin như sau: ( đạt sai số epsilon: số hạng cuối cùng có giá trị tuyệt đối không lớn hơn epsilon). π/4≈ 1 – 1/3 + 1/5 – 1/7 +…+〖(-1)〗^n 1/(2n+1)
Code mẫu
#include<stdio.h>
#include<math.h>
float tong(float epsilon);
int main() {
float epsilon;
do {
printf("Nhap epsilon: ");
scanf("%f",&epsilon);
} while(epsilon<0);
tong(epsilon);
}
float tong(float epsilon) {
int i = 0;
float s = 0, gg = 0;
do {
gg = 1.0 /(2 * i + 1);
s = s + pow (- 1 , i ) * gg;
printf("\tg = %f,\t s= %f\n",gg,s);
i++;
} while(gg>=epsilon);
printf("\npi/4 bang: %f",s);
}
Bài 10. Viết chương trình in ra tất cả các số nguyên tố bé hơn hoặc bằng n.
Code mẫu
#include<stdio.h>
#include<math.h>
void Ngto(int n) {
int i, j;
int ngt=1;
if(n==1)
printf("K");
else {
for(i=2; i<n; i++) {
ngt=1;
for(j=2; j<=sqrt(i); j++)
if(i%j==0) {
ngt=0;
}
if(ngt==1)
printf("\t %d",i);
}
}
}
int main() {
int n;
printf("Nhap n ");
scanf("%d",&n);
printf("Cac so nguyen to la: ");
Ngto(n);
}
Bài 13. Viết hàm kiểm tra xem số nguyên N có phải là số nguyên tố hay không. Viết chương trình sử dụng hàm trên kiểm tra số nguyên nhập từ bàn phím có phải là số nguyên tố hay không.
Code mẫu
#include<stdio.h>
#include<math.h>
void Ngto(int n) {
int i;
int ngt=1;
if(n==1)
printf("K");
else {
for(i=2; i<=sqrt(n); i++) {
ngt=1;
if(n%i==0) {
ngt=0;
}
}
if(ngt==1)
printf("%d la so nguyen to",n);
else
printf("%d khong phai la so nguyen to",n);
}
}
int main() {
int n;
printf("Nhap n: ");
scanf("%d",&n);
Ngto(n);
}