1. Home
  2. Lập Trình
  3. Bài Tập Code C/C++ Cơ Bản Đến Nâng Cao Có Lời Giải – Phần 1
Nguyễn Tuấn 3 năm trước

Bài Tập Code C/C++ Cơ Bản Đến Nâng Cao Có Lời Giải – Phần 1

Bài tập code C/C++ đơn giản dành cho các bạn vừa trải qua khóa học tổng quan về C/C++. Giúp các bạn củng cố và nắm chắc kiến thức hơn. Để chạy code các bạn có thể copy và vào trang này để chạy test nhá: https://www.onlinegdb.com/

Bài 1: Tính tổng S(n) = 1 + 2 + 3 + … + n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long S;
	S = 0;
	i = 1;
	printf("\nNhap n: ");
	scanf("%d", &n);

	while(i <= n)
	{
		S = S + i;
		i++;
	}
	printf("\nTong 1 + 2 + ... + %d la %ld: ", n, S);
	getch();
	return 0;
}

Bài 2: Code C Tính tổng S(n) = 1^2 + 2^2 + … + n^2

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long S;
	S = 0;
	i = 1;
	printf("\nNhap n: ");
	scanf("%d", &n);

	while(i <= n)
	{
		S = S + i * i;
		i++;
	}
	printf("i = %d", i);
	printf("\nTong 1^2 + 2^2 + ... + %d^2 la: %ld", n, S);

	getch();
	return 0;
}

Bài 3: Tính tổng S(n) = 1 + ½ + 1/3 + … + 1/n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	float S;
	S = 0; i = 1;
	do
	{
		printf("\nNhap n: ");
		scanf("%d", &n);
		if(n < 1)
		{
			printf("\nN phai lon hon hoac bang 1. Xin nhap lai !");
		}

	}while(n < 1);

	while(i <= n)
	{
		S = S + 1.0 / i;  // phải nhớ là 1.0 / i
		i++;
	}
	printf("i = %d", i);
	printf("\nS = %f", S);
	printf("\nTong 1 + 1/2 + ... + 1/%d la %.2f: ",n, S);

	getch();
	return 0;
}

Bài 4: Tính tổng S(n) = ½ + ¼ + … + 1/2n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	float S;
	S = 0;
	do
	{
		printf("\nNhap n: ");
		scanf("%d", &n);
		if(n < 1)
		{
			printf("\nN phai lon hon hoac bang 1. Xin nhap lai !");
		}
	}while(n < 1);

	for(i = 1; i <= n; i++)
	{
		S = S + 1.0 / (2 * i);
	}
	printf("\nTong la: %f", S);

	getch();
	return 0;
}

Bài 5: Tính tổng S(n) = 1 + 1/3 + 1/5 + … + 1/(2n + 1)

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	float S;
	S = 0;
	do
	{
		printf("\nNhap n: ");
		scanf("%d", &n);
		if(n < 1)
		{
			printf("\nN phai lon hon hoac bang 1. Xin nhap lai !");
		}
	}while(n < 1);

	for(i = 0; i < n; i++)
	{
		S = S + 1.0 / ((2 * i) + 1);
	}
	printf("\nTong la: %f", S);

	getch();
	return 0;
}

Bài 6: Tính tổng S(n) = 1/1×2 + 1/2×3 +…+ 1/n x (n + 1)

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	float S;
	S = 0;
	i = 1;
	do
	{
		printf("\nNhap n: ");
		scanf("%d", &n);
		if(n < 1)
		{
			printf("\nN phai lon hon hoac bang 1. Xin nhap lai !");
		}
	}while(n < 1);

	while(i <= n)
	{
		S = S + 1.0 / (i * (i + 1));
		i++;
	}
	printf("\nTong la %f", S);

	getch();
	return 0;
}

Bài 7: Tính tổng S(n) = ½ + 2/3 + ¾ + …. + n / n + 1

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	float S;
	S = 0;
	i = 1;
	do
	{
		printf("\nNhap n: ");
		scanf("%d", &n);
		if(n < 1)
		{
			printf("\nN phai lon hon hoac bang 1. Xin nhap lai !");
		}
	}while(n < 1);

	while(i <= n)
	{
		S = S + (float)i / (i + 1);
		i++;
	}
	printf("\nTong la %f", S);

	getch();
	return 0;
}

Bài 8: Tính tổng S(n) = ½ + ¾ + 5/6 + … + 2n + 1/ 2n + 2

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	float S;
	S = 0;
	i = 0;
	do
	{
		printf("\nNhap n: ");
		scanf("%d", &n);
		if(n < 1)
		{
			printf("\nN phai lon hon hoac bang 1. Xin nhap lai !");
		}
	}while(n < 1);

	while(i < n)
	{
		S = S + (float)(2 * i + 1) / (2 * i + 2);
		i++;
	}
	printf("\nTong la %f", S);

	getch();
	return 0;
}

Bài 9: Tính tổng T(n) = 1 x 2 x 3…x N

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long P;
	i = 1;
	P = 1;
	do
	{
		printf("\nNhap n: ");
		scanf("%d", &n);
		if(n < 1)
		{
			printf("\nN phai lon hon hoac bang 1. Xin nhap lai !");
		}
	}while(n < 1);

	while(i < n)
	{
		P = P * i;
		i++;
	}
	printf("\nTich 1x2x....x%d la: %ld", i, P);

	getch();
	return 0;
}

Bài 10: Tính tổng T(x, n) = x^n

#include<stdio.h>
#include<conio.h>


double Power_n(double x, long n)
{
	// n >= 0
	double result = 1;
	while(n--)
	{
		result = result * x;
	}
	return result;
}
double qPower_n(double x, long n)
{
	// n >= 0
	double result = 1;
	while(n)
	{
		if(n % 2 == 1)
		{
			result = result * x;
		}
		x = x * x;
		n = n / 2;
	}
	return result;
}
int main()
{
	double x = 3;
	long n = 2;
	double z;
	z = qPower_n(x, n);
	printf("z = %f", z);

	getch();
	return 0;
}

Bài 11: Tính tổng S(n) = 1 + 1.2 + 1.2.3 + … + 1.2.3….N

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long S, P;
	S = 0;
	P = 1;
	i = 1;
	do
	{
		printf("\nNhap n: ");
		scanf("%d", &n);
		if(n < 1)
		{
			printf("\nN phai lon hon hoac bang 1. Xin nhap lai !");
		}
	}while(n < 1);

	while(i <= n)
	{
		P = P * i;
		S = S + P;
		i++;
	}
	printf("\nTong la %d",S);

	getch();
	return 0;
}

Bài 12: Tính tổng S(n) = x + x^2 + x^3 + … + x^n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	float x, T, S;
	i = 1;
	T = 1;
	S = 0;
	printf("\nNhap x: ");
	scanf("%f", &x);

	printf("\nNhap n: ");
	scanf("%d", &n);

	while(i <= n)
	{
		T = T * x;
		S = S + T;
		i++;
	}
	printf("\nTong la %f",S);

	getch();
	return 0;
}

Bài 13: Tính tổng S(n) = x^2 + x^4 + … + x^2n

#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
	int i, n;
	float x, T, S;
	i = 1;
	T = 1;
	S = 0;
	printf("\nNhap x: ");
	scanf("%f", &x);

	printf("\nNhap n: ");
	scanf("%d", &n);

	while(i <= n)
	{
		//T = T * x * x;
		T = pow(x, (2 * i ));
		S = S + T;
		i++;
	}
	printf("\nTong la %f",S);

	getch();
	return 0;
}

Bài 14: Tính tổng S(n) = x + x^3 + x^5 + … + x^2n + 1

#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
	int i, n;
	float x, T, S;
	i = 0;
	T = 1;
	S = 0;
	printf("\nNhap x: ");
	scanf("%f", &x);

	printf("\nNhap n: ");
	scanf("%d", &n);

	while(i < n)
	{
		T = pow(x, (2 * i + 1));
		S = S + T;
		i++;
	}

	printf("\nTong la %f",S);

	getch();
	return 0;
}

Bài 15: Tính tổng S(n) = 1 + 1/1 + 2 + 1/ 1 + 2 + 3 + ….. + 1/ 1 + 2 + 3 + …. + N

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	float S, T;
    i = 1;
	S = 0;
	T = 0;
	do
	{
	printf("\nNhap n: ");
	scanf("%d", &n);
	  if(n < 1)
	   {
		printf("\nN phai >= 1. Xin Nhap lai!");
	   }
	}while(n < 1);

	while(i <= n)
	{
		T = T + i;
		S = S + 1.0 / T;
		i++;
	}
	printf("\nTong la %f", S);

	getch();
	return 0;
}

Bài 16: Code C Tính tổng S(n) = x + x^2/1 + 2 + x^3/1 + 2 + 3 + … + x^n/1 + 2 + 3 + …. + N

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	float x, S, T;
	long M;
	printf("\nNhap x: ");
	scanf("%f", &x);
	do
	{
	printf("\nNhap n: ");
	scanf("%d", &n);
	  if(n < 1)
	  {
		  printf("\n N phai >= 1. Xin nhap lai !");
	  }

	}while(n < 1);

	S = 0;
	T = 1;
	M = 0;
	i = 1;

	while(i <= n)
	{
		T = T * x;
		M = M + i;
		S = S + T/M;
		i++;
	}
	printf("\nTong la %f", S);
	getch();
	return 0;
}

Bài 17: Code C Tính tổng S(n) = x + x^2/2! + x^3/3! + … + x^n/N!

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	float x, S, T;
	long M;
	printf("\nNhap x: ");
	scanf("%f", &x);
	do
	{
	printf("\nNhap n: ");
	scanf("%d", &n);
	  if(n < 1)
	  {
		  printf("\n N phai >= 1. Xin nhap lai !");
	  }

	}while(n < 1);

	S = 0;
	T = 1;
	M = 1;
	i = 1;

	while(i <= n)
	{
		T = T * x;
		M = M * i;
		S = S + T/M;
		i++;
	}
	printf("\nTong la %f", S);
	getch();
	return 0;
}

Bài 18: Code C Tính tổng S(n) = 1 + x^2/2! + x^4/4! + … + x^2n/(2n)!

#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
	int i, n;
	float x, S, T;
	long M, N;
	printf("\nNhap x: ");
	scanf("%f", &x);
	do
	{
	printf("\nNhap n(n >= 0) : ");
	scanf("%d", &n);
	  if(n < 0)
	  {
		  printf("\n N phai >= 0. Xin nhap lai !");
	  }

	}while(n < 0);

	S = 1;
	N = 1;
	i = 1;

	while(i <= n)
	{
		T = pow(x, (2 * i ));
		M = i * 2;
		N = N * M * (M - 1);
		S = S + T/N;
		i++;
	}
	printf("\nTong la %f", S);
	getch();
	return 0;
}

Bài 19: Tính tổng S(n) = 1 + x + x^3/3! + x^5/5! + … + x^(2n+1)/(2n+1)!

#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
	int i, n;
	float x, S, T;
	long M, N;
	printf("\nNhap x: ");
	scanf("%f", &x);
	do
	{
	printf("\nNhap n(n >= 1) : ");
	scanf("%d", &n);
	  if(n < 1)
	  {
		  printf("\n N phai >= 1. Xin nhap lai !");
	  }

	}while(n < 1);

	S = 1;
	N = 1;
	i = 1;

	while(i <= n)
	{
		T = pow(x, (2 * i + 1));
		M = i * 2 + 1;
		N = N * M * (M - 1);
		S = S + x + T/N;
		i++;
	}
	printf("\nTong la %f", S);
	getch();
	return 0;
}

Bài 20: Liệt kê tất cả các ước số của số nguyên dương n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;

	while(i <= n)
	{
		if(n % i == 0)
			printf("%4d", i);
			i++;
	}

	getch();
	return 0;
}

Bài 21: Tính tổng tất cả các ước số của số nguyên dương n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long S;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;
	S = 0;
	while(i <= n)
	{
		if(n % i == 0)
		{
			printf("%4d", i);
		   S = S + i;
		}
			i++;
	}
	printf("\nTong cac uoc cua %d la: %ld", n, S);
	getch();
	return 0;
}

Bài 22: Tính tích tất cả các ước số của số nguyên dương n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long P;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;
	P = 1;
	while(i <= n)
	{
		if(n % i == 0)
		{
		   printf("%4d", i);
		   P = P * i;
		}
			i++;
	}
	printf("\nTich cac uoc cua %d la: %ld", n, P);
	getch();
	return 0;
}

Bài 23: Đếm số lượng ước số của số nguyên dương n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	int count;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;
	count = 0;
	while(i <= n)
	{
		if(n % i == 0)
		{
		   printf("%4d", i);
		   count++;
		}
			i++;
	}
	printf("\nSo luong cac uoc so cua %d la: %d", n , count);
	getch();
	return 0;
}

Bài 24: Liệt kê tất cả các ước số lẻ của số nguyên dương n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;

	printf("\nCac uoc so le cua so %d la: ",n);
	while(i <= n)
	{
		if(n % i == 0)
		{
			if(i % 2 == 1)
			printf("%4d", i);
		}
			i++;
	}

	getch();
	return 0;
}

Bài 25: Tính tổng tất cả các ước số chẵn của số nguyên dương n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long S;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;
    S = 0;
	printf("\nCac uoc so chan cua so %d la: ",n);
	while(i <= n)
	{
		if(n % i == 0)
		{
			if(i % 2 == 0)
			{
			printf("%4d", i);
			S = S + i;
			}
		}
			i++;
	}
	printf("\nTong cac uoc so chan cua %d la: %ld", n, S);

	getch();
	return 0;
}

Bài 26: Tính tích tất cả các ước số lẻ của số nguyên dương n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long P;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;
    P = 1;
	printf("\nCac uoc so le cua so %d la: ",n);
	while(i <= n)
	{
		if(n % i == 0)
		{
			if(i % 2 == 1)
			{
			printf("%4d", i);
			P = P * i;
			}
		}
			i++;
	}
	printf("\nTich cac uoc so le cua %d la: %ld", n, P);

	getch();
	return 0;
}

Bài 27: Đếm số lượng ước số chẵn của số nguyên dương n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	int count;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;
    count = 0;
	printf("\nCac uoc so chan cua so %d la: ",n);
	while(i <= n)
	{
		if(n % i == 0)
		{
			if(i % 2 == 0)
			{
			printf("%4d", i);
			count++;
			}
		}
			i++;
	}
	printf("\nSo luong uoc so chan cua %d la: %ld", n, count);

	getch();
	return 0;
}

Bài 28: Cho số nguyên dương n. Tính tổng các ước số nhỏ hơn chính nó. ( Tính tổng các ước số nhỏ hơn n )

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long S;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;
	S = 0;
	printf("\nCac uoc nho hon %d la",n);
	while(i < n)
	{
		if(n % i == 0)
		{
			printf("%4d", i);
		   S = S + i;
		}
			i++;
	}
	printf("\nTong cac uoc nho hon %d la: %ld", n, S);
	getch();
	return 0;
}

Bài 29: Tìm ước số lẻ lớn nhất của số nguyên dương n

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n, max;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;
	max = 1;
	printf("\nCac uoc so le cua so %d la: ",n);
	while(i <= n)
	{
		if((n % i == 0) && (i % 2 == 1))
		{
			if(i > max)
			{
			max = i;
			}
			printf("%4d", i);
		}
			i++;
	}
	printf("\nUoc so le lon nhat la %d", max);

	getch();
	return 0;
}

Bài 30: Kiểm tra số nguyên dương n có phải là số hoàn thiện hay không?

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	long S;
	do
	{
	printf("\nNhap n(n > 0): ");
	scanf("%d", &n);
	  if(n <= 0)
	   {
		printf("\n N phai > 0. Xin nhap lai !");
	   }
	}while(n <= 0);
    i = 1;
	S = 0;
	while(i < n)
	{
		if(n % i == 0)
		{
		   S = S + i;
		}
			i++;
	}
	if(S == n)
		printf("\n%d la so hoan thien", n);
	else
		printf("\nSo nhap vao khong la so hoan thien");
	getch();
	return 0;
}

Bài 31: Kiểm tra số nguyên dương n có phải là số nguyên tố hay không?

#include<stdio.h>
#include<conio.h>

int main()
{
	int i, n;
	printf("\nNhap n: ");
	scanf("%d", &n);

	if(n < 2)
		printf("\nSo %d khong phai la so nguyen to", n);
	else if(n == 2)
		printf("\nSo %d la so nguyen to", n);
	else if(n % 2 == 0)
		printf("\nSo %d khong phai la so nguyen to", n);
	else
	{
		for(i = 3; i <= n; i+=2)
		{
			if(n % i == 0)
				break;
		}
		if(i == n)
			printf("\nSo %d la so nguyen to", n);
		else
			printf("\nSo %d khong phai la so nguyen to", n);
	}
		


	getch();
	return 0;
}

Bài 32: Kiểm tra số nguyên dương n có phải là số chính phương hay không?

#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
	int i, n;
	do
	{
	printf("\nNhap n: ");
	scanf("%d", &n);

	   if(n <= 0)
		   printf("\nn phai > 0. Xin nhap lai !");

	}while(n <= 0);
	/*Số chính phương là số mà kết quả khai căn bậc 2 là 1 số nguyên
	sqrt(4) = 2.00000 => ép về nguyên = 2 => vì 2.000  == 2 (true) => là số chính phương
	sqrt(5) = 2.23234 => ép về nguyên = 2 => vì 2.4324 != 2 (false) => không là số chính phương*/
	if (sqrt((float)n) == (int)sqrt((float)n))  // So sánh 2 số khi chưa ép về kiểu nguyên và số đã ép về kiểu nguyên
	{
		printf("\n%d La so chinh phuong", n);
	}
	else
	{
		printf("\n%d Khong la so chinh phuong", n);
	}

	getch();
	return 0;
}

Bài 33: Cho n là số nguyên dương. Hãy tìm giá trị nguyên dương k lớn nhất sao cho S(k) < n. Trong đó chuỗi k được định nghĩa như sau: S(k) = 1 + 2 + 3 + … + k

#include<stdio.h>

int main(){
int i;
int n;
int s=0;
do
{
printf("Nhap vap n:\n");
scanf("%d",&n);
if(n < 1)
{
printf("n phai lon hon bang 1\n");
}
}while(n < 1);

for(i=1;i<=n;i++)
{
s = s + i ;
if(s>=n)
{
printf("So k can tim la : %d",(i-1));
break;
}
}
return 0;
}

Cảm ơn các bạn đã ghé thăm. Chúc các bạn thành công!

23 lượt xem | 0 bình luận