NỘI DUNG:
Ôn tập từ bài 1 đến bài 5 dưới dạng viết hàm
YÊU CẦU:
Tìm hiểu
lý thuyết trước khi xem bài này
BÀI 0: Input-Output:
0.1
- Input: Nhập số nguyên từ bàn phím
- Output: Xuất số vừa nhập
0.2
- Input: Nhập số thập phân từ bàn phím
- Output: Xuất số vừa nhập
0.3
- Input: Nhập chuỗi từ bàn phím
- Output: Xuất chuỗi vừa nhập
04
- Input: Nhập chuỗi (chấp nhập khoảng trắng) từ bàn phím
- Output: Xuất chuỗi vừa nhập
1.1
Xong!
Viết các hàm theo yêu cầu:
- Xuất ra dòng chữ "Hello"
- Xuất ra dòng chữ "Hello" cộng tên (tên có kiểu dữ liệu là chuỗi, tên là
tham số truyền vào)
- Xuất ra dòng chữ "Hello" cộng tên, tuổi (tên, tuổi là các tham số truyền
vào)
1.2
BÀI 4: Chia hết (sử dụng các hàm đã xây dựng ở bài 3)
4.4
BÀI 5: Số chính
Viết hàm (dạng không ra về giá trị, không tham số đầu vào) xuất n dòng chữ
"Hello", dùng vòng lặp for để gọi hàm này và xuất ra n chữ hello.
BÀI 2: Max-Min
Xây dựng hàm tìm số lớn nhất trong 2 số
Input: Truyền vào 2 số a, b (có thể gán giá trị trực tiếp hoặc đọc từ bàn
phím)
Output: In ra số lớn nhất
BÀI 3: Kiểm tra chẵn, lẻ, chia hết
BÀI 3: Kiểm tra chẵn, lẻ, chia hết
Xây dựng các hàm:
- Kiểm tra số truyền vào là số chẵn hay số lẻ, trả về kết quả kiểm tra (có
thể là 1, 0 hoặc trả về true false). Biết rằng số chẵn là số
chia hết cho 2 ( a % 2 == 0)
- Kiểm tra a có chia hết cho b hay không, trả về kết quả ( a % b == 0)
Input:
- Truyền vào a (hàm chẵn lẻ)
- Truyền vào 2 số a, b (hàm chia hết)
Output: Hiển thị thông báo kết quả sau khi gọi hàm
BÀI 4: Chia hết (sử dụng các hàm đã xây dựng ở bài 3)
4.1
Input: Truyền vào số nguyên n
Output: Xuất tất cả các số lẻ trong khoảng từ 0 đến n;
4.2
Input: Truyền vào số nguyên n
Output: Xuất tất cả các số chia hết cho 3 và 5 trong khoảng từ 0 đến n;
4.3
Input: Truyền vào 2 số nguyên min và max
Output: Xuất tất cả các số chia hết cho 2 hoặc 7 trong khoảng từ min và
max;
Input: Truyền vào 2 số nguyên min và max
Output: Đếm có bao nhiêu số chia hết cho 3 và là số lẻ trong khoảng từ
min và max, in số đếm và các số ra màn hình;
BÀI 5: Số chính
Xây dựng các hàm:
- Kiểm tra chẵn lẻ
- Kiểm tra số chính phương
Biết rằng: Số chính phương là số tự nhiên có căn bậc hai là một số tự
nhiên, hay nó cách khác một số mà giá trị của nó là bình phương của
một số tự nhiên. Ví dụ: 4 là số chính phương vì 4 = 2 ^ 2 (2 * 2), 9 = 3 * 3,
16 = 4 * 4,.... để dể hình dung
diện tích của hình vuông là số chính phương (diện tích = cạnh *
canh).
5.1
- Input: Truyền vào số tự nhiên a
- Output: Xuất ra số đó có phải là số chính phương hay không?
5.2
- Input: Truyền vào số tự nhiên a
- Output: Xuất ra tất cả các số lẻ và là số chính phương trong khoảng từ 0
đến a
BÀI 6: Số nguyên tố
Xây dựng hàm kiểm tra số nguyên tố (Số nguyên tố là số chia hết cho 1 và
chính nó, số 1 không phải là số nguyên tố)
6.1
- Input: Truyền vào số tự nhiên a
- Output: Xuất ra số đó có phải là số nguyên tố hay không?
6.2
- Input: Truyền vào 2 số nguyên min và max
- Output: Xuất ra tất cả các nguyên tố trong khoảng từ min và max;
6.3
- Input: Truyền vào số tự nhiên n
- Output: Xuất ra n số nguyên tố đầu tiên (viết theo dạng truyền vào)
THỰC HIỆN:
BÀI 0: Input-Output:
- Bài 0.1
- Bài 0.2
- Bài 0.3
- Bài 0.4
- Input: Nhập số nguyên từ bàn phím
- Output: Xuất số vừa nhập
#include<stdio.h>
int main(){
int a;
printf("\nNhap vao so nguyen n: ");
scanf("%d", &a);
printf("\nSo vua nhap la: %d", a);
}
- Input: Nhập số thập phân từ bàn phím
- Output: Xuất số vừa nhập
#include<stdio.h>
int main(){
float a;
printf("\nNhap vao so thap phan n (Vi du: 5.6789): ");
scanf("%f", &a);
printf("\nSo vua nhap la: %.2f", a);
}
- Input: Nhập chuỗi từ bàn phím
- Output: Xuất chuỗi vừa nhập
#include<stdio.h>
int main(){
char a[100];
printf("\nNhap vao chuoi: ");
scanf("%s", a);
printf("\nChuoi vua nhap la: %s", a);
}
- Input: Nhập chuỗi (chấp nhập khoảng trắng) từ bàn phím
- Output: Xuất chuỗi vừa nhập
#include<stdio.h>
int main(){
char a[100];
printf("\nNhap vao chuoi: ");
fflush(stdin);// xóa bộ nhớ đệm
// gets(a); // chấp nhận chuỗi bao gồm khoảng trắng
scanf("%[^\n]s", a);
printf("\nChuoi vua nhap la: %s", a);
}
BÀI 1: Hello
- Bài 1.1
- Bài 1.2
1.1
Viết các hàm theo yêu cầu:
- Xuất ra dòng chữ "Hello"
- Xuất ra dòng chữ "Hello" cộng tên (tên có kiểu dữ liệu là
chuỗi, tên là tham số truyền vào)
- Xuất ra dòng chữ "Hello" cộng tên, tuổi (tên, tuổi là các tham
số truyền vào)
#include<stdio.h>
void xinChao(){
// hàm không trả về, KHÔNGtruyền tham số đầu vào
printf ("\nHello!");
}
void xinChaoTen(char ten[]){
// hàm không trả về, CÓ truyền tham số đầu vào
printf ("\nHello %s!", ten );
}
void xinChaoTenTuoi(char ten[], int tuoi){
// hàm không trả về, có HAI tham số đầu vào
printf ("\nHello %s %d tuoi!", ten, tuoi );
}
int main(){
xinChao();
xinChaoTen("Khanh");
xinChaoTenTuoi("Khanh", 18);
}
1.2
Viết hàm (dạng không ra về giá trị, không tham số đầu vào) xuất n
dòng chữ "Hello", dùng vòng lặp for để gọi hàm này và xuất ra n
chữ hello.
#include<stdio.h>
void xinChao(){
printf ("\nHello!");
}
void xinChaoTen(char ten[]){
printf ("\nHello %s!", ten );
}
void xinChaoTenTuoi(char ten[], int tuoi){
printf ("\nHello %s %d tuoi!", ten, tuoi );
}
int main(){
int n;
n = 5;
for (int i = 0 ; i < n; i++) xinChao();
}
BÀI 2: Max-Min
- Bài 2
Xây dựng hàm tìm số lớn nhất trong 2 số
Input: Truyền vào 2 số a, b (có thể gán giá trị trực tiếp hoặc
đọc từ bàn phím)
Output: In ra số lớn nhất
#include<stdio.h>
int timMax(int a, int b){
if (a > b) return a;
return b;
}
int timSoLonNhat(int a, int b){
return (a >= b) ? a : b;
}
int main(){
printf("\n%d",timMax(5, 10));
printf("\n%d",timSoLonNhat(50, 25));
}
BÀI 3: Kiểm tra chẵn, lẻ, chia hết
- Bài 3
Xây dựng các hàm:
- Kiểm tra số truyền vào là số chẵn hay số lẻ, trả về kết quả
kiểm tra (có thể là 1, 0 hoặc trả về true false). Biết rằng số
chẵn là số chia hết cho 2
( a % 2 == 0)
- Kiểm tra a có chia hết cho b hay không, trả về kết
quả ( a % b == 0)
Input:
- Truyền vào a (hàm chẵn lẻ)
- Truyền vào 2 số a, b (hàm chia hết)
Output: Hiển thị thông báo kết quả sau khi gọi hàm
#include<stdio.h>
int kiemTraChanLe(int a){
if (a % 2 ==0) return 1;
else return 0;
}
int kiemTraChiaHet(int a, int b){
if (a % b == 0) return 1;
return 0;
}
bool kiemTraChiaHet_bool(int a, int b){ // bool
if (a % b == 0) return true;
return false;
}
int main(){
// gọi hàm kiểm tra chẳn lẻ
int n;
n = 9;
if (kiemTraChanLe(n)) printf("\n%d la so CHAN!", n);
else printf("\n%d la SO LE!", n);
// gọi hàm kiểm tra chia hết
int a, b;
a = 18;
b = 5;
if (kiemTraChiaHet(a, b)) printf("\n%d CHIA HET %d", a, b);
else printf("\n%d KHONG chia het %d", a, b);
}
BÀI 4: Chia hết (sử dụng các hàm đã xây dựng ở bài 3)
- Bài 4.1
- Bài 4.2
- Bài 4.3
- Bài 4.4
4.1
Input: Truyền vào số nguyên n
Output: Xuất tất cả các số lẻ trong khoảng từ 0 đến n;
#include<stdio.h>
int kiemTraChanLe(int a){
if (a % 2 ==0) return 1;
else return 0;
}
int kiemTraChiaHet(int a, int b){
if (a % b == 0) return 1;
return 0;
}
bool kiemTraChiaHet_bool(int a, int b){ // bool
if (a % b == 0) return true;
return false;
}
int main(){
// Xuất tất cả các số lẻ trong khoảng từ 0 đến n;
int n;
n = 100;
for (int i = 0; i < n; i++){
// if (kiemTraChanLe(i) == 0)
if (kiemTraChiaHet(i, 2) == 0)
printf("%d ", i);
}
}
4.2
Input: Truyền vào số nguyên n
Output: Xuất tất cả các số chia hết cho 3 và 5 trong khoảng từ 0 đến
n;
#include<stdio.h>
int kiemTraChanLe(int a){
if (a % 2 ==0) return 1;
else return 0;
}
int kiemTraChiaHet(int a, int b){
if (a % b == 0) return 1;
return 0;
}
bool kiemTraChiaHet_bool(int a, int b){ // bool
if (a % b == 0) return true;
return false;
}
int main(){
// kiểm tra chia hết cho 3 và 5 từ 0 đến n;
int n;
n = 99;
for (int i = 0; i < n; i++){
if (kiemTraChiaHet(i, 3) && kiemTraChiaHet(i, 5))
printf("%d ", i);
}
}
4.3
Input: Truyền vào 2 số nguyên min và max
Output: Xuất tất cả các số chia hết cho 2 hoặc 7 trong khoảng từ
min và max;
#include<stdio.h>
int kiemTraChanLe(int a){
if (a % 2 ==0) return 1;
else return 0;
}
int kiemTraChiaHet(int a, int b){
if (a % b == 0) return 1;
return 0;
}
bool kiemTraChiaHet_bool(int a, int b){ // bool
if (a % b == 0) return true;
return false;
}
int main(){
// Xuất tất cả các số chia hết cho 2 hoặc 7 trong khoảng từ min và max;
int min, max;
min = 10;
max = 100;
for (int i = min; i < max; i++){
if (kiemTraChiaHet(i, 2) || kiemTraChiaHet(i, 7))
printf("%d ", i);
}
}
4.4
Input: Truyền vào 2 số nguyên min và max
Output: Đếm có bao nhiêu số chia hết cho 3 và là số lẻ trong khoảng
từ min và max, in các số ra màn hình;
#include<stdio.h>
int kiemTraChanLe(int a){
if (a % 2 ==0) return 1;
else return 0;
}
int kiemTraChiaHet(int a, int b){
if (a % b == 0) return 1;
return 0;
}
bool kiemTraChiaHet_bool(int a, int b){ // bool
if (a % b == 0) return true;
return false;
}
int main(){
// Đếm có bao nhiêu số chia hết cho 3 và là số lẻ trong khoảng từ min và max, in số đếm và các số ra màn hình;
int dem = 0;
int min, max;
min = 10;
max = 100;
for (int i = min; i < max; i++){
// if (kiemTraChiaHet(i, 3) && kiemTraChanLe(i) == 0) {
if (kiemTraChiaHet(i, 3) && kiemTraChiaHet(i, 2) == 0) {
printf("%d ", i);
dem ++;
}
}
printf("\nTong cac so thoa dieu kien: %d", dem);
}
BÀI 5: Số chính phương
Xây dựng các hàm:
- Kiểm tra chẵn lẻ
- Kiểm tra số chính phương
Biết rằng: Số chính phương là số tự nhiên có căn bậc hai là một số tự
nhiên, hay nó cách khác một số mà giá trị của nó là bình phương của
một số tự nhiên. Ví dụ: 4 là số chính phương vì 4 = 2 ^ 2 (2 * 2), 9 = 3 *
3, 16 = 4 * 4,.... để dể hình dung diện tích của hình vuông là số chính phương (diện tích = cạnh * canh).
- Bài 5.1
- Bài 5.2
5.1
- Input: Truyền vào số tự nhiên a
- Output: Xuất ra số đó có phải là số chính phương hay không?
#include<stdio.h>
#include<math.h>
int kiemTraChinhPhuong(int a){
int canBacHai = sqrt(a); // #include<math.h>
if(canBacHai * canBacHai == a) return 1;
else return 0;
}
int main(){
// kiểm tra số chính phương
int a;
a = 16;
if (kiemTraChinhPhuong(a)) printf("\n%d la so CHINH PHUONG!", a);
else printf("\n%d KHONG phai chinh phuong!", a);
}
5.2
- Input: Truyền vào số tự nhiên a
- Output: Xuất ra tất cả các số lẻ và là số chính phương trong
khoảng từ 0 đến a
#include<stdio.h>
#include<math.h>
int kiemTraChanLe(int a){
if (a % 2 ==0) return 1;
else return 0;
}
int kiemTraChinhPhuong(int a){
int canBacHai = sqrt(a); // #include<math.h>
if(canBacHai * canBacHai == a) return 1;
else return 0;
}
int main(){
// Xuất ra tất cả các số lẻ và là số chính phương trong khoảng từ 0 đến a
int n;
n = 100;
for (int i = 1; i < n; i++){
if (kiemTraChanLe(i) == 0 && kiemTraChinhPhuong(i)){
printf(" %d ", i);
}
}
}
BÀI 6: Số nguyên tố
Xây dựng hàm kiểm tra số nguyên tố (Số nguyên tố là số chia hết cho 1 và chính nó, số 1 không phải là số nguyên tố)
- Bài 6.1
- Bài 6.2
- Bài 6.3
6.1
- Input: Truyền vào số tự nhiên a
- Output: Xuất ra số đó có phải là số nguyên tố hay không?
#include<stdio.h>
#include<math.h>
int kiemTraNguyenTo(int x){
int i;
if (x == 1)
return 0;
for (i = 2; i < x; i++){
if (x % i == 0) {
return 0;
}
}
return 1;
}
int kiemTraNguyenTo2(int x){
int i;
if (x == 1)
return 0;
for (i = 2; i <= sqrt(x); i++){ // thu vien math.h
if (x % i == 0) {
return 0;
}
}
return 1;
}
int main(){
// Kiểm tra nguyên tố
int a;
a = 21;
if (kiemTraNguyenTo(a)) printf("\n%d la so NGUYEN TO!", a);
else printf("\n%d KHONG phai nguyen to!", a);
}
6.2
- Input: Truyền vào 2 số nguyên min và max
- Output: Xuất ra tất cả các nguyên tố trong khoảng từ min và
max;
#include<stdio.h>
#include<math.h>
int kiemTraNguyenTo(int x){
int i;
if (x == 1)
return 0;
for (i = 2; i < x; i++){
if (x % i == 0) {
return 0;
}
}
return 1;
}
int kiemTraNguyenTo2(int x){
int i;
if (x == 1)
return 0;
for (i = 2; i <= sqrt(x); i++){ // thu vien math.h
if (x % i == 0) {
return 0;
}
}
return 1;
}
int main(){
// Xuất ra tất cả các nguyên tố trong khoảng từ min và max;
int min, max;
min = 15;
max = 100;
for (int i = min; i < max; i++){
if (kiemTraNguyenTo(i)) printf(" %d ", i);
}
}
6.3
- Input: Truyền vào số tự nhiên n
- Output: Xuất ra n số nguyên tố đầu tiên (viết theo dạng truyền
vào)
#include<stdio.h>
#include<math.h>
int kiemTraNguyenTo(int x){
int i;
if (x == 1)
return 0;
for (i = 2; i < x; i++){
if (x % i == 0) {
return 0;
}
}
return 1;
}
int kiemTraNguyenTo2(int x){
int i;
if (x == 1)
return 0;
for (i = 2; i <= sqrt(x); i++){ // thu vien math.h
if (x % i == 0) {
return 0;
}
}
return 1;
}
void nNguyenToDauTien(int n){ // dùng while
int dem = 0;
int i = 2;
while( dem < n){
if (kiemTraNguyenTo(i)){
printf("%d ", i);
dem ++;
} i++;
}
}
void nNguyenToDauTienFor(int n){
int dem = 0;
for (int i = 2 ; ; i++){ // for khuyết điều kiện, có nghĩa điều kiện luôn luôn đúng
if (kiemTraNguyenTo(i)){
printf("%d ", i);
dem ++;
}
if (dem == n) break;
}
}
int main(){
// Xuất ra n số nguyên tố đầu tiên
int a;
a = 7;
nNguyenToDauTien(a);
}