Máy tính đơn giản
#include <stdio.h>
int main() {
int current, total;
char symbol;
scanf("%d", &total);
while (1) {
scanf(" %c", &symbol); // Lưu ý khoảng trắng trước %c để bỏ qua ký tự trắng
if (symbol == '=') break;
scanf("%d", ¤t);
switch (symbol) {
case '+': total += current; break;
case '-': total -= current; break;
case '*': total *= current; break;
case '/':
if (current == 0) {
printf("ERROR");
return 0;
}
total /= current;
break;
default:
printf("ERROR");
return 0;
}
}
printf("%d", total);
return 0;
}
Tìm điểm gần chuẩn nhất
#include <stdio.h>
#include <stdlib.h>
int timGanNhat(int ds[], int sl, int chuan) {
int ganNhat = ds[0];
int khoangCachMin = abs(ds[0] - chuan);
for (int i = 1; i < sl; ++i) {
int kc = abs(ds[i] - chuan);
if (kc < khoangCachMin) {
ganNhat = ds[i];
khoangCachMin = kc;
}
}
return ganNhat;
}
int main() {
int diemChuan;
scanf("%d", &diemChuan);
int diem[6];
for (int i = 0; i < 6; ++i) {
scanf("%d", &diem[i]);
}
int tren[6], duoi[6], bang[6];
int soTren = 0, soDuoi = 0, soBang = 0;
for (int i = 0; i < 6; ++i) {
if (diem[i] > diemChuan) tren[soTren++] = diem[i];
else if (diem[i] < diemChuan) duoi[soDuoi++] = diem[i];
else bang[soBang++] = diem[i];
}
if (soTren == 6) {
printf("202 zui shuai\n");
} else if (soDuoi == 6) {
printf("come on!\n");
} else {
printf("zui shuai\n");
printf("%d\n", timGanNhat(diem, 6, diemChuan));
if (soTren > 0) {
for (int i = 0; i < soTren; ++i) {
if (i > 0) printf(" ");
printf("%d", tren[i]);
}
printf("\n");
}
}
return 0;
}
Mô phỏng trò chơi súng ngắn
#include <stdio.h>
#include <string.h>
void xoayTrong(int trong[], int lan, int kichThuoc) {
int tam[kichThuoc];
for (int i = 0; i < kichThuoc; ++i) {
tam[(i + lan) % kichThuoc] = trong[i];
}
for (int i = 0; i < kichThuoc; ++i) {
trong[i] = tam[i];
}
}
int main() {
int viTri[6];
for (int i = 0; i < 6; ++i) {
scanf("%d", &viTri[i]);
}
char nguoiChoi[10];
scanf("%s", nguoiChoi);
int lanXoay;
scanf("%d", &lanXoay);
lanXoay %= 6;
xoayTrong(viTri, lanXoay, 6);
for (int i = 0; i < 6; ++i) {
printf("%d ", viTri[i]);
}
printf("\n");
int luot = (strcmp(nguoiChoi, "sheep") == 0) ? 0 : 1;
const char* ten[2] = {"sheep", "fish"};
for (int i = 0; i < 6; ++i) {
if (viTri[i] == 1) {
printf("%s", ten[1 - luot]);
return 0;
}
luot = 1 - luot;
}
return 0;
}
Tìm giá trị cực đại và cực tiểu
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int tuoiMin = 101, thoiGianMax = 0, tongMax = 0;
for (int i = 0; i < n; ++i) {
int tuoi, thoiGian;
scanf("%d %d", &tuoi, &thoiGian);
if (tuoi < tuoiMin) tuoiMin = tuoi;
if (thoiGian > thoiGianMax) thoiGianMax = thoiGian;
if (tuoi + thoiGian > tongMax) tongMax = tuoi + thoiGian;
}
printf("%d %d %d", tuoiMin, thoiGianMax, tongMax);
return 0;
}
Xoay mảng sang trái
#include <stdio.h>
void dichTrai(int mang[], int buoc, int n) {
buoc = (buoc % n + n) % n;
while (buoc--) {
int dau = mang[0];
for (int i = 0; i < n - 1; ++i) {
mang[i] = mang[i + 1];
}
mang[n - 1] = dau;
}
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
int arr[n];
for (int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
int dem = 0;
for (int i = 0; i < m; ++i) {
int lan;
scanf("%d", &lan);
dichTrai(arr, lan, n);
if (arr[0] == 1) dem++;
}
printf("%d\n", dem);
return 0;
}
Sắp xếp số lẻ trước, chẵn sau
#include <stdio.h>
#include <string.h>
int main() {
char input[11], le[11], chan[11];
int demLe = 0, demChan = 0;
scanf("%s", input);
for (int i = 0; input[i]; ++i) {
if ((input[i] - '0') % 2) le[demLe++] = input[i];
else chan[demChan++] = input[i];
}
le[demLe] = '\0';
chan[demChan] = '\0';
strcpy(input, le);
strcat(input, chan);
printf("%s", input);
return 0;
}
Kiểm tra chuỗi đối xứng
#include <stdio.h>
#include <string.h>
int main() {
char chuoi[81];
fgets(chuoi, sizeof(chuoi), stdin);
chuoi[strcspn(chuoi, "\n")] = '\0';
int len = strlen(chuoi);
for (int i = 0; i < len / 2; ++i) {
if (chuoi[i] != chuoi[len - 1 - i]) {
printf("%s\nNo\n", chuoi);
return 0;
}
}
printf("%s\nYes\n", chuoi);
return 0;
}
Mã hóa số 4 chữ số
#include <stdio.h>
int main() {
int so, chuSo[4];
scanf("%d", &so);
for (int i = 3; i >= 0; --i) {
chuSo[i] = (so % 10 + 9) % 10;
so /= 10;
}
int tmp = chuSo[0]; chuSo[0] = chuSo[2]; chuSo[2] = tmp;
tmp = chuSo[1]; chuSo[1] = chuSo[3]; chuSo[3] = tmp;
printf("The encrypted number is ");
for (int i = 0; i < 4; ++i) printf("%d", chuSo[i]);
printf("\n");
return 0;
}
Xây dựng số nhỏ nhất từ tần suất chữ số
#include <stdio.h>
int main() {
int tanSuat[10];
char ketQua[51];
int viTri = 0;
for (int i = 0; i < 10; ++i) {
scanf("%d", &tanSuat[i]);
}
for (int i = 1; i < 10; ++i) {
if (tanSuat[i] > 0) {
ketQua[viTri++] = '0' + i;
tanSuat[i]--;
break;
}
}
for (int i = 0; i < 10; ++i) {
while (tanSuat[i]-- > 0) {
ketQua[viTri++] = '0' + i;
}
}
ketQua[viTri] = '\0';
printf("%s", ketQua);
return 0;
}
Nhân hai ma trận
#include <stdio.h>
int main() {
int hangA, cotA, hangB, cotB;
scanf("%d %d", &hangA, &cotA);
int A[hangA][cotA];
for (int i = 0; i < hangA; ++i)
for (int j = 0; j < cotA; ++j)
scanf("%d", &A[i][j]);
scanf("%d %d", &hangB, &cotB);
int B[hangB][cotB];
for (int i = 0; i < hangB; ++i)
for (int j = 0; j < cotB; ++j)
scanf("%d", &B[i][j]);
if (cotA != hangB) {
printf("Error: %d != %d\n", cotA, hangB);
return 0;
}
int C[hangA][cotB];
for (int i = 0; i < hangA; ++i) {
for (int j = 0; j < cotB; ++j) {
C[i][j] = 0;
for (int k = 0; k < cotA; ++k) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
printf("%d %d\n", hangA, cotB);
for (int i = 0; i < hangA; ++i) {
for (int j = 0; j < cotB; ++j) {
printf("%d", C[i][j]);
if (j < cotB - 1) printf(" ");
}
printf("\n");
}
return 0;
}
Chuyển đổi địa chỉ IP nhị phân
#include <stdio.h>
#include <math.h>
int main() {
char nhiPhan[33];
scanf("%s", nhiPhan);
for (int i = 0; i < 4; ++i) {
int giaTri = 0;
for (int j = 0; j < 8; ++j) {
giaTri += (nhiPhan[i * 8 + j] - '0') * pow(2, 7 - j);
}
printf("%d%s", giaTri, (i < 3) ? "." : "");
}
return 0;
}
Phân tích số điện thoại
#include <stdio.h>
int daTonTai(int ds[], int val, int size) {
for (int i = 0; i < size; ++i)
if (ds[i] == val) return 1;
return 0;
}
void sapXepGiam(int ds[], int size) {
for (int i = 0; i < size - 1; ++i)
for (int j = 0; j < size - i - 1; ++j)
if (ds[j] < ds[j + 1]) {
int tmp = ds[j];
ds[j] = ds[j + 1];
ds[j + 1] = tmp;
}
}
int main() {
char sdt[12];
int soDuyNhat[10], chiSo[11], dem = 0;
scanf("%s", sdt);
for (int i = 0; i < 11; ++i) {
int num = sdt[i] - '0';
if (!daTonTai(soDuyNhat, num, dem)) {
soDuyNhat[dem++] = num;
}
}
sapXepGiam(soDuyNhat, dem);
printf("int[] arr = new int[]{%d", soDuyNhat[0]);
for (int i = 1; i < dem; ++i) printf(",%d", soDuyNhat[i]);
printf("};\n");
for (int i = 0; i < 11; ++i) {
int num = sdt[i] - '0';
for (int j = 0; j < dem; ++j) {
if (soDuyNhat[j] == num) {
chiSo[i] = j;
break;
}
}
}
printf("int[] index = new int[]{");
for (int i = 0; i < 11; ++i) {
printf("%d", chiSo[i]);
if (i < 10) printf(",");
}
printf("};\n");
return 0;
}