Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

Đổi chỗ

#include <stdio.h>
int main() {
int n, arr[1000], SwitchPlace1, SwitchPlace2;
scanf("%d", &n);
for (int i=1 ; i<=n ; i++) scanf("%d", &arr[i]);
scanf("%d%d", &SwitchPlace1, &SwitchPlace2);
int temp = arr[SwitchPlace1];
arr[SwitchPlace1] = arr[SwitchPlace2];
arr[SwitchPlace2] = temp;
for (int i=1 ; i<=n ; i++) printf("%d ", arr[i]);
}
Chèn số
#include <stdio.h>
int main() {
int n, arr[1000], add, position;
scanf("%d", &n);
for (int i=1 ; i<=n ; i++) scanf("%d", &arr[i]);
scanf("%d%d", &add, &position);
for (int i=1 ; i<=n ; i++) {
printf("%d ", arr[i]);
if (i == position-1) printf("%d ", add);
}
}
Xóa số

#include <stdio.h>
int main() {
int n, arr[1000], del;
scanf("%d", &n);
for (int i=1 ; i<=n ; i++) scanf("%d", &arr[i]);
scanf("%d", &del);
for (int i=1 ; i<=n ; i++) {
if (i != del) printf("%d ", arr[i]);
}
}
Tổng cực tiểu ►
#include <stdio.h>
int main() {
int n, arr[1000], sum=0;
scanf("%d", &n);
for (int i=1 ; i<=n ; i++) scanf("%d", &arr[i]);
for (int i=1 ; i<=n ; i++) {
if (arr[i]<arr[i-1] && arr[i]<arr[i+1] || i == 1 && arr[i]<arr[i+1] || i == n &&
arr[i]<arr[i-1]) sum+=arr[i];
}
printf("%d", sum);
}
Tổng cực đại ►
#include <stdio.h>
int main() {
int n, arr[1000], sum=0;
scanf("%d", &n);
for (int i=1 ; i<=n ; i++) scanf("%d", &arr[i]);
for (int i=1 ; i<=n ; i++) {
if (arr[i]>arr[i-1] && arr[i]>arr[i+1] || i == 1 && arr[i]>arr[i+1] || i == n &&
arr[i]>arr[i-1]) sum+=arr[i];
}
printf("%d", sum);
}
Dãy số tích lũy ►
#include <stdio.h>
int main() {
int n, A[1000], sum=0;
scanf("%d", &n);
for (int i=0 ; i<n ; i++) scanf("%d", &A[i]);
for (int i=0 ; i<n ; i++) {
sum+=A[i];
printf("%d ", sum);
}
}
Sắp xếp tăng dần ►
#include <stdio.h>
int main() {
int n, arr[1000];
scanf("%d", &n);
for (int i=0 ; i<n ; i++) scanf("%d", &arr[i]);
for (int i=0 ; i<n ; i++) {
for (int j=i+1 ; j<n ; j++) {
if (arr[i]>arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int i=0 ; i<n ; i++) printf("%d ", arr[i]);
}
Sắp xếp giảm dần ►
#include <stdio.h>
int main() {
int n, arr[1000];
scanf("%d", &n);
for (int i=0 ; i<n ; i++) scanf("%d", &arr[i]);
for (int i=0 ; i<n ; i++) {
for (int j=i+1 ; j<n ; j++) {
if (arr[i]<arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int i=0 ; i<n ; i++) printf("%d ", arr[i]);
}

Sắp xếp các phần tử nguyên tố


#include <stdio.h>

bool PrimeCheck (int t) {


for (int i=2 ; i<t ; i++) {
if (t%i == 0 && t != i) return false;
}
return true;
}

int main() {
int n, arr[1000], PrimeReplace;
scanf("%d", &n);
for (int i=0 ; i<n ; i++) {
scanf("%d", &arr[i]);
}
for (int i=0 ; i<n ; i++) {
if (PrimeCheck(arr[i])) {
for (int j=i+1 ; j<n ; j++) {
if (PrimeCheck(arr[j]) && arr[i]>arr[j]) {
PrimeReplace = arr[i];
arr[i] = arr[j];
arr[j] = PrimeReplace;
}
}
}
}
for (int i=0 ; i<n ; i++) printf("%d ", arr[i]);
}
Sắp xếp các phần tử lẻ ►
#include <stdio.h>
int main() {
int n, arr[1000];
scanf("%d", &n);
for (int i=0 ; i<n ; i++) scanf("%d", &arr[i]);
for (int i=0 ; i<n ; i++) {
if (arr[i]%2 == 1) {
for (int j=i+1 ; j<n ; j++) {
if (arr[j]%2 == 1 && arr[i]>arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
for (int i=0 ; i<n ; i++) printf("%d ", arr[i]);
}
Sắp xếp các phần tử ở vị trí chẵn ►
#include <stdio.h>
int main() {
int n, arr[1000];
scanf("%d", &n);
for (int i=0 ; i<n ; i++) scanf("%d", &arr[i]);
for (int i=0 ; i<n ; i++) {
if (i%2 == 0) {
for (int j=i+1 ; j<n ; j++) {
if (j%2 == 0 && arr[i]<arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
for (int i=0 ; i<n ; i++) printf("%d ", arr[i]);
}
Sắp xếp chẵn lẻ ►
#include <stdio.h>
int main() {
int n, arr[1000], odd[1000], even[1000], OddAmount=0, EvenAmount=0;
scanf("%d", &n);
for (int i=0 ; i<n ; i++) scanf("%d", &arr[i]);
for (int i=0 ; i<n ; i++) {
if (arr[i]%2 == 0) {
even[EvenAmount]=arr[i];
EvenAmount+=1;
} else {
odd[OddAmount]=arr[i];
OddAmount+=1;
}
}
for (int i=0 ; i<EvenAmount ; i++) {
for (int j=i+1 ; j<EvenAmount ; j++) {
if (even[i]>even[j]) {
int temp = even[i];
even[i] = even[j];
even[j] = temp;
}
}
}
for (int i=0 ; i<OddAmount ; i++) {
for (int j=i+1 ; j<OddAmount ; j++) {
if (odd[i]<odd[j]) {
int temp = odd[i];
odd[i] = odd[j];
odd[j] = temp;
}
}
}
for (int i=0 ; i<EvenAmount ; i++) printf("%d ", even[i]);
for (int i=0 ; i<OddAmount ; i++) printf("%d ", odd[i]);
}
Sắp xếp âm dương ►
#include <stdio.h>
int main() {
int n, arr[1000];
scanf("%d", &n);
for (int i=0 ; i<n ; i++) scanf("%d", &arr[i]);
for (int i=0 ; i<n ; i++) {
if (arr[i]<0) {
for (int j=i+1 ; j<n ; j++) {
if (arr[j]<0 && arr[i]<arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
} else {
for (int j=i+1 ; j<n ; j++) {
if (arr[j]>0 && arr[i]>arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
for (int i=0 ; i<n ; i++) printf("%d ", arr[i]);
}
Số trung vị ►
#include <stdio.h>
int main() {
int n;
float arr[1000];
scanf("%d", &n);
for (int i=0 ; i<n ; i++) scanf("%f", &arr[i]);
for (int i=0 ; i<n ; i++) {
for (int j=i+1 ; j<n ; j++) {
if (arr[i]>arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
if (n%2 == 1) {
printf("%.1f", arr[n/2]);
} else printf("%.1f", (arr[n/2]+arr[n/2-1])/2);
}

Chèn cột
#include <stdio.h>
int main() {
int row, col, matrix[1000][1000], AddCol, AddNum;
scanf("%d%d", &row, &col);
for (int i=0 ; i<row ; i++) {
for (int j=0 ; j<col ; j++) scanf("%d", &matrix[i][j]);
}
scanf("%d%d", &AddCol, &AddNum);
for (int i=0 ; i<row ; i++) {
for (int j=0 ; j<col ; j++) {
if (j == AddCol-1) printf("3 ");
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
Chèn hàng ►
#include <stdio.h>
int main() {
int row, col, matrix[1000][1000], AddRow, AddNum;
scanf("%d%d", &row, &col);
for (int i=0 ; i<row ; i++) {
for (int j=0 ; j<col ; j++) scanf("%d", &matrix[i][j]);
}
scanf("%d%d", &AddRow, &AddNum);
for (int i=0 ; i<row ; i++) {
if (i == AddRow-1) {
for (int j=0 ; j<col ; j++) printf("%d ", AddNum);
printf("\n");
}
for (int j=0 ; j<col ; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
Đổi chỗ ►
#include <stdio.h>
int main() {
int row, col, matrix[1000][1000], i1, j1, i2, j2;
scanf("%d%d", &row, &col);
for (int i=1 ; i<=row ; i++) {
for (int j=1 ; j<=col ; j++) scanf("%d", &matrix[i][j]);
}
scanf("%d%d%d%d", &i1, &j1, &i2, &j2);
int temp = matrix[i1][j1];
matrix[i1][j1] = matrix[i2][j2];
matrix[i2][j2] = temp;
for (int i=1 ; i<=row ; i++) {
for (int j=1 ; j<=col ; j++) printf("%d ", matrix[i][j]);
printf("\n");
}
}
Ma trận ►
#include <stdio.h>
int main() {
int Row, Col, matrix[1001][1001], QAmount, Question[1001][2];
scanf("%d%d%d", &Row, &Col, &QAmount);
for (int i=1 ; i<=Row ; i++) {
for (int j=1 ; j<=Col ; j++) scanf("%d", &matrix[i][j]);
}
for (int i=0 ; i<QAmount ; i++) {
scanf("%d%d", &Question[i][0], &Question[i][1]);
}
for (int i=0 ; i<QAmount ; i++) {
printf("%d\n", matrix[Question[i][0]][Question[i][1]]);
}
}
Thay đổi giá trị ►
#include <stdio.h>
int main() {
int row, col, matrix[1000][1000], AddRow, AddCol, AddNum;
scanf("%d%d", &row, &col);
for (int i=1 ; i<=row ; i++) {
for (int j=1 ; j<=col ; j++) scanf("%d", &matrix[i][j]);
}
scanf("%d%d%d", &AddRow, &AddCol, &AddNum);
matrix[AddRow][AddCol]=AddNum;
for (int i=1 ; i<=row ; i++) {
for (int j=1 ; j<=col ; j++) printf("%d ", matrix[i][j]);
printf("\n");
}
}
● Tổng trên hàng
#include <stdio.h>
int main() {
int row, col, matrix[1000][1000], sum=0;
scanf("%d%d", &row, &col);
for (int i=0 ; i<row ; i++) {
for (int j=0 ; j<col ; j++) scanf("%d", &matrix[i][j]);
}
for (int i=0 ; i<row ; i++) {
for (int j=0 ; j<col ; j++) {
sum+=matrix[i][j];
}
printf("%d ", sum);
sum=0;
}
}
● Xóa cột
#include <stdio.h>
int main() {
int row, col, matrix[1000][1000], DelCol;
scanf("%d%d", &row, &col);
for (int i=1 ; i<=row ; i++) {
for (int j=1 ; j<=col ; j++) scanf("%d", &matrix[i][j]);
}
scanf("%d", &DelCol);
for (int i=1 ; i<=row ; i++) {
for (int j=1 ; j<=col ; j++) if (j != DelCol) printf("%d ", matrix[i][j]);
printf("\n");
}
}
Xóa hàng ►
#include <stdio.h>
int main() {
int row, col, matrix[1000][1000], DelRow;
scanf("%d%d", &row, &col);
for (int i=1 ; i<=row ; i++) {
for (int j=1 ; j<=col ; j++) scanf("%d", &matrix[i][j]);
}
scanf("%d", &DelRow);
for (int i=1 ; i<=row ; i++) {
if (i != DelRow) {
for (int j=1 ; j<=col ; j++) printf("%d ", matrix[i][j]);
printf("\n");
}
}
}
Xâu kí tự ►
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
scanf("%s", str);
printf("%s", str);
}
Lời chào ►]
#include <stdio.h>
#include <string.h>
int main() {
char Name[20];
scanf("%s", Name);
printf("Hello, %s", Name);
}
So sánh xâu ►
#include <stdio.h>
#include <string.h>
int main() {
char str[100], str2[100];
scanf("%s %s", str, str2);
if (strcmp(str, str2) == 0) {
printf("yes");
} else printf("no");
}
Hai từ ►
#include <stdio.h>
#include <string.h>
int main() {
char str[10], str2[10];
scanf("%s %s", str, str2);
printf("%s,%s", str, str2);
}
● Chèn ký tự
#include <stdio.h>
#include <string.h>
int main() {
char str[100], add;
int pos;
scanf("%s %d %c", str, &pos, &add);
for (int i=0 ; i<strlen(str) ; i++) {
if (i == pos) printf("%c", add);
printf("%c", str[i]);
}
}
Đổi chỗ ký tự ►
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int a, b;
scanf("%s %d %d", str, &a, &b);
int temp = str[a];
str[a] = str[b];
str[b] = temp;
printf("%s", str);
}
Thay đổi ký tự ►
#include <stdio.h>
#include <string.h>
int main() {
char str[100], replace;
int pos;
scanf("%s %d %c", str, &pos, &replace);
str[pos] = replace;
printf("%s", str);
}

Xóa ký tự
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int n;
scanf("%s %d", str, &n);
memmove(&str[n], &str[n+1], strlen(str)-n);
printf("%s", str);
}

Đảo ngược xâu


#include <stdio.h>
#include <string.h>
int main() {
char str[100], reverse[100];
scanf("%s", str);
for (int i=strlen(str)-1 ; i>=0 ; i--) reverse[strlen(str)-1-i] = str[i];
printf("%s", reverse);
}

Đếm từ
#include <stdio.h>
#include <string.h>
int main() {
char str[1000];
int SoKT=1;
scanf("%[^\n]", str);
for (int i=0 ; i<strlen(str) ; i++) {
if (str[i] == ' ') SoKT++;
}
printf("%d", SoKT);
}

Đảo từ
#include <stdio.h>
#include <string.h>

void dao_chuoi(char str[])


{
int i, j, len;
char ch;
j = len = strlen(str) - 1;
i = 0;
while (i < j)
{
ch = str[j];
str[j] = str[i];
str[i] = ch;
i++;
j--;
}
}

int main()
{
char s1[100], daoTu[100], temp[50];
int i, j;
scanf("%[^\n]", s1);

for (i = strlen(s1) - 1; i >= 0; --i)


{
for (j = 0; i >= 0 && s1[i] != ' '; i--, j++)
temp[j] = s1[i];
temp[j] = '\0';
dao_chuoi(temp);
strcat(daoTu, temp);
strcat(daoTu, " ");
}

printf("%s", daoTu);
return 0;
}

Xâu con
#include <stdio.h>
#include <string.h>
int main() {
char strA[100], strB[100];
char *SubDetect;
scanf("%s %s", strA, strB);
SubDetect = strstr(strB, strA);
if (SubDetect != NULL) {
printf("YES");
} else printf("NO");
}

Biến đổi xâu

Mã hóa xâu

Xâu tương đương

Số đảo ngược
#include <math.h>

int reverse (char * path) {


int number, reverse = 0, digitCount = 0;
FILE *fp = fopen(path,"r");
fscanf(fp, "%d", &number);
int temp = number;
while (temp > 0) {
temp /= 10;
digitCount++;
}
for (int i=digitCount ; i>0 ; i--) {
reverse += number%10 * pow(10,i-1);
number /= 10;
}
return reverse;
}

Trò chơi Đánh cắp


bool canWinNim (char * path) {
int num;
FILE *fp = fopen(path,"r");
fscanf(fp, "%d", &num);
if (num%4 != 0) return 1;
return 0;
}

Trường Phù thủy và Pháp sư Hogwarts


#include <string.h>

char s[100];
char tam[10000];
int dem=0;
void housesOfHogwarts(const char* path)
{
FILE *fp = fopen(path, "r");
int n;
fscanf(fp, "%d",&n);
for (int i=0;i<=n;i++)
{
fgets(tam,sizeof(tam),fp);
tam[strcspn(tam, "\n")] = 0;
if (i>0) printf("%s\n",tam);
}
}

Hình chữ nhật


#include <stdio.h>

struct rectangle{
int length,height;
int getPerimeter (int length, int height){
return (length+height)*2;
}
int getArea(int _length, int _height){
return length*height;
}
};

int main() {
struct rectangle HCN;
scanf("%d %d", &HCN.length, &HCN.height);
printf("%d %d", HCN.getPerimeter(HCN.length, HCN.height),
HCN.getArea(HCN.length, HCN.height));
}

Hình trụ
#include <stdio.h>

struct cylinder{
int radius,height;
double getSurfaceArea (int radius, int height){
return 2*3.14*radius*(radius + height);
}
double getVolume(int radius, int height){
return 3.14*radius*radius*height;
}
};

int main() {
struct cylinder HT;
scanf("%d %d", &HT.radius, &HT.height);
printf("%.2lf %.2lf", HT.getSurfaceArea(HT.radius, HT.height),
HT.getVolume(HT.radius, HT.height));
}

Ngày tháng

Phân số

Số phức

Tam giác
Thời gian

● Đệ quy
Tổng các số lẻ
#include <stdio.h>

int sum(int n) {
if (n < 0) return 0;
return 2*n+1+sum(n-1);
}

int main() {
int n;
scanf("%d", &n);
printf("%d", sum(n));
}

Tích các số lẻ
#include <stdio.h>

long long int product(int n) {


if (n < 0) return 1;
return (2*n+1)*product(n-1);
}

int main() {
int n;
scanf("%d", &n);
printf("%lld", product(n));
}

Biểu thức đan xen


#include <stdio.h>
#include <math.h>

int sum(int n) {
if (n < 0) return 0;
return n*pow(-1,n+1)+sum(n-1);
}
int main() {
int n;
scanf("%d", &n);
printf("%d", sum(n));
}

Tổng giai thừa


#include <stdio.h>

int factorial(int n) {
if (n == 0) return 1;
return n*factorial(n-1);
}

int sum(int n) {
if (n == 0) return 0;
return factorial(n) + sum(n-1);
}
int main() {
int n;
scanf("%d", &n);
printf("%d", sum(n));
}

Tổng bình phương


#include <stdio.h>

int sum(int n) {
if (n == 0) return 0;
return n*n + sum(n-1);
}

int main() {
int n;
scanf("%d", &n);
printf("%d", sum(n));
}
Biểu thức căn bậc hai
#include <stdio.h>
#include <math.h>

double S (double n) {
if (n == 0) return 0;
return sqrt(n + S(n-1));
}

int main() {
double n;
scanf("%lf", &n);
printf("%.2lf", S(n));
}

Tổng phân số
#include <stdio.h>

double denominator(double n) {
if (n == 0) return 0;
return n+denominator(n-1);
}

double sum(double n) {
if (n == 0) return 0;
return 1/denominator(n) + sum(n-1);
}
int main() {
int n;
scanf("%d", &n);
printf("%.2lf", sum(n));
}

Biểu thức mũ
#include <stdio.h>
#include <math.h>
int sum (int n) {
if (n == 0) return 0;
return pow(n,n) + sum(n-1);
}

int main() {
int n;
scanf("%d", &n);
printf("%d", sum(n));
}

Biểu thức tổng tích lũy


#include <stdio.h>

int innerSum(int n) {
if (n == 0) return 0;
return n+innerSum(n-1);
}

int sum(int n) {
if (n == 0) return 0;
return innerSum(n) + sum(n-1);
}
int main() {
int n;
scanf("%d", &n);
printf("%d", sum(n));
}

Ước chung lớn nhất


#include <stdio.h>

int GCD (int a, int b, int n) {


if (a%n == 0 && b%n == 0) return n;
return GCD(a, b, n-1);
}

int main() {
int a, b;
scanf("%d %d", &a, &b);
if (a > b) printf("%d", GCD(a, b, b));
else printf("%d", GCD(a, b, a));
}

Dãy số Fibonacci
#include <stdio.h>

int Fibonacci (int n) {


if (n == 1) return 1;
else if (n == 0) return 0;
return Fibonacci(n-1) + Fibonacci(n-2);
}

int main() {
int n;
scanf("%d", &n);
printf("%d", Fibonacci(n));
}

Dãy đệ quy tổng


#include <stdio.h>

int f (int n) {
if (n == 1 || n == 0) return 1;
return 2*f(n-1) + f(n-2) + 1;
}

int main() {
int n;
scanf("%d", &n);
printf("%d", f(n));
}

Dãy đệ quy hiệu


#include <stdio.h>

int f (int n) {
if (n == 1 || n == 0) return 1;
return 3*f(n-1) - f(n-2);
}

int main() {
int n;
scanf("%d", &n);
printf("%d", f(n));
}

Giai thừa
#include <stdio.h>

int factorial (int n) {


if (n == 1) return 1;
return n*factorial(n-1);
}

int main() {
int n;
scanf("%d", &n);
printf("%d", factorial(n));
}

Lũy thừa
#include <stdio.h>

long long int power (int a, int b) {


if (b == 0) return 1;
return a*power(a, b-1);
}

int main() {
int a, b;
scanf("%d%d", &a, &b);
printf("%lld", power(a, b));
}

Phân tích tổng

Phân tích tổng lũy thừa


● Sử dụng thư viện có sẵn
Hoán vị tiếp theo

Sắp xếp

Unique

● Lỗi và gỡ lỗi (debug)


Tìm lỗi

● Con trỏ / Tham chiếu


Đảo xâu
#include <stdio.h>
#include <string.h>

void reverse(char *s) {


for (int i=0 ; i<strlen(s)/2 ; i++) {
char temp = s[i];
s[i] = s[strlen(s)-1-i];
s[strlen(s)-1-i] = temp;
}
}

Độn phải
#include <stdio.h>
#include <string.h>

void pad_right(char *s, int n) {


if (strlen(s)<n) {
while (strlen(s)<n) strcat(s, "_");
}
}

Độn trái
#include <stdio.h>
#include <string.h>

void pad_left(char *s, int n) {


char add[100] = "_";
if (strlen(s)<n) {
while (strlen(s)+strlen(add)<n) strcat(add, "_");
strcat(add, s);
strcpy(s, add);
}
}

Lọc phải

Lọc trái

Tổng dãy số
int getSum(int *a, int n) {
int sum = 0;
for (int i=0 ; i<n ; i++) {
sum += a[i];
}
return sum;
}

Xóa ký tự

● Mẫu hàm, mẫu lớp (Template)


Đổi chỗ

Thống kê

Tìm số lớn nhất

Tính tổng 2 số

Tổng các số

● Lớp trừu tượng


Hello World
class HelloMessage: public Message {
public:
void Print() const override {
printf("Hello, World!");
}
};
Hình vuông

Hình chữ nhật

Hình tam giác

Hình tròn

● Ngoại lệ
Chuyển đổi

Phép chia

Phép cộng

You might also like