You are on page 1of 8

Bài tập C++

MẢNG – KÝ TỰ - CHUỖI
Bài 1: Tìm các số chính phương và nguyên tố trong mảng

Dòng 1: Nhập vào N là số lượng phần tử của mảng


Dòng 2: Nhập N số nguyên (mỗi số cách 1 khoảng trắng)
VD:

Input
Output
4
1234
14
23
#include <iostream>
#include <math.h>

using namespace std ;

int main() {

int sl , day , T ;
int K[100] ;

cin >> sl ;
for (int i = 0 ; i < sl ; i++) {
cin >> day ;
K[i] = day ;
}

// so CP
for (int i = 0 ; i < sl ; i++) {
T = sqrt(K[i]) ;
if (T*T == K[i])
cout << K[i] ;
}
cout << endl ;

// so NT
for (int i = 0 ; i < sl ; i++) {

bool flag = true ;


if (K[i] < 2)
flag = false ;

for (int j = 2 ; j <= sqrt(K[i]) ; j++) {


if (K[i] % j == 0) {
flag = false ;
break;
}
}

if(flag==true) cout << K[i] ;

return 0;
}
Bài 2: Tìm các số âm và dương trong mảng

Dòng 1: Nhập vào N là số lượng phần tử của mảng


Dòng 2: Nhập N số nguyên (mỗi số cách 1 khoảng trắng)
#include <iostream>
using namespace std ;

int main() {

int K[100] , n , d ;
cin >> n ;

for (int i =0 ; i<n ; i++) {


cin >> d ;
K[i] = d ;
}

for (int i = 0 ; i < n ; i++) {


if (K[i] < 0)
cout << K[i] ;
}
for (int i = 0 ; i < n ; i++) {
if (K[i] > 0)
cout << K[i] ;
}

return 0;
}
Bài 3: 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 4: Tìm đường chéo chính của ma trận vuông NxN

- Dòng 1: Số nguyên N

- Dòng 2: Nhập N dòng, mỗi dòng gồm N số nguyên (cách nhau 1 khoảng trắng)

VD:
Input
Output
3
123
456
789
159
#include <iostream>

using namespace std;

int main()
{
float A[10][10];
int n, a, b;
cin >> n;
for (a = 1; a<=n; a++)
for (b = 1; b<=n; b++) {
cin >> A[a][b];
}

for ( a=1; a<=n; a++)


cout << A[a][a] <<" ";

return 0;
}
Bài 5: Nhập vào 2 số nguyên N, M là số dòng và số cột của mảng 2 chiều N x M, xuất
mảng ziczac (xem ví dụ)

VD:

Input
Output
33
123
654
789
#include "iostream"
using namespace std;
int main()
{
int a[100][100], N, M, t = 1; //N la so dong, M la so cot
cin >> N >> M;
for (int i = 0; i < N; i++) {
if (i % 2 == 0) {
for (int j = 0; j < M; j++) {
a[i][j] = t;
t++;
}
}
else {
for (int j = M - 1; j >= 0; j--) {
a[i][j] = t;
t++;
}
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) cout << a[i][j] << " ";
cout << endl;
}
return 0;
}
Bài 6: Nhập vào 2 số nguyên N, M là số dòng và số cột của mảng 2 chiều N x M, xuất
mảng ziczac (xem ví dụ)

VD:

Input
Output
33
123
894
765
#include <iostream>

using namespace std ;


int K[100][100] , n , m ;

void XuLy() {
int trai = 0, tren = 0, phai = m, duoi = n, dem = 0, soluong = m*n;

while (dem < soluong) {

for (int i = trai ; i < phai ; i++) K[trai][i] = ++dem ;


tren++ ;

for(int i = tren ; i < duoi ; i++) K[i][phai-1] = ++dem ;


phai-- ;

for (int i = phai-1 ; i >= trai ; i--) K[duoi-1][i] = ++dem ;


duoi-- ;

for (int i = duoi-1 ; i >= tren ; i--) K[i][trai] = ++dem ;


trai++ ;

}
}

void Xuat() {
for (int i = 0 ; i < n ; i++) {
for (int j = 0 ; j < m ; j++)
cout << K[i][j] ;
cout << endl ;
}
}

int main() {
cin >> n >> m ;

XuLy();
Xuat();

return 0;
}
Bài 7: Xuất số lượng các ký tự (không tính khoảng cách) trong một chuỗi (dùng khoảng
trắng để ngăn cách các ký tự) ra màn hình
VD:

Input
Output
banana
a:3
b:1
n:2
#include <iostream>
#include <cstring>

using namespace std;

void xuat( int a[] , char str[] ) {

for (int j = 0 ; j < 26 ; j++)


if (a[j]>0) cout << str[j] << ":" << a[j] << endl;
}

void dem (char s[]) {

char str[26];

strcpy(str,"abcdefghijklmnopqrstuvxywz");

int a[26] = {0};

for (int j =0 ; j < strlen(s) ; j++) {


for (int k =0 ; k < 26; k++) {
if (s[j] == str[k])
a[k]++;
}
}
xuat(a, str);
}
void nhap() {
char s[100];
cin.getline(s,100);
dem(s);
}

int main() {
nhap ();
return 0;
}

You might also like