Dưới đây là tổng hợp các bài tập lập trình nhỏ nhưng khá thú vị, đòi hỏi phải có chút suy nghĩ để cho ra giải thuật đúng đắn, hiệu quả và tiết kiệm chi phí nhất có thể. Toàn bộ bài tập được trích trong quyển "250 bài tập kỹ thuật lập trình C" của tác giả Dương Thiên Tứ.
#include <stdio.h>
int main() {
int hours;
printf("Nhap so gio: ");
scanf("%d", &hours);
int w = hours / 168;
int d = (hours % 168) / 24;
int h = (hours % 168) % 24;
printf("%d tuan, %d ngay, %d gio", w, d, h);
return 0;
}
Nếu như bạn nghĩ tới việc sẽ lấy giờ trừ cho giờ, phút trừ cho phút, giây trừ cho dây thì đó là một phương pháp vẫn có thể cho ra kết quả đúng, nhưng bạn sẽ phải handle khá nhiều logic một cách phức tạp không cần thiết. Cách đơn giản nhất là quy đổi tất cả về chung một đơn vị nhỏ nhất, ở đây là giây. Tính hiệu của 2 khoảng thời gian đã quy đổi, sau đó đổi ngược kết quả về lại giờ phút giây là gọn gàng và hiệu quả nhất.
#include <stdio.h>
int main() {
int h1, m1, s1;
int h2, m2, s2;
printf("Nhap gio, phut, giay [1]: ");
scanf("%d%d%d", &h1, &m1, &s1);
printf("Nhap gio, phut, giay [2]: ");
scanf("%d%d%d", &h2, &m2, &s2);
int t1 = h1 * 3600 + m1 * 60 + s1;
int t2 = h2 * 3600 + m2 * 60 + s2;
int t = t1 > t2 ? t1 - t2 : t2 - t1;
printf("Hieu thoi gian: %d gio %d phut %d giay", t / 3600, (t % 3600) / 60, (t % 3600) % 60);
return 0;
}
#include <stdio.h>
int main() {
int k;
printf("Nhap so kW tieu thu: ");
scanf("%d", &k);
int sum = 0;
for (int i = 1; i <= k; i++) {
if (i <= 100) sum += 500;
else if (i > 100 && i <= 250) sum += 800;
else if (i > 250 && i <= 350) sum += 1000;
else sum += 1500;
}
printf("Chi phi: %d", sum);
return 0;
}
#include <stdio.h>
int isPerfectNumber(int n) {
int sum = 0;
for (int i = 1; i <= n/2; i++)
if (n % i == 0)
sum += i;
return sum == n ? 1 : 0;
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 2; i < n; i++)
if (isPerfectNumber(i))
printf("%d ", i);
return 0;
}
#include <stdio.h>
double pow(x, y) {
double t = 1;
for (int i = 0; i < y; i++) t *= x;
return t;
}
int main()
{
unsigned long n, t;
unsigned count = 0, sum = 0;
scanf("%ld", &n);
t = n;
do {
sum += t % 10;
count++;
} while (t /= 10);
printf("%ld co %d chu so\n", n, count);
printf("Chu so cuoi cung la: %d\n", n % 10);
printf("Chu so dau tien la: %d\n", n / (int) pow(10, count - 1));
printf("Tong cac chu so la: %d\n", sum);
printf("So dao nguoc la: ");
do printf("%d", n % 10); while (n /= 10);
return 0;
}