Kiến thức

Bài tập C++ có lời giải/Vòng lặp – Wikibooks tiếng Việt

Bạn đang xem: Bài tập C++ có lời giải/Vòng lặp – Wikibooks tiếng Việt

Bài tập C++ có lời giải/Vòng lặp

Tủ sách mở Wikibooks
<

Bài tập C++ có lời giải

Bước tới điều hướng

Bước tới tìm kiếm

Bài 1: Nhập 1 số nguyên n, xuất tổng từ 1 đến n.

VD:

Input Output
3 6
#include <iostream> using namespace std; int main() {  int n , s = 0;  cin>>n;  for(int i = 1; i <= n; i++)  {  s = s+i;  }   cout << s;  return 0; } 

Bài 2: Nhập 1 số nguyên n, xuất tổng các số lẻ từ 1 đến n.

VD:

Input Output
3 4
#include <iostream> using namespace std;  int main() {  int n , s = 0;  cin>>n;  for(int i=1; i<=n; i=i+2)  {  s = s+i;  }   cout << s;  return 0; } 

Bài 3: Nhập vào 1 số nguyên n, yêu cầu xuất tất cả số nguyên tố từ 1 đến n (mỗi số cách 1 khoảng trắng), nếu không có số nào, xuất -1.

VD:

Input Output
5 2 3 5
#include <iostream> #include <math.h> using namespace std;  int main() {  int n;  cin >> n;  if (n > 1) {  for (int i = 2; i <= n; i++) {  int sus = 0;  for (int j = 1; j <= i; j++) {  if ((i % j) == 0)  sus++;  }  if (sus == 2)  cout << " " << i;  }  }  else  cout << -1 << endl;  return 0; } 

Bài 4: Nhập vào 1 số nguyên n, xuất ra n!.

VD:

Input Output
3 6
#include <iostream> using namespace std;  int main() {  int n , giaithua = 1;  cin >> n;  for (int i = 1; i <= n; i++) {  giaithua = giaithua*i;  }  cout << giaithua << endl;  return 0; } 

Bài 5: Nhập vào số i, yêu cầu xuất ra bảng cửu chương thứ i.

VD:

Input Output
2 2×1=2

2×2=4

2×3=6

2×4=8

2×5=10

2×6=12

2×7=14

2×8=16

2×9=18

2×10=20

#include <iostream> using namespace std;  int main() {  int i, j, tich;  cin >> i;  tich = 0;   for (j = 1; j <= 10; j++)  {  tich = i*j;  cout << i << "x" << j << "=" << tich << endl;  }  return 0; } 

Bài 6: Tính kết quả của phép toán 1+1/23+1/33+…+1/n3 (làm tròn 3 chữ số thập phân).

VD:

Input Output
3 1.162
#include <iostream> #include <iomanip> using namespace std; int main() {  float i, S, n;  cin >> n;  S = 0;  for (i = 1; i <= n; i++) {  S = S + 1 / (i*i*i);  }   cout << setiosflags(ios :: fixed);  cout << setprecision(3) << S << endl;  return 0; } 

Bài 7: Tính kết quả của phép toán sau (làm tròn 3 chữ số thập phân): 1+23+23×45+23×45×67+……+23×45×67×89×…×2(n+1)(2n+3){displaystyle 1+{frac {2}{3}}+{frac {2}{3}}times {frac {4}{5}}+{frac {2}{3}}times {frac {4}{5}}times {frac {6}{7}}+……+{frac {2}{3}}times {frac {4}{5}}times {frac {6}{7}}times {frac {8}{9}}times …times {frac {2(n+1)}{(2n+3)}}}

VD:

Input Output
3 3.06
#include <iostream> #include <stdio.h> #include <iomanip> using namespace std; int main() {  int n;  cin >> n;  double res = 1.0;  double temp = 1.0;  for (int i=0; i<=n; i++)  {  temp *= (2.0*(i+1.0))/(2.0*i+3.0);  res += temp;  }  printf("%.2f", res);  return 0; } 

Bài 8: Một cặp số nguyên dương được gọi là số bạn bè nếu tổng các ước số của số này bằng chính số kia. Hãy viết chương trình kiểm tra xem 2 số nhập vào có phải là số bạn bè hay không. Nếu phải thì xuất ‘YES’, ngược lại là ‘NO’.

VD:

– 220 và 284 là cặp số bạn bè vì tổng các ước số của 220 là: 1+2+4+5+10+11+20+22+44+55+110=284 và tổng các ước số của 284 là 1+2+4+71+142=220.

Input Output
1184 1210 YES
220 284 YES
20 12 NO
#include <iostream> using namespace std;  int main() {  int a, b, sa = 0, sb = 0;  cin >> a >> b;  for (int i = 1; i < a; i++) {  if (a%i == 0) {  sa = sa + i;  }  }   for (int i = 1; i < b; i++) {  if (b%i == 0) {  sb = sb + i;  }  }   if (sa == b && sb == a) cout << "YES";  else cout << "NO";  cout << endl;   return 0; } 

Bài 9: Một số nguyên dương có n chữ số được gọi là số Armstrong khi tổng các lũy thừa bậc n của các chữ số của nó bằng chính nó. Hãy kiểm tra xem một số nguyên dương N nhập vào từ bàn phím có phải là số Armstrong hay không. Nếu phải thì xuất ‘YES’, ngược lại là ‘NO’.

VD:

  • 371 là số Armstrong vì: 3^3 + 7^3 + 1^3 = 371
  • 8208 là số Armstrong vì: 8^4 + 2^4 + 8^4 = 8208
Input Output
123 NO
8208 YES
#include <iostream> #include <stdio.h> #include <math.h> using namespace std; int main() {  int N;  while(cin >> N) {  int S = 0;  int SoChuSo = 0;  int p = N;  int q = N;  while(N>0) {  N=N/10;  SoChuSo += 1;  }  for(int l = 1; l <= SoChuSo ; l++) {  int m = p % 10;  p = p / 10;  S += pow(m , SoChuSo);  }  if (S == q)  cout << "YES" ;  else  cout << "NO" ;  }  return 0; } 

Bài 10: Hãy tìm tất cả các số Armstrong trong đoạn [A; B] với A, B là 2 số nhập từ bàn phím. Nếu không có thì xuất -1.

VD:

Input Output
30 40 -1
8000 9000 8208
#include <iostream> #include <math.h> #include <string> using namespace std ; int DemCacSoChuSo (int N) {  return log10(N) + 1; }  bool Armstrong (int N) {  int biendem = DemCacSoChuSo(N);  int ngoisao = N ;  int T ;  int TongCong = 0 ;  while (N) {  T = N % 10 ;  TongCong += pow (T , biendem) ;  N /= 10 ;  }  return TongCong == ngoisao ; }  int main() {  int a , b , A[100] , ChuS = 0 ;  cin >> a >> b ;  if (a > b) {  int tm = a;  a = b;  b = tm;  }  for (int j = a ; j <= b ; j++) {  if (Armstrong(j)) {  A[ChuS++] = j;  }  }  if (ChuS == 0)  cout << "-1" ;  else {  for (int k = 0 ; k < ChuS; k++) {  cout << A[k] << " " ;  }  }  return 0; } 

Bài 11: Cho trước số nguyên dương n. Hãy xuất ra màn hình tất cả các bộ 3 số Pytago mà cả 3 số đều <= n (mỗi bộ số 1 dòng và xuất theo thứ tự tăng dần của các cạnh).

– Với 3 số nguyên dương cho trước (a < b < c), nếu 3 số đó là độ dài 3 cạnh của một tam giác vuông thì bộ 3 số này được gọi là bộ 3 số Pytago.

VD:

Input Output
13 3 4 5
5 12 13
6 8 10
#include <iostream> #include <cmath> using namespace std; int main() {  int n,a,b,x,y,i,j,k,l,tong;  cin>>n;  a=1;  b=0;  if (n<5) cout<<-1;  else  {  for (i=1;i<n;i++)  {  for (j=i+1;j<n;j++)  {  double z=sqrt(i*i+j*j);  if((int)z==z && ( z<n || z==n))  cout<<i<<" "<<j<<" "<<(int)z<<endl;  }  }  } } 

Bài 12: Kiểm tra số vừa nhập có phải là số nguyên tố không.

#include "math.h" #include "iostream" using namespace std; bool isprime(int) ; bool isprime(int x){  if (x < 2) return false;  else{  int i;  for (i = 2; i <= sqrt(x); i++){  if (x%i == 0){  return false;  break;  }  }  if (i>sqrt(x)) return true;  } }  int main() {  int n;  cin >> n;  bool x = isprime(n);  if (x == true) cout << "true";  else cout << "false";  cout << endl;  return 0; } 

Bài 13: Kiểm tra số vừa nhập có phải là số hoàn hảo không?

– Số hoàn hảo là số mà tổng ước số của nó (không tính nó) bằng chính nó.

VD:

Input Output
6 YES
#include <iostream> using namespace std;  bool istuc(int); bool istuc(int x){  int s = 0;  for (int i = 1; i < x; i++){  if (x%i == 0) s += i;  }  if (s==x) return true;  else return false; };  int main() {  int n;  cin >> n;  if (istuc(n)==true) cout << "Yes";  else cout << "No";  cout << endl;  return 0; } 

Bài 14: Nhập vào 1 số nguyên ở hệ thập phân, yêu cầu xuất ra 1 số ở hệ nhị phân.

#include "iostream" #include "string.h" using namespace std; int main() {  long n;  cin >> n;  char s[100];  int t = 0;  while (n > 0) {  s[t] = '0' + n % 2;  t++;  n = n / 2;  }  s[t] = '';  for (int i = strlen(s) - 1; i >= 0; i--) {  cout << s[i];  }  cout << endl;  return 0; } 

Bài 15: Tìm số nhỏ nhất và lớn nhất trong mảng.

#include "iostream" using namespace std; int main() {  int a[100];  int n = 0;  int x;  while (cin >> x) {  a[n] = x;  n++;  }  int maxval = a[0], minval = a[0];  for (int i = 1; i < n; i++) {  if (maxval < a[i])  maxval = a[i];  if (minval > a[i])  minval = a[i]; }  cout << minval << endl;  cout << maxval << endl;   return 0; } 

Bài 16: Cho biết dân số một thành phố là 5000000 người. Biết rằng tỷ lệ tăng dân số của thành phố này là 2% mỗi năm. Hãy tính dân số của thành phố này sau n năm nữa (n là số nguyên nhập vào từ bàn phím).

#include <iostream> using namespace std; int main() {  int n, soDan = 5000000;  cout << "So dan cua thanh pho hien tai la 5000000, moi nam tang 2% ti le dan so. ";  cin >> n;  for (int i = 1; i <= n; i++) {  soDan = soDan + (soDan * 2/100);  }  cout << "nTrong vong " << n << " nam toi, so dan cua thanh pho nay se la " << soDan << ".";  return 0; } 

Bài 17: Giả sử chúng ta gửi vào ngân hàng một khoản tiền là 1000000đ, với lãi suất là 1.5%/tháng. Sau mỗi tháng nhập lãi vào vốn để tính cho tháng sau. Hãy tính xem sau bao lâu chúng ta sẽ có khoản vốn lớn hơn 2000000.

#include <iostream> using namespace std; int main() {  int n, soTien = 1000000;  cout << "So tien trong ngan hang hien tai la 1.000.000, lai suat 1,5%/thang (nhap vao von khong lay ra). ";  while (soTien < 2000000) {  soTien = soTien + (soTien * 1.5/100);  n++;  }  cout << "nTrong vong " << n << " thang toi, so tien von se hon 2.000.000.";  return 0; } 

Bài 18: Cho a là số thực, b là số tự nhiên. Hãy tính a^b.

#include <iostream> using namespace std; int main() {  float a;  int b;  long luyThua = 1;  cin >> a >> b;  cout << "a = " << a << "; " << "b = " << b << endl;  for (int i = 1; i <= b; i++) {  luyThua = luyThua * a;  }  cout << "a^b" << " = " << luyThua << endl;  return 0; } 

Bài 19: Cho số tự nhiên n. Hãy cho biết n có bao nhiêu ước số. Từ đó cho biết n có phải là số nguyên tố hay không.

#include <iostream> using namespace std; int main() {  int n;  cin >> n;  if (n <= 0) {  cout << "Nhap lai n" << endl;  }  else {  int count = 0;  for (int i = 1; i <= n; i++) {  if (n % i == 0) {  cout << i << " ";  count++;  }  }  if (count == 2) {  cout << endl;  cout << n << " la so nguyen to." << endl;  }  else {  cout << endl;  cout << n << " khong phai so nguyen to." << endl;  }  }  return 0; } 

Bài 20: Cho hai số tự nhiên a, b. Tính ước chung lớn nhất của a và b.

#include <iostream> using namespace std; int main () {  int a, b, min, ucln;  cin >> a >> b;  cout << "a = " << a << ";" << " b = " << b << endl;  if (a == 0 || b == 0) {  cout << "Uoc chung lon nhat cua " << a << " va " << b << " la " << a+b << endl;  }  else {  if (a < b)  min = a;  else min = b;   for (int i = 1; i <= min; i++) {  if (a%i == 0 && b%i == 0)  ucln = i;  }  cout << "Uoc chung lon nhat cua " << a << " va " << b << " la " << ucln << endl;  }  return 0; } 

Bài 21: Cho số tự nhiên n. Tính các tổng sau:
a) 1.2+2.3+3.4+…+n(n+1){displaystyle 1.2+2.3+3.4+…+n(n+1)}
b) 12+22+32+…+n2{displaystyle 1^{2}+2^{2}+3^{2}+…+n^{2}}
c) 1+12+13+…+1n{displaystyle 1+{frac {1}{2}}+{frac {1}{3}}+…+{frac {1}{n}}}

#include <iostream> using namespace std; int main () {  int n;  cin >> n;  //câu a  int s1 = 0;  for (int i = 1; i <= n; i++) {  s1 = s1 + i*(i+1);  }  //câu b  int s2 = 0;  for (int i = 1; i <= n; i++) {  s2 = s2 + i*i;  }  //câu c  float s3 = 0;  for (float i = 1; i <= n; i++) {  s3 = s3 + 1/i;  }  cout << "S1 = " << s1 << endl; //câu a  cout << "S2 = " << s2 << endl; //câu b  cout << "S3 = " << s3 << endl; //câu c   return 0; } 

Lấy từ “

https://vi.wikibooks.org/w/index.php?title=Bài_tập_C%2B%2B_có_lời_giải/Vòng_lặp&oldid=227437

Chuyên mục: Kiến thức

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button