Hiển thị văn bản tại vị trí ngẫu nhiên:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define COL_MAX 80
void hien_thi(int dong, int cot, char chuoi[]);
void in_khoang_trong(int so);
void in_dong_trong(int so);
int main() {
int dong, cot, i;
char chuoi[] = "Chào bạn!";
srand(time(0));
for(i = 0; i < 10; i++) {
dong = rand() % 25;
cot = rand() % COL_MAX;
hien_thi(dong, cot, chuoi);
Sleep(1000);
}
return 0;
}
void in_khoang_trong(int so) {
for(int j = 0; j < so; j++)
printf(" ");
}
void in_dong_trong(int so) {
for(int j = 0; j < so; j++)
printf("\n");
}
void hien_thi(int dong, int cot, char chuoi[]) {
in_dong_trong(dong);
in_khoang_trong(cot);
printf("%s", chuoi);
}
Tính giai thừa sử dụng biến tĩnh:
#include <stdio.h>
long long tinh_giai_thua(int n);
int main() {
int n;
printf("Nhập n: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++)
printf("%d! = %lld\n", i, tinh_giai_thua(i));
return 0;
}
long long tinh_giai_thua(int n) {
static long long ket_qua = 1;
ket_qua *= n;
return ket_qua;
}
Hiển thị giá trị biến tĩnh khi tính giai thừa:
#include <stdio.h>
long long tinh_giai_thua(int n);
int main() {
int n;
printf("Nhập n: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++)
printf("%d! = %lld\n", i, tinh_giai_thua(i));
return 0;
}
long long tinh_giai_thua(int n) {
static long long ket_qua = 1;
ket_qua *= n;
printf("Giá trị hiện tại: %lld\n", ket_qua);
return ket_qua;
}
Đặc tính biến tĩnh trong hàm:
#include <stdio.h>
int xu_ly(int a, int b);
int main() {
int k = 4, m = 1, p1, p2;
p1 = xu_ly(k, m);
p2 = xu_ly(k, m);
printf("%d, %d\n", p1, p2);
return 0;
}
int xu_ly(int a, int b) {
static int m = 0, i = 2;
i += m + 1;
m = i + a + b;
return m;
}
Hàm đệ quy tính giá trị:
#include <stdio.h>
long long tinh_de_quy(int n);
int main() {
int n;
while (scanf("%d", &n) != EOF) {
printf("n = %d, f = %lld\n", n, tinh_de_quy(n));
}
return 0;
}
long long tinh_de_quy(int n) {
return (n == 1) ? 1 : 2 * tinh_de_quy(n - 1) + 1;
}
Tính tổ hợp sử dụng vòng lặp:
#include <stdio.h>
int to_hop(int n, int m);
int main() {
int n, m;
while(scanf("%d%d", &n, &m) != EOF)
printf("n = %d, m = %d, kết quả = %d\n", n, m, to_hop(n, m));
return 0;
}
int to_hop(int n, int m){
long tich_a = 1, tich_b = 1, tich_c = 1;
for(int i = 1; i <= n; i++) tich_a *= i;
for(int j = 1; j <= m; j++) tich_b *= j;
for(int k = 1; k <= n - m; k++) tich_c *= k;
return tich_a / (tich_b * tich_c);
}
Tính tổ hợp sử dụng đệ quy:
#include <stdio.h>
int to_hop_de_quy(int n, int m);
int main() {
int n, m;
while(scanf("%d%d", &n, &m) != EOF)
printf("n = %d, m = %d, kết quả = %d\n", n, m, to_hop_de_quy(n, m));
return 0;
}
int to_hop_de_quy(int n, int m) {
if(m > n) return 0;
if(m == 0 || m == n) return 1;
return to_hop_de_quy(n-1, m) + to_hop_de_quy(n-1, m-1);
}
Giải thuật Tháp Hà Nội:
#include <stdio.h>
void thap_ha_noi(int n, char nguon, char trung_gian, char dich, int *dem);
void di_chuyen(int n, char nguon, char dich, int *dem);
int main() {
int n;
while(scanf("%d", &n) != EOF) {
int buoc = 0;
thap_ha_noi(n, 'A', 'B', 'C', &buoc);
printf("Tổng số bước: %d\n", buoc);
}
return 0;
}
void di_chuyen(int n, char nguon, char dich, int *dem) {
printf("%d: %c -> %c\n", n, nguon, dich);
(*dem)++;
}
void thap_ha_noi(int n, char nguon, char trung_gian, char dich, int *dem) {
if(n == 1) {
di_chuyen(n, nguon, dich, dem);
}
else {
thap_ha_noi(n-1, nguon, dich, trung_gian, dem);
di_chuyen(n, nguon, dich, dem);
thap_ha_noi(n-1, trung_gian, nguon, dich, dem);
}
}
Lọc chữ số lẻ từ số nguyên:
#include <stdio.h>
long loc_so_le(long num);
int main() {
long num;
printf("Nhập số: ");
while (scanf("%ld", &num) != EOF) {
printf("Số mới: %ld\n\n", loc_so_le(num));
printf("Nhập số: ");
}
return 0;
}
long loc_so_le(long num) {
long ket_qua = 0, he_so = 1;
while(num != 0) {
int chu_so = num % 10;
if(chu_so % 2) {
ket_qua = chu_so * he_so + ket_qua;
he_so *= 10;
}
num /= 10;
}
return ket_qua;
}