You are on page 1of 83

Viết chương trình nhập mảng n phần tử số nguyên.

Tìm khoảng cách nhỏ nhất của 2 phần


tử bất kì trong mảng. (Nếu có nhiều hơn 1 phần tử thỏa man thì in cặp có phần tử xuất
hiện)
INPUT
6
1 5 3 19 18 25
OUTPUT
1 18 19

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

int main()
{
int n, arr[100];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int min = abs(arr[0] - arr[1]), ele1 = arr[0], ele2 = arr[1];
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if(abs(arr[i] - arr[j]) < min) {
min = abs(arr[i] - arr[j]);
ele1 = arr[i] > arr[j] ? arr[j] : arr[i];
ele2 = arr[i] > arr[j] ? arr[i] : arr[j];
}
}
}
printf("%d %d %d", min, ele1, ele2);
return 0;
}

1
Viết chương trình nhập mảng n (n>1) phần scanf("%d",&n);
tử số nguyên. Đếm các phần tử là số nguyên nhapmang(a,n);
tố trong mảng và in ra chúng
for (i=0;i<n;i++)
INPUT
{
6
if (kiemtrasnt(a[i])==1)
1 5 3 19 18 25
dem++;
OUTPUT
}
3 5 3 19
printf("%d ",dem);
for (i=0;i<n;i++)
#include <stdio.h>
{
#include <math.h>
if (kiemtrasnt(a[i])==1)
#define max 100
printf("%d ",a[i]);
int kiemtrasnt(int n)
}
{
return 0;
int i,kt=1;
if (n<2) }
return 0;
for (i=2;i<=sqrt(n);i++)
if (n%i==0)
{
kt=0;
break;
}
if (kt==1)
return 1;
else return 0;
}
void nhapmang(int a[max],int n)
{
for (int i=0;i<n;i++)
scanf("%d",&a[i]);
}
int main()
{
int a[max];
int n,dem=0,i;

2
Nhập ma trận A là ma trận vuông cấp n. for(i=0;i<n;i++){
Đếm các số nguyên tố trên đường chéo for(j=0;j<n;j++){
chính và đường chéo phụ (mỗi phần tử thỏa
mãn chỉ đếm một lần) if(i==j || i+j==n-1){
INPUT if(kiemtraSNT(a[i][j])==1)
4 count++;
1234
5678 }
9 10 11 12 }
13 14 15 16 }
OUTPUT return count;
3 }
int main(){
#include<stdio.h> int a[50][50],n;
#include<math.h> scanf("%d",&n);
void nhap(int a[][50],int n){ nhap(a,n);
int i,j; printf("%d",dem(a,n));
for(i=0;i<n;i++){
for(j=0;j<n;j++){ return 0;
scanf("%d",&a[i][j]); }
}
}
}
int kiemtraSNT(int n){
int i,kt=1;
if(n<2) return 0;
for(i=2;i<=sqrt(n);i++){
if(n%i==0){
kt=0;
break;
}
}
if(kt==1) return 1;
else return 0;
}
int dem(int a[][50],int n){
int i,j,count=0;

3
Viết chương trình C cho phép nhập vào mảng một chiều n phần tử (n>1) và thực hiện in ra
các giá trị có trong mảng theo thứ tự xuất hiện
Trong đó:
-INPUT:
Hàng thứ nhất là số phần tử của mảng
Hàng thứ hai là các phần tử của mảng
-OUTPUT
Các giá trị xuất hiện trong mảng

INPUT
7
2332195
OUTPUT
23195

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

int main()
{
int n, arr[100];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int min = abs(arr[0] - arr[1]), ele1 = arr[0], ele2 = arr[1];
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if(abs(arr[i] - arr[j]) < min) {
min = abs(arr[i] - arr[j]);
ele1 = arr[i] > arr[j] ? arr[j] : arr[i];
ele2 = arr[i] > arr[j] ? arr[i] : arr[j];
}
}
}
printf("%d %d %d", min, ele1, ele2);
return 0;
}

4
Viết chương trình C cho phép nhập vào Nhập ma trận A là ma trận vuông cấp n.
mảng một chiều n phần tử (n>1) và thực Thực hiện xoay ma trận một góc 90 độ theo
hiện in ra các phần tử xuất hiện nhiều hơn 1 chiều ngược kim đồng hồ được ma trận B.
lần trong mảng theo thứ tự xuất hiện (Nếu INPUT
không có phần tử nào thỏa mãn in ra 0)
4
Trong đó:
1234
-INPUT:
5678
Hàng thứ nhất là số phần tử của mảng
9 10 11 12
Hàng thứ hai là các phần tử của mảng
13 14 15 16
-OUTPUT
OUTPUT
Các phần tử thỏa mãn theo thứ tự xuất hiện
4 8 12 16
3 7 11 15
INPUT
2 6 10 14
7
1 5 9 13
2332195
OUTPUT
23
#include <stdio.h>

main()
#include <stdio.h>
{
int main()
int n, a[25][25], i, j;
{
scanf("%d", &n);
int n, arr[100], demarr[100] = {}, kt = 0;
for(i = 0; i < n; i++)
scanf("%d", &n);
{
for (int i = 0; i < n; i++) {
for(j =0; j < n; j++)
scanf("%d", &arr[i]);
scanf("%d", &a[i][j]);
demarr[arr[i]]++;
}
}
for(j = n - 1; j >= 0; j--)
for (int i = 0; i < n; i++) {
{
if (demarr[arr[i]] > 1) {
for(i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("%d ", a[i][j]);
kt = 1;
printf("\n");
demarr[arr[i]] = 0;
}
}
return 0;
}
printf(kt ? "" : "0"); }
return 0;
}

5
Nhập ma trận A là ma trận vuông cấp n. main()
Tìm tổng các phần tử là số nguyên tố thuộc {
tam giác dưới (nếu không có phần tử nào in
ra 0) int n, a[25][25], i, j;
INPUT int s = 0;
4 scanf("%d", &n);
1234 for(i = 0; i < n; i++)
5678 {
9 10 11 12 for(j = 0; j < n; j++)
13 14 15 16 scanf("%d", &a[i][j]);
OUTPUT }
29 for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
#include <stdio.h> if(i >= j)
#include <math.h> {
if(snt(a[i][j])) s += a[i][j];
int snt(int j) }
{ }
int i, a = 0; printf("%d", s);
if(j == 1) return 0; return 0;
else }
{
for(i = 2; i <= sqrt(j); i++)
{
if(j % i == 0)
{
a++;
break;
}
}
}
return (a == 0 ? 1 : 0);
}

6
Nhập ma trận A là ma trận vuông cấp n. main()
Tìm tổng các phần tử là số nguyên tố thuộc {
tam giác trên
int n, a[25][25], i, j;
INPUT
int s = 0;
4
scanf("%d", &n);
1234
for(i = 0; i < n; i++)
5678
{
9 10 11 12
for(j = 0; j < n; j++)
13 14 15 16
scanf("%d", &a[i][j]);
OUTPUT
}
23
for(i = 0; i < n; i++)
{
#include <stdio.h>
for(j = 0; j < n; j++)
#include <math.h>
if(i <= j)
{
int snt(int j)
if(snt(a[i][j])) s += a[i]
{ [j];
int i, a = 0; }
if(j == 1) return 0; }
else printf("%d", s);
{ return 0;
for(i = 2; i <= sqrt(j); i++)
}
{
if(j % i == 0)
{
a++;
break;
}
}
}
return (a == 0 ? 1 : 0);
}

7
Viết chương trình cho phép nhập mảng và Nhập ma trận A là ma trận vuông cấp n.
kiểm tra xem mảng có đối xứng hay không. Thực hiện xoay ma trận một góc 90 độ theo
Nếu đối xứng in ra 1, không đối xứng in ra chiều kim đồng hồ được ma trận B.
0. INPUT
INPUT 4
12 1234
123456654321 5678
OUTPUT 9 10 11 12
1 13 14 15 16
OUTPUT
#include <stdio.h> 13 9 5 1
14 10 6 2
main() 15 11 7 3
{ 16 12 8 4
int n, a[100], i, ktra = 1;
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
for(i = 0; i < (n % 2 == 0 ? n/2 : n/2 + 1); #include <stdio.h>
i++)
{
main()
if(a[i] == a[n - 1 - i]);
{
else
int n, a[25][25], i, j;
{
scanf("%d", &n);
ktra = 0;
for(i = 0; i < n; i++)
break;
{
}
for(j = 0; j < n; j++)
}
scanf("%d", &a[i][j]);
}
ktra == 1? printf("1"): printf("0");
for(j = 0; j < n; j++)
return 0;
{
}
for(i = n - 1; i >= 0; i--)
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}

8
Nhập ma trận A là ma trận vuông cấp n. main()
Đếm các số nguyên tố trên đường chéo {
chính và đường chéo phụ (mỗi phần tử thỏa
mãn chỉ đếm một lần) int n, i, j, count = 0;
INPUT int A[25][25], B[100] = {0};
4 scanf("%d", &n);
1234 for(i = 0; i < n; i++)
5678 {
9 10 11 12 for(j = 0; j < n; j++)
13 14 15 16 scanf("%d", &A[i][j]);
OUTPUT B[A[i][j]]++;
3 }
for(i = 0; i < n; i++)
#include <stdio.h> {
#include <math.h> for(j = 0; j < n; j++)
printf("%d ", B[A[i][j]]);
int snt(int n) //ktra so nguyen to }
{ }
int i, a = 0;
if(n <= 1) return 0;
else
{
for(i = 2; i <= sqrt(n); i++)
{
if(n % i == 0)
{
a++;
break;
}
}}
return (a == 0 ? 1: 0);
}

9
Nhập 2 mảng (a, N) và (b, M) và số nguyên {
p. Hãy chèn mảng b vào vị trí p của mảng a. A[i] = A[i - m];
Dữ liệu vào: Dòng đầu tiên ghi 3 số N M và }
p
Các dòng tiếp theo ghi dữ liệu mảng a và b.
INPUT for(i = p; i - p < m; i++)
431 {
5367 A[i] = B[i - p];
2 9 11 }
OUTPUT printf("\n");
5 2 9 11 3 6 7 xuat(A, n);
return 0;
}

#include <stdio.h>

void nhap(int A[], int n)


{
int i;
for(i = 0; i < n; i++)
scanf("%d", &A[i]);
}

void xuat(int A[], int n)


{
int i;
for(i = 0; i < n; i++)
printf("%d ", A[i]);
}
main()
{
int n, m, p, i, A[100], B[100];
scanf("%d %d %d", &n, &m, &p);
nhap(A, n);
nhap(B, m);
n += m;
for(i = n - 1; i >= p; i--)

10
Nhập ma trận A là ma trận vuông cấp n. Viết chương trình nhập mảng n (n>1) phần
Thực hiện xoay ma trận một góc 180 độ tử số nguyên. Đếm và in ra các phần tử
chẵn và lẻ trong mảng
INPUT
INPUT
4
7
1234
2 5 8 1 5 12 11
5678
OUTPUT
9 10 11 12
3 2 8 12
13 14 15 16
4 5 1 5 11
OUTPUT
16 15 14 13
12 11 10 9
#include <stdio.h>
8765
4321
main()
{
int n, i, chan = 0, le = 0;
int a[100], c[100] = {0}, l[100]= {0};
#include <stdio.h>
scanf("%d", &n);
for(i = 0; i < n; i++)
main()
scanf("%d", &a[i]);
{
for(i = 0; i < n; i++)
int n, a[25][25], i, j;
if(a[i] % 2 == 0)
scanf("%d", &n);
chan++;
for(i = 0; i < n; i++)
else
{
le++;
for(j = 0; j < n; j++)
printf("%d ", chan);
scanf("%d", &a[i][j]);
for(i = 0; i < n; i++)
}
if(a[i] % 2 == 0) printf("%d ", a[i]);
for(i = n - 1; i >= 0; i--)
printf("\n%d ", le);
{
for(i = 0; i < n; i++)
for(j = n - 1; j >= 0; j--)
if(a[i] % 2) printf("%d ", a[i]);
printf("%d ", a[i][j]);
return 0;
printf("\n");
} }
return 0;
}

11
Nhập ma trận A là ma trận vuông cấp n. for(i = 0; i < 1; i++)
Tìm cột có tổng các phần tử lớn nhất và in {
ra thứ tự cột và các giá trị của cột đó (nếu có
nhiều hơn một cột thì in ra vị trí cột xếp for(j = 0; j < n; j++)
trước) sum += A[j][i];
INPUT }
4 for(i = 1; i < n; i++)
1234 {
5678 sumb = 0;
9 10 11 12 for(j = 0; j < n; j++)
13 14 15 16 {
OUTPUT sumb += A[j][i];
4 if(sumb > sum) sum = sumb;
4 8 12 16 }
}
#include <stdio.h> for(i = 0; i < n; i++)
#include <math.h> {
sumb = 0;
void nhap(int A[25][25], int n) for(j = 0; j < n; j++)
{ {
int i, j; sumb += A[j][i];
for(i = 0; i < n; i++) if(sumb == sum)
{ {
for(j = 0; j < n; j++) printf("%d\n", i + 1);
scanf("%d", &A[i][j]); xuat(A, n, i);
} break;
} }
void xuat(int A[25][25], int n, int i) }
{ if(sumb == sum) break;
int j; }
for(j = 0; j < n; j++) return 0;
printf("%d ", A[j][i]);
}
}
main()
{
int n, i, j, sum = 0, sumb = 0;
int A[25][25];
scanf("%d", &n);
nhap(A, n);

12
Viết chương trình nhập mảng n (n>1) phần scanf("%d", &n);
tử số nguyên. Đếm các phần tử là số nguyên for(i = 0; i < n; i++)
tố trong mảng và in ra chúng
scanf("%d", &a[i]);
INPUT
6
for(i = 0; i < n; i++)
1 5 3 19 18 25
{
OUTPUT
if(snt(a[i]))
3 5 3 19
dem++;
}
printf("%d ", dem);
#include <stdio.h>
for(i = 0; i < n; i++)
#include <math.h>
{
if(snt(a[i]))
int snt(int j)
printf("%d ", a[i]);
{
}
int i, a = 0;
return 0;
if(j == 1) return 0;
else }
{
for(i = 2; i <= sqrt(j); i++)
{
if(j % i == 0)
{
a++;
break;
}}}
return (a == 0 ? 1 : 0);
}

main()
{
int n, a[100], i, dem = 0;

13
Viết chương trình C cho phép nhập vào {
mảng một chiều n phần tử (n>1) và thực if(A[j] > A[i])
hiện in ra phàn tử lớn thứ hai trong mảng
{
Trong đó:
int temp;
-INPUT:
temp = A[j];
Hàng thứ nhất là số phần tử của mảng
A[j] = A[i];
Hàng thứ hai là các phần tử của mảng
A[i] = temp;
-OUTPUT
}
Phần tử lớn thứ hai trong mảng
}
}
INPUT
printf("%d", A[n - 2]);
5
return 0;
23791
OUTPUT }
7

#include <stdio.h>
#define Max 100

void nhap(int A[Max], int n)


{
int i;
for(i = 0; i < n; i++) scanf("%d",
&A[i]);
}

main()
{
int n, A[Max];
scanf("%d", &n);
nhap(A, n);
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)

14
Viết chương trình C cho phép nhập vào {
mảng một chiều n phần tử (n>1) và thực int n, p, i, A[MAX];
hiện xóa một phần tử tại vị trí p sau đó in ra
mảng kết quả scanf("%d", &n);
Trong đó: if(n > 1)
-INPUT: {
Hàng thứ nhất là số phần tử của mảng nhap(A, n);
Hàng thứ hai là các phần tử của mảng scanf("%d", &p);
Hàng thứ ba là vị trí phần tử cần xóa for(i = p - 1; i < n; i++)
-OUTPUT A[i] = A[i+1];
mảng kết quả sau khi xóa n--;
xuat(A, n);
INPUT }
5 return 0;
23791 }
3
OUTPUT
2391

#include <stdio.h>
#define MAX 100

void nhap(int A[], int n)


{
int i;
for(i = 0; i < n; i++)
scanf("%d", &A[i]);
}

void xuat(int A[], int n)


{
int i;
for(i = 0; i < n; i++)
printf("%d ", A[i]);
}

main()

15
Viết chương trình C cho phép nhập vào Viết chương trình C cho phép nhập vào
mảng một chiều n phần tử (n>1) và thực mảng một chiều n phần tử (n>1) và thực
hiện in ra các giá trị có trong mảng theo thứ hiện in ra các phần tử cùng số lần xuất hiện
tự xuất hiện của chúng trong mảng
Trong đó: Trong đó:
-INPUT: -INPUT:
Hàng thứ nhất là số phần tử của mảng Hàng thứ nhất là số phần tử của mảng
Hàng thứ hai là các phần tử của mảng Hàng thứ hai là các phần tử của mảng
-OUTPUT
Các giá trị xuất hiện trong mảng INPUT
7
INPUT 2332195
7 OUTPUT
2332195 22
OUTPUT 32
23195 11
91
#include <stdio.h> 51

main() #include <stdio.h>


{ main()
int n, i; {
int a[100], b[100]; int n, i;
scanf("%d", &n); int a[100], b[100] = {0};
for(i = 0; i < n; i++) scanf("%d", &n);
{ for(i = 0; i < n; i++)
scanf("%d", &a[i]); {
b[a[i]]++; scanf("%d", &a[i]);
} b[a[i]]++;
for(i = 0; i < n; i++) }
{ for(i = 0; i < n; i++)
if(b[a[i]] != 0) {
{ if(b[a[i]])
printf("%d ", a[i]); {
b[a[i]] = 0; printf("%d %d\n", a[i], b[a[i]]);
} b[a[i]] = 0;
} }
return 0; }
} return 0;
}

16
Viết chương trình C cho phép nhập vào if(b[a[i]] == 1)
mảng một chiều n phần tử (n>1) và thực {
hiện in ra các phần tử chỉ xuất hiện 1 lần
trong mảng theo thứ tự xuất hiện (Nếu printf("%d ", a[i]);
không có phần tử nào thỏa mãn in ra 0) b[a[i]] = 0;
Trong đó: }
-INPUT:
Hàng thứ nhất là số phần tử của mảng
}
Hàng thứ hai là các phần tử của mảng
}
-OUTPUT
else printf("0");
Các phần tử thỏa mãn theo thứ tự xuất hiện
return 0;
}
INPUT
7
2332195
OUTPUT
195

#include <stdio.h>

main()
{
int n, i;
int a[100], b[100] = {0};
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
b[a[i]]++;
}
int check = 0;
for(i = 0; i < n; i++)
{
if(b[a[i]] == 1) check++;
}
if(check)
{
for(i = 0; i < n; i++)
{

17
Viết chương trình C cho phép nhập vào {
mảng một chiều n phần tử (n>1) và thực if(b[a[i]] > 1)
hiện in ra các phần tử xuất hiện nhiều hơn 1
lần trong mảng theo thứ tự xuất hiện (Nếu {
không có phần tử nào thỏa mãn in ra 0) printf("%d ", a[i]);
Trong đó: b[a[i]] = 0;
-INPUT: }
Hàng thứ nhất là số phần tử của mảng }}
Hàng thứ hai là các phần tử của mảng else printf("0");
-OUTPUT return 0;
Các phần tử thỏa mãn theo thứ tự xuất hiện
}

INPUT
7
2332195
OUTPUT
23

#include <stdio.h>

main()
{
int n, i;
int a[100], b[100] = {0};
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
b[a[i]]++;
}
int check = 0;
for(i = 0; i < n; i++)
if(b[a[i]] > 1) check++;
if(check)
{
for(i = 0; i < n; i++)

18
Viết chương trình C cho phép nhập vào int n, m, p, i, A[100], B[100];
mảng A một chiều n phần tử (n>1) và mảng scanf("%d %d", &n, &m);
B một chiều m phần tử (m>1). Thực hiện
chèn mảng B vào mảng A tại vị trí P và in ra nhap(A, n);
mảng kết quả nhap(B, m);
Trong đó: scanf("%d", &p);
-INPUT: n += m;
Hàng thứ nhất là số phần tử của mảng A và for(i = n - 1; i >= p; i--)
mảng B
{
Hàng thứ hai là các phần tử của mảng A
A[i] = A[i - m];
Hàng thứ ba là các phần tử của mảng B
}
Hàng thứ tư là vị trí chèn

INPUT for(i = p; i - p < m; i++)


53 {
12345 A[i] = B[i - p];
678 }
3 printf("\n");
OUTPUT xuat(A, n);
12367845 return 0;
}

#include <stdio.h>

void nhap(int A[], int n)


{
int i;
for(i = 0; i < n; i++)
scanf("%d", &A[i]);
}

void xuat(int A[], int n)


{
int i;
for(i = 0; i < n; i++)
printf("%d ", A[i]);
}
main()
{

19
Viết chương trình C cho phép nhập vào Viết chương trình C cho phép nhập vào
mảng A gồm n phần tư (n>1). Thực hiện mảng A gồm n phần tư (n>1). Thực hiện
tách mảng đã cho thành mảng các số chẵn dịch n phần tử của mảng sang phải và In ra
và mảng các số lẻ. mảng kết quả
Trong đó: Trong đó:
INPUT INPUT
Hàng thứ nhất là số phần tử n của mảng A Hàng thứ nhất là số phần tử n của mảng A
Hàng thứ hai là các phần tử của mảng A Hàng thứ hai là các phần tử của mảng A
OUTPUT Hàng thứ ba là số phần tử dịch
Hàng thứ nhất là mảng các số chẵn OUTPUT
Hàng thứ hai là mảng các số lẻ Mảng kết quả
INPUT INPUT
5 10
12345 1 2 3 4 5 6 7 8 9 10
OUTPUT 3
24 OUTPUT
135 8 9 10 1 2 3 4 5 6 7

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


main()
{ main()
int n, a[100], i, j; {
scanf("%d", &n); int n, p, a[100], i;
for(i = 0; i < n; i++) scanf("%d", &n);
scanf("%d", &a[i]); for(i = 0; i < n; i++)
for(i = 0; i < n; i++) scanf("%d", &a[i]);
{ scanf("%d", &p);
if(a[i] % 2 == 0)
printf("%d ", a[i]); /*for(i = p; i < n; i++)
} printf("%d ", a[i]);
printf("\n"); for(i = 0; i < p; i++)
for(i = 0; i < n; i++) printf("%d ", a[i]);*/
{
if(a[i] % 2 != 0) for(i = n - p; i < n; i++)
printf("%d ", a[i]); printf("%d ", a[i]);
} for(i = 0; i < n - p; i++)
return 0; printf("%d ", a[i]);
} return 0;
}

20
Viết chương trình C cho phép nhập vào {
mảng A gồm n phần tư (n>1). Thực hiện sắp for(j = 0; j < n; j++)
xếp tăng dần các phần tử của mảng và In ra.
{
Trong đó:
if(A[j] > A[i])
INPUT
{
Hàng thứ nhất là số phần tử n của mảng A
int temp;
Hàng thứ hai là các phần tử của mảng A
temp = A[j];
OUTPUT
A[j] = A[i];
Mảng kết quả
A[i] = temp;
INPUT
}
8
}
13829765
}
OUTPUT
xuat(A, n);
12356789
return 0;
}
#include <stdio.h>
#define Max 100

void nhap(int A[Max], int n)


{
int i;
for(i = 0; i < n; i++) scanf("%d",
&A[i]);
}

void xuat(int A[Max], int n)


{
int i;
for(i = 0; i < n; i++) printf("%d ", A[i]);
}

main()
{
int n, A[Max];
scanf("%d", &n);
nhap(A, n);
int i, j;
for(i = 0; i < n; i++)

21
Viết chương trình C cho phép nhập vào for(j = 0; j < n; j++)
mảng A gồm n phần tư (n>1). Thực hiện sắp {
xếp giảm dần các phần tử của mảng và In
ra. if(A[j] < A[i])
Trong đó: {
INPUT int temp;
Hàng thứ nhất là số phần tử n của mảng A temp = A[j];
Hàng thứ hai là các phần tử của mảng A A[j] = A[i];
OUTPUT A[i] = temp;
Mảng kết quả }
INPUT }
8 }
13829765 xuat(A, n);
OUTPUT return 0;
98765321 }

#include <stdio.h>
#define Max 100

void nhap(int A[Max], int n)


{
int i;
for(i = 0; i < n; i++) scanf("%d",
&A[i]);
}

void xuat(int A[Max], int n)


{
int i;
for(i = 0; i < n; i++) printf("%d ", A[i]);
}

main()
{
int n, A[Max];
scanf("%d", &n);
nhap(A, n);
int i, j;
for(i = 0; i < n; i++)
{

22
Viết chương trình C cho phép nhập vào }
mảng A gồm n phần tư (n>1). Thực hiện sắp }
xếp tăng dần các phần tử chẵn và lẻ của
mảng và In ra. for(i = 0; i < n; i++)
Trong đó: {
INPUT if(a[i] % 2 == 0) printf("%d ",
a[i]);
Hàng thứ nhất là số phần tử n của mảng A
}
Hàng thứ hai là các phần tử của mảng A
for(i = 0; i < n; i++)
OUTPUT
{
Mảng kết quả
if(a[i] % 2 != 0) printf("%d ",
INPUT a[i]);
8 }
13829765 return 0;
OUTPUT
}
26813579

#include <stdio.h>

void swap(int* a, int* b)


{
int temp;
temp = *a;
*a = *b;
*b = temp;
}

main()
{
int n, a[100], i, j;
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(a[j] > a[i])
swap(&a[i], &a[j]);

23
Viết chương trình C cho phép nhập vào hai {
ma trận A và B có cùng số hàng và số cột là int i, j;
n và m. Tìm ma trận tổng của ma trận A và
ma trận B, in ra màn hình. for(i = 0; i < row; i++)
Trong đó: {
INPUT for(j = 0; j < col; j++)
printf("%d ", A[i][j]);
- Hàng thứ nhất là số hàng và số cột của hai
ma trận printf("\n");
- Các hàng tiếp theo là các phần tử của ma }
trận A và ma trận B }
OUTPUT
- Ma trận tổng kết quả main()
{
INPUT int row, col, A[Row][Col], B[Row]
33 [Col];
123 int C[Row][Col];
456 scanf("%d %d", &row, &col);
789 nhap(A, row, col);
345 nhap(B, row, col);
678 int i, j;
123 for(i = 0; i < row; i++)
OUTPUT {
468 for(j = 0; j < col; j++)
10 12 14 {
8 10 12 C[i][j] = A[i][j] + B[i]
[j];
}
#include <stdio.h>
}
#define Row 25
xuat(C, row, col);
#define Col 25
return 0;
void nhap(int A[Row][Col], int row, int col)
}
{
int i, j;
for(i = 0; i < row; i++)
{
for(j = 0; j < col; j++)
scanf("%d", &A[i][j]);
}
}

void xuat(int A[Row][Col], int row, int col)

24
Viết chương trình C cho phép nhập vào hai int xuat(int A[Row][Col], int a, int b)
ma trận A và B có cùng số hàng và số cột là {
n và m. Tìm ma trận hiệu của ma trận A và
ma trận B, in ra màn hình. int i, j;
Trong đó: for(i = 0; i < a; i++)
INPUT {
- Hàng thứ nhất là số hàng và số cột của hai for(j = 0; j < b; j++)
ma trận printf("%d ", A[i][j]);
- Các hàng tiếp theo là các phần tử của ma printf("\n");
trận A và ma trận B
}
OUTPUT
}
- Ma trận hiệu kết quả

main()
INPUT
{
33
int a, b, i, j;
123
int A[Row][Col], B[Row][Col],
456 C[Row][Col];
789 scanf("%d %d", &a, &b);
345 nhap(A, a, b);
678 nhap(B, a, b);
123 for(i = 0; i < a; i++)
OUTPUT {
-2 -2 -2 for(j = 0; j < b; j++)
-2 -2 -2 C[i][j] = A[i][j] - B[i][j];
666 }
xuat(C, a, b);
#include <stdio.h>
return 0;
#define Row 25
}
#define Col 25

int nhap(int A[Row][Col], int a, int b)


{
int i, j;
for(i = 0; i < a; i++)
{
for(j = 0; j < b; j++)
scanf("%d", &A[i][j]);
}
}

25
Viết chương trình C nhập vào ma trận A int i, j;
vuông cấp n. Tính tổng từng hàng, từng cột for(i = 0; i < n; i++)
và thực hiện in ra.
{
Trong đó
int hang = 0;
INPUT
for(j = 0; j < n; j++)
- Hàng thứ nhất là cấp của ma trận
{
- Các hàng tiếp theo là các phần tử của ma
trận hang += A[i][j];
OUTPUT }
- Hàng thứ nhất là tổng từng hàng printf("%d ", hang);
- Hàng thứ hai là tổng từng cột }
INPUT printf("\n");
3 for(i = 0; i < n; i++)
123 {
456 int cot = 0;
789 for(j = 0; j < n; j++)
OUTPUT {
6 15 24 cot += A[j][i];
12 15 18 }
printf("%d ", cot);
}
#include <stdio.h> return 0;
#define Row 25 }
#define Col 25

void nhap(int A[Row][Col], int n)


{
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
scanf("%d", &A[i][j]);
}
}
main()
{
int n, A[Row][Col];
scanf("%d", &n);
nhap(A, n);

26
Viết chương trình C nhập vào ma trận A
vuông cấp n. Tính tổng các phần tử thuộc
tam giác trên và tổng các phần tử thuộc tam
giác dưới. Lưu ý không bao gồm đường
chéo chính.
INPUT
- Hàng thứ nhất là cấp của ma trận
- Các hàng tiếp theo là các phần tử của ma trận
OUTPUT
- Kết quả tính toán
INPUT
3
123
456
789
OUTPUT
11 19
#include <stdio.h>
main()
{
int n, a[25][25], i, j;
scanf("%d", &n);
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
scanf("%d", &a[i][j]);
}
int s1 = 0, s2 = 0;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
if(j > i) s1 += a[i][j];
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
if(j < i) s2 += a[i][j];
}
printf("%d %d", s1, s2);
return 0;
}

27
Viết chương trình nhập mảng n (n>1) phần {
tử số nguyên. Đếm các phần tử là số thuận if(kt(a[i])==1)
nghịch có ít nhất hai chữ số trong mảng và
in ra chúng dem++;
INPUT }
6 printf("%d ",dem);
1 525 44 19 181 25 for(i=0;i< n;i++)
OUTPUT {
3 525 44 181 if(kt(a[i])==1)
printf("%d ",a[i]);
#include<stdio.h> }
int kt(int x) return 0;
{ }
int tong=0;
int z=x;
if(z>9)
{
while(z)
{
tong=tong*10+z%10;
z/=10;
}
}
if(x==tong && x != 0) return 1;
return 0;
}
int main()
{
int n,i,dem = 0 ;
scanf("%d",&n);
int a[n];
for(i=0;i< n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i< n;i++)

28
Cho một ma trận cấp M*N chỉ bao gồm các int main()
số nguyên dương không quá 1000.Viết
chương trình trước hết loại bỏ hàng có tổng {
lớn nhất sau đó tính toán lại trên ma trận int m, n, arr[100][100];
ban đầu và loại tiếp cột có tổng lớn nhất ra
khỏi ma trận scanf("%d %d", &m, &n);

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


33
124 for (int j = 0; j < m; j++) {
340
635 scanf("%d", &arr[i][j]);
OUTPUT
}
24
40 }

int ignr = find_row(arr, m, n);


#include <stdio.h>
int find_row (int arr[][100], int m, int n) int ignc = find_col(arr, m, n);
{
int max = 0, cs = 0; for (int i = 0; i < n; i++) {
for (int i = 0; i < n; i++) {
int sum = 0; for (int j = 0; j < m; j++) {
for (int j = 0; j < m; j++) {
sum += arr[i][j]; if (i == ignr || j == ignc) {
}
if (sum > max) { continue;
max = sum;
cs = i; }
}
printf("%d ", arr[i][j]);
}
return cs; }
}
printf("\n");
int find_col (int arr[][100], int m, int n)
{ }
int max = 0, cs = 0;
for (int i = 0; i < n; i++) { return 0;
int sum = 0;
for (int j = 0; j < m; j++) { }
sum += arr[j][i];
}
if (sum > max) {
max = sum;
cs = i;

}
}
return cs;
}

29
Viết chương trình nhập vào n và in ra hình for(i=n-b-2;i>b;i--) a[i][b]=d++;
theo quy luật b++;
INPUT }
5 in(a,n);
OUTPUT return 0;
12345 }
16 17 18 19 6 int main()
15 24 25 20 7 {
14 23 22 21 8 int n;
13 12 11 10 9 scanf("%d",&n);

#include<stdio.h> Arr(n);
return 0;
}
void in(int a[10][10],int n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
int Arr(int n)
{
int a[10][10],i,d=1,b=0;
while(b<=n/2)
{
for(i=b;i<n-b;i++) a[b][i]=d++;
for(i=b+1;i<n-b;i++) a[i][n-b-1]=d++;
for(i=n-b-2;i>=b;i--) a[n-b-1][i]=d++;

30
Viết chương trình C cho phép nhập vào hai }
ma trận A (n hàng, m cột) và ma trận B (m
hàng, n cột. Tìm ma trận tích của ma trận A void matrantich(int a[][50],int b[][50],int tich[]
và ma trận B, in ra màn hình. [50],int n,int m)
Trong đó:
INPUT {
- Hàng thứ nhất là n và m
- Các hàng tiếp theo là các phần tử của ma int i,j,k;
trận A và ma trận B
OUTPUT for(i=0;i<n;i++)
- Ma trận tích kết quả
for(j=0;j<n;j++)
INPUT for(k=0;k<m;k++)
33
123 tich[i][j]+=a[i][k]*b[k][j];
456
789
345
678 }
123
OUTPUT int main()
18 24 30
48 63 78 {
78 102 126
int n,m,i,j;
#include <stdio.h>
int a[50][50],b[50][50],tich[50][50];
void nhapa(int a[][50],int n,int m)
scanf("%d%d",&n,&m);
{
nhapa(a,n,m);
int i,j;
nhapb(b,n,m);
for(i=0;i<n;i++)
matrantich(a,b,tich,n,m);
for(j=0;j<m;j++)
for(i=0;i<n;i++){
scanf("%d", &a[i][j]);
for(j=0;j<n;j++)
}
printf("%d ",tich[i][j]);
void nhapb(int b[][50],int n,int m)
printf("\n");
{
}
int i,j;
return 0;
for(i=0;i<m;i++)
}
for(j=0;j<n;j++)

scanf("%d", &b[i][j]);

31
CHUỖI

Viết chương trình nhập vào một chuỗi và Viết chương trình nhập vào một chuỗi và
tách các ký tự trong chuỗi đó. tách các ký tự trong chuỗi đó theo thứ tự
đảo ngược
INPUT
INPUT
ptit.edu.vn thcs2
ptit.edu.vn thcs2

OUTPUT
OUTPUT
ptit.edu.vnthcs2
2schtnv.ude.titp

#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <string.h>
#define MAX 100
#define MAX 100
main()
main()
{
{
char str[MAX];
char str[MAX];
int i;
int i;
gets(str);
gets(str);
for(i = strlen(str) - 1; i >= 0; i--)
for(i = 0; i < strlen(str); i++)
{
{
if(str[i] != ' ')
if(str[i] != ' ')
{
printf("%c ", str[i]);
if(i == 0)printf("%c", str[i]);
}
else
return 0;
printf("%c ", str[i]);
}
}
}
return 0;
}

32
Viết chương trình cho phép nhập vào chuỗi Viết chương trình cho phép nhập vào một
và đếm xem trong chuỗi có bao nhiêu số, chuỗi và thực hiện chuyển chữ thường
chữ cái và ký tự đặc biệt (ký tự đặc biệt là thành chữ hoa và ngược lại chữ hoa thành
ký tự không phải là số hoặc chữ cái) chữ thường.
INPUT INPUT
test3@ptit.edu.vn nguYen Canh CAO
OUTPUT OUTPUT
1 13 3 NGUyEN cANH cao

#include <stdio.h>
#include <string.h> #include <stdio.h>
#define MAX 100 #define MAX 100
main() main()
{ {
char str[MAX]; char str[MAX];
int i, c = 0, s = 0, k = 0; gets(str);
gets(str); int i;
for(i = 0; i < strlen(str); i++) for(i = 0; i < MAX; i++)
{ {
if((str[i] >= 'a' && str[i] <= 'z') if(str[i] >= 'a' && str[i] <= 'z')
|| (str[i] >= 'A' && str[i] <= 'Z')) str[i] -= 32;
c++; else
else if(str[i] >= 'A' && str[i] <= 'Z')
{ str[i] += 32;
if(str[i] >= '0' && str[i] <= '9') }
s++; puts(str);
else k++; return 0;
}
}
}
printf("%d %d %d", s, c, k);
return 0;
}

33
Viết chương trình C cho phép nhập vào một Tên người dùng sẽ được chuẩn hóa theo
chuỗi và chuyển chuỗi đã nhập thành chữ in nguyên tắc tên được viết đầu tiên, phân tách
hoa. với phần họ và tên đệm dấu phẩy. Các chữ
cái nằm trong tên đều được viết hoa; chữ cái
INPUT đầu tiên của tên đệm và họđược viết hoa,
mon thcs 2 các chữ cái còn lại viết thường.
OUTPUT INPUT
MON THCS 2 ngUYEN van nam
OUTPUT
#include <stdio.h> NAM, Nguyen Van
#define MAX 100
main()
{ #include <stdio.h>
char str[MAX]; #include <string.h>
gets(str); #include <ctype.h>
int i;
for(i = 0; i < MAX; i++) int main()
{ {
if(str[i] >= 'a' && str[i] <= 'z') char str[100], *pstr[100], n = 0;
str[i] -= 32; gets(str);
} strlwr(str);
puts(str); for (pstr[n] = strtok(str, " "); pstr[n] != '\0';
pstr[++n] = strtok(NULL, " ")) {
return 0;
}
}
strupr(pstr[n - 1]);
printf("%s, ", pstr[n - 1]);
for (int i = 0; i < n - 1; i++) {
*pstr[i] = toupper(*pstr[i]);
printf("%s ", pstr[i]);
}
return 0;
}

34
Cho hai chuỗi ký tự S1 và S2. Hãy viết }
chương trình tìm các từ chỉ xuất hiện trong
S1 mà không xuất hiện trong S2. Chú ý: mỗi
từ chỉ liệt kê 1 lần char tmp[100];
INPUT for(int i = 0 ; i < dd-1; i++){
abc ab ab ab abcd for(int j = i+1 ; j < dd;
ab abc j++){
OUTPUT
if(strcmp(s[i],s[j])>0){
abcd
strcpy(tmp,s[j]);

#include<stdio.h> strcpy(s[j],s[i]);
#include<conio.h>
#include<string.h> strcpy(s[i],tmp);
int b[10000]; }
//using namespace std; }
main(){ }
int dd=0,x=0,dd1=0; for(int i = 0; i <dd1; i ++){
char s1[100], s2[100], s[100] for(int j =0 ; j <dd; j++){
[100],ss[100][100]; if(strcmp(ss[i],s[j])==0)
gets(s1); b[j] = 0;
gets(s2); }
}
char *p;
p = strtok(s1," "); for(int i = 0 ; i < dd-1; i++){
while (p != NULL) { for(int j = i+1 ; j < dd;
j++){
strcpy(s[dd],p);
b[dd] = 1; if(strcmp(s[i],s[j])==0) b[j] = 0;
dd++; }
p = strtok(NULL, " "); }
}

char *q;
for(int i = 0 ;i < dd; i++){
q = strtok(s2," ");
if(b[i]) printf("%s ",s[i]);
while (q != NULL) {
}
strcpy(ss[dd1],q);
dd1++;
}

q = strtok(NULL, " ");

35
Tìm từ xuất hiện nhiều nhất trong chuỗi Viết chương trình cho phép nhập vào chuỗi
(không phân biệt hoa thường). Kết quả in ra và tìm từ dài nhất và ngắn nhất xuất hiện
từ xuất hiện nhiều nhất (ở dạng in thường) trong chuỗi đó (Nếu có nhiều hơn 1 từ thỏa
và số lần xuất hiện của chúng mãn thì in ra từ xuất hiện trước trong
chuỗi)
INPUT
INPUT
aaa bbb ccc AA bb aa ccc aa
mon thcs2 khoai hon thcs1
OUTPUT
OUPUT
aa 3
thcs2 mon

#include<stdio.h>
#include<string.h>
#include <stdio.h>
#include<ctype.h>
#include <string.h>
int main(){
char s[500],*p[500],*q;
int main()
int a[100],n=0;
{
gets(s);
char str[100], *pstr[100], n = 0;
strlwr(s);
gets(str);
for(p[n]=strtok(s," ");p[n]!=NULL;p[+
+n]=strtok(NULL," ")); int max = 0, min = strlen(str), csmax = 0,
csmin = 0;
int max=1;
for (pstr[0] = strtok(str, " "); pstr[n] != '\0';
for(int i=0;i<n;i++){ pstr[++n] = strtok(NULL, " ")) {
a[i]=1; int len = strlen(pstr[n]);
} csmax = max < len ? n : csmax;
for(int i=0;i<n;i++){ max = max < len ? len : max;
int count=1; csmin = min > len ? n : csmin;
if(a[i]){ min = min > len ? len : min;
a[i]=0; }
for(int j=i+1;j<n;j++){ printf("%s %s", pstr[csmax], pstr[csmin]);
if(strcmp(p[i],p[j])==0){ return 0;
count++;
}
}
}
if(count>max) {
max=count;
q=p[i];
}
}
}
printf("%s %d",q,max);
}

36
Địa chỉ email của cán bộ PTIT được cấp Tên người dùng sẽ được chuẩn hóa theo nguyên
theo nguyên tắc ghép tên với chữ cái tắc tên được viết sau cùng, phân tách với phần
đầu tiên của họ và tên đệm. Viết chương tên đệm và tên bởi dấu phẩy. Các chữ cái nằm
trình cho phép tạo các địa chỉ email trong tên đều được viết hoa; chữ cái đầu tiên
theo tên cán bộ(có thể không chuẩn) của tên đệm và họ được viết hoa, các chữ cái còn
lại viết thường.
INPUT
INPUT
ngUYEN van nam ngUYEN van nam
OUTPUT
OUTPUT Nguyen Van, NAM
namnv@ptit.edu.vn
#include <stdio.h>

#include <stdio.h> #include <string.h>

#include <string.h> #include <ctype.h>

int main()

int main() {

{ char str[100], *pstr[100], n = 0;

char str[100], *pstr[100], n = 0; gets(str);

gets(str); strlwr(str);

strlwr(str); for (pstr[n] = strtok(str, " "); pstr[n] != '\0'; pstr[+


+n] = strtok(NULL, " ")) {
for (pstr[0] = strtok(str, " "); pstr[n] !=
'\0'; pstr[++n] = strtok(NULL, " ")) { }

} strupr(pstr[n - 1]);

printf("%s", pstr[n - 1]); for (int i = 0; i < n - 2; i++) {

for (int i = 0; i < n - 1; i++) { *pstr[i] = toupper(*pstr[i]);

printf("%c", *pstr[i]); printf("%s ", pstr[i]);

} }

printf("@ptit.edu.vn"); *pstr[n - 2] = toupper(*pstr[n - 2]);

return 0; printf("%s, %s", pstr[n - 2], pstr[n - 1]);

} return 0;

37
Viết chương trình cho phép nhập vào Một từ trong xâu ký tự được định nghĩa là một
một chuỗi và thực hiện loại bỏ các dãy ký tự liên tiếp không có khoảng trống. Hãy
khoảng trắng giữa các từ trong chuỗi. đếm số từ của xâu và in kết quả ra màn hình

INPUT INPUT

nguyen canh cao mon thcs 2 nam 2017

OUPUT OUTPUT

nguyencanhcao 5

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

#include<string.h>

#include<math.h> int main()

#define MAX 100 {

char str[100];

int main() gets(str);

{ int i = - 1, k = 0;

char s[MAX]; while (str[++i] != 0) {

gets(s); k += str[i] != ' ' && str[i + 1] == ' ' || str[i + 1]


== 0 ? 1 : 0;
int i=0;
}
while(s[i]!=NULL)
printf("%d", k);
{
return 0;
if(s[i]==' ')
}
{

strcpy(&s[i], &s[i+1]);

else i++;

puts(s);

38
Tên người dùng sẽ được chuẩn hóa theo
nguyên tắc họ được viết sau cùng, phân tách
với phần tên đệm và tên bởi dấu phẩy. Các
chữ cái nằm trong họ đều được viết hoa;
chữ cái đầu tiên của tên đệm và tên được
viết hoa, các chữ cái còn lại viết thường.

INPUT

ngUYEN van nam

OUTPUT

Van Nam, NGUYEN

#include<stdio.h>

#include<string.h>

#include<ctype.h>

int main(){

char *p[500] ,s[500];

gets(s);

strlwr(s);

int n=0;

for(p[n]=strtok(s," ");p[n]!=NULL;p[+
+n]=strtok(NULL," "));

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

*p[i]=toupper(*p[i]);

if(i==n-1) printf(" %s, ",p[i]);

else printf("%s ",p[i]);

printf("%s",strupr(p[0]));

VẼ HÌNH

39
Viết chương trình cho phép nhập vào số n for(l=0; l<2*n-1; l++)
và in ra hình thoi tương ứng với n. {
INPUT if(l<=k) printf("~");
5 else
OUTPUT {
~~~~* if((k<l) && (l<2*n-k-2))
~~~*** printf("*");
~~***** else printf(" ");
~******* }}
********* printf("\n");
~******* }
~~***** return 0;
~~~*** }
~~~~*

#include <stdio.h>

main()
{
int n, i, j, k, l;
scanf("%d", &n);
for(i=0; i<n; i++)
{
for(j=0; j<2*n; j++)
{
if(j<n-i-1) printf("~");
else
{
if(n+i-1<j) printf(" ");
else printf("*");
}}
printf("\n");
}
for(k=0; k<n-1; k++)
{

Viết chương trình C cho phép nhập vào n là Viết chương trình C cho phép nhập vào
cạnh của hình vuông và in ra hình vuông chiều cao của tam giác và In ra tam giác

40
các ký tự *. hình sao tương ứng.
INPUT INPUT
4 5
OUTPUT OUTPUT
**** *
**** **
**** ***
**** ****
*****

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

main() main()
{ {
int n, i, j; int n, i ,j;
scanf("%d", &n); scanf("%d", &n);
for(i = 0; i < n; i++) for(i = 1; i <= n; i++)
{ {
for(j = 0; j < n; j++) for(j = 1; j <= n; j++)
{ {
if((0 < j) && (j < n)) if(j <= i) printf("*");
printf("*"); }
else printf("*"); printf("\n");
} }
printf("\n"); return 0;
}
}
return 0;
}

Viết chương trình C cho phép nhập vào Viết chương trình C cho phép nhập vào

41
chiều cao của tam giác và thực hiện in ra chiều cao của tam giác và thực hiện in ra
tam giác vuông sao ngược phải. tam giác vuông sao ngược phải rỗng
INPUT INPUT
5 5
OUTPUT OUTPUT
***** *****
~**** ~*..*
~~*** ~~*.*
~~~** ~~~**
~~~~* ~~~~*

#include <stdio.h>
#include<stdio.h>
main() int main()
{ {
int n, i, j; int n;
scanf("%d", &n); scanf("%d", &n);
for(i=0; i<n; i++) for( int i = 1; i <= n; i++) {
{ for(int j = 1; j <= n; j++) {
for(j=1; j<=n; j++) if(j < i)
j<=i?printf("~"):printf("*"); printf("~");
printf("\n"); else if(i == 1 || j == i || j == n)
} printf("*");
return 0; else if(i >= 2 && i < (n - 1) && j > i
&& j < n)
}
printf(".");
}
printf("\n");
}
return 0;
}

Viết chương trình C nhập vào số cột của Viết chương trình C cho phép nhập vào

42
một nửa hình thoi bên phải và in ra hình chiều cao của tam giác và thực hiện in ra
tương ứng. tam giác sao ngược
INPUT INPUT
5 5
OUTPUT OUTPUT
~~~~* *****
~~~** ****
~~*** ***
~**** **
***** *
~****
~~***
~~~** #include <stdio.h>
~~~~*
main()
{
#include <stdio.h> int n, i ,j;
scanf("%d", &n);
main() for(i = 0; i < n; i++)
{ {
int n, i, j, k, l; for(j = 0; j < n; j++)
scanf("%d", &n); {
for(i=0; i<n; i++) if(j < n - i) printf("*");
{ }
for(j=0; j<n; j++) printf("\n");
j<=n-i-2?printf("~"):printf("*"); }
printf("\n"); return 0;
} }
for(l=0; l<n-1; l++)
{
for(k=0; k<n; k++)
k<=l?printf("~"):printf("*");
printf("\n");
}
return 0;
}

Viết chương trình C nhập vào số cột của Viết chương trình C cho phép nhập vào n là

43
một nửa hình thoi bên phải và in ra hình số hàng của tam giác. Thực hiện in tam giác
tương ứng. cân các ký tự sao
INPUT INPUT
5 5
OUTPUT OUTPUT
* ~~~~*
** ~~~***
*** ~~*****
**** ~*******
***** *********
****
***
** #include <stdio.h>
*
main()
{
#include <stdio.h> int n, i, j, k, l;
scanf("%d", &n);
main() for(i = 0; i<n; i++)
{ {
int n, i, j, k, l, s, q, r, t; for(k=1; k<n-i; k++) printf("~");
scanf("%d", &n); for(j=1; j<=i;j++) printf("*");
for(i=0; i<n; i++) for(l=0; l<=i; l++) printf("*");
{ printf("\n");
for(j=0; j<n; j++) }
j<=i?printf("*"):printf(" "); return 0;
printf("\n"); }
}
for(k=0; k<=n; k++)
{
for(l=1; l<=n; l++)
l<n-k?printf("*"):printf(" ");
printf("\n");
}
return 0;
}

44
Viết chương trình C cho phép nhập vào số Viết chương trình C cho phép nhập vào số
hàng và cột của hình bình hành. Thực hiện hàng và số cột của hình chữ nhật và in ra
in ra hình bình hành ngược hình chữ nhật các chữ số tăng dần theo hàng
tương ứng.
INPUT
(Lưu ý các giá trị được in liền nhau, không
35 bao gồm khoảng trắng)
OUTPUT INTPUT
***** 53
~***** OUPUT
~~***** 123
456
789
#include <stdio.h> 101112
main() 131415
{
int a, b, i, j;
scanf("%d %d", &a, &b);
for(i=0; i<a;i++) #include <stdio.h>
{
for(j=0;j<b+i;j++) main()
{ {
if(j>=i) printf("*"); long a, b, c = 1, i ,j;
else printf("~"); scanf("%d %d", &a, &b);
} for(i = 0; i < a; i++)
printf("\n"); {
} for(j = 0; j < b; j++)
return 0;
{
} printf("%d", c);
c++;
}
printf("\n");
}
return 0;
}

45
Viết chương trình C cho phép nhập vào số Viết chương trình C cho phép nhập vào số
hàng và cột của hình chữ nhật và in ra hình hàng và cột của hình chữ nhật và in ra hình
chữ nhật các số tương ứng. chữ nhật các số tương ứng.
INPUT (Lưu ý các số được in liền nhau)
55 INPUT
OUTPUT 55
11111 OUTPUT
00000 01010
11111 01010
00000 01010
11111 01010
01010

#include <stdio.h>
#include <stdio.h>
main()
{ main()
int a, b, i ,j; {
scanf("%d %d", &a, &b); int a, b, i ,j;
for(i = 0; i < a; i++) scanf("%d %d", &a, &b);
{ for(i = 0; i < a; i++)
for(j = 0; j < b; j++) {
{ for(j = 0; j < b; j++)
if(i%2==0) printf("1"); {
else printf("0"); if(j%2==0) printf("0");
} else printf("1");
printf("\n"); }
} printf("\n");
return 0; }
} return 0;
}

46
Viết chương trình C cho phép nhập vào Viết chương trình C cho phép nhập vào số
hàng và cột và in ra hình chữ nhật số 1 và 0 hàng và số cột của hình chữ nhật. In ra hình
tương ứng. chữ nhật số 1 với các đường số 0 ở giữa
tương ứng.
INPUT
INPUT
55
65
OUTPUT
OUTPUT
10101
11011
01010
11011
10101
00000
01010
00000
10101
11011
11011
#include <stdio.h>

#include <stdio.h>
main()
{
main()
int a, b, i, j, c;
{
scanf("%d%d", &a, &b);
int a, b, i, j;
for(i=0; i<a; i++)
scanf("%d %d", &a, &b);
{
for(i = 1; i <= a; i++)
if(i%2==0) c=1;
{
else c=0;
for(j = 1; j <= b; j++)
for(j=0; j<b; j++)
{
{
if (b%2 == 0 && (j ==
if(c==1) b/2 || j == b/2+1))
{
printf("0");
printf("%d", c); else if(j == b/2+1)
c--; printf("0");
} else if (a%2 == 0 && (i
else == a/2 || i == a/2 + 1))
{ printf("0");
printf("%d", c); else if (i == a/2 + 1)
printf("0");
c++;
else printf("1");
}
}
}
printf("\n");
printf("\n");
}
}
return 0;
return 0;
}
}

47
Viết chương trình C cho phép nhập vào số Viết chương trình C cho phép nhập vào số
hàng, số cột của hình chữ nhật và in ra hình hàng và cột của hình chữ nhật và in ra hình
chữ nhật số tương ứng. chữ nhật các số tương ứng.
INPUT INPUT
54 55
OUTPUT OUTPUT
1234 11111
1234 11111
1234 11111
1234 11111
1234 11111

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

main() main()
{ {
int a, b, i, j; int a, b, i ,j;
scanf("%d%d", &a, &b); scanf("%d %d", &a, &b);
for(i=1; i<=a; i++) for(i = 0; i < a; i++)
{ {
for(j=1; j<=b; j++) for(j = 0; j < b; j++)
printf("%d", j); {
printf("\n"); printf("1");
} }
return 0; printf("\n");
} }
return 0;
}

48
Viết chương trình C cho phép nhập vào số Viết chương trình nhập vào n và in ra hình
hàng và số cột của hình chữ nhật. In ra hình theo quy luật
chữ nhật số tương ứng. INPUT
INPUT 5
45 OUTPUT
OUTPUT 12345
11111 21234
22222 32123
33333 43212
44444 54321

#include <stdio.h>

#include <stdio.h> int main()


{
main() int n;
{ scanf("%d", &n);
int a, b, i, j, c=1; for (int i = 1; i <= n; i++) {
scanf("%d %d", &a, &b); for (int j = i; j > 0; j--) {
for(i=0; i<a; i++) printf("%d ", j);
{ }
for(j=0; j<b; j++) for (int j = 2; j <= n - i + 1; j++) {
printf("%d", c); printf("%d ", j);
printf("\n"); }
c++;
printf("\n");
} }
return 0; return 0;
} }

49
Viết chương trình C cho phép nhập vào số #include <stdio.h>
hàng và số cột của hình chữ nhât. Thực hiện
in ra hình chữ nhật theo nguyên tắc tương
ứng. main()
INTPUT {
55 int a, b, x, i, j;
OUTPUT scanf("%d %d", &a, &b);
55555 for(i = 0; i < a; i++)
54444 {
54333 x = (a >= b ? a : b);
54322 printf("%d", x);
54321 for(j = 1; j < b; j++)
Hoặc {
INPUT if(j <= i) x--;
46 printf("%d", x);
OUTPUT }
666666 printf("\n");
655555 }
654444 return 0;
654333 }
Hoặc
INPUT
64
OUTPUT
6666
6555
6544
6543
6543
6543

50
Viết chương trình C cho phép nhập vào số #include <stdio.h>
hàng và số cột của hình chữ nhât. Thực hiện
in ra hình chữ nhật theo nguyên tắc tương
ứng. main()
INTPUT {
55 int a, b, x, i, j;
OUTPUT scanf("%d %d", &a, &b);
55555 for(i = 0; i < a; i++)
44445 {
33345 x = (a >= b ? a : b);
22345 if(i < b) x -= i;
12345 else x = a - b + 1;
Hoặc for(j = 1; j < b; j++)
INPUT {
46 printf("%d", x);
OUTPUT if (j >= b - i) x++;
666666 }
555556 printf("%d", a >= b ? a : b);
444456 printf("\n");
333456 }
Hoặc return 0;
INPUT }
64
OUTPUT
6666
5556
4456
3456
3456
3456

51
Viết chương trình C cho phép nhập vào số #include <stdio.h>
hàng và số cột của hình chữ nhât. Thực hiện
in ra hình chữ nhật theo nguyên tắc tương
ứng. main()
INTPUT {
55 int a, b, x, i, j;
OUTPUT scanf("%d %d", &a, &b);
54321 for(i = 1; i <= a; i++)
54322 {
54333 x = (a >= b ? a : b);
54444 for(j = 0; j < b; j++)
55555 {
printf("%d", x);
Hoặc if(j < a - i) x--;
INPUT }
46 printf("\n");
OUTPUT }
654333 return 0;
654444 }
655555
666666
Hoặc
INPUT
64
OUTPUT
6543
6543
6543
6544
6555
6666

52
Viết chương trình C cho phép nhập vào số #include <stdio.h>
hàng và số cột của hình chữ nhât. Thực hiện
in ra hình chữ nhật theo nguyên tắc tương
ứng. main()
INTPUT {
55 int a, b, x, i, j;
OUTPUT scanf("%d %d", &a, &b);
12345 for(i = 0; i < a; i++)
22345 {
33345 if(a <= b) x = b - a + i + 1;
44445 else
55555 x = a - b + 1 + (i <= a - b ? 0 : i -
a +b);
Hoặc
for(j = 0; j < b; j++)
INPUT
{
46
printf("%d", x);
OUTPUT
if(a < b)
333456
{
444456
if(j >= (a >= b ? a - b + i : b - a + i))
555556
x++;
666666
}
Hoặc
else
INPUT
{
64
if(a == b)
OUTPUT
{
3456
if(i <= j) x++;
3456
}
3456
else
4456
{
5556
if(a > b)
6666
{

if(j >= i -a + b) x++;


}}}
}
printf("\n");
}
return 0;
}

53
Viết chương trình C cho phép nhập vào số #include <stdio.h>
hàng và số cột của hình chữ nhật. Thực hiện
in hình chữ nhật số theo nguyên tắc tương
ứng. main()
INPUT {
44 int a, b, x, i, j;
OUTPUT scanf("%d %d", &a, &b);
4444 for(i = 0; i < a; i++)
3444 {
2344 x = (a <= b ? a : b);
1234 if (a <= b) x = a - i;
else
Hoặc {
INPUT if(i > a - b) x = a - i;
35 }
OUTPUT for(j = 0; j < b; j++)
34555 {
23455 printf("%d", x);
12345 if(a == b)
{
Hoặc if(i > j) x++;
INPUT }
64 else
OUTPUT {
4444 if(a < b)
4444 {
4444 if(j < b- a + i) x++;
3444 }
2344 else if(i > a - b && j < i - a + b) x++;
1234 }
}
printf("\n");
}
return 0;
}

54
Viết chương trình C cho phép nhập vào số #include <stdio.h>
hàng và số cột của hình chữ nhật. Vẽ hình
chữ nhật số theo nguyên tắc tương ứng.
main()
INPUT
{
44
int a, b, x, y, i, j;
OUTPUT
scanf("%d %d", &a, &b);
1234
for(i = 0; i < a; i++)
2341
{
3421
x = 1 + i;
4321
for(j = 0; j < b; j++)
{
OR
y = b - j;
INPUT
if(j < b - i || j == 0)
35
{
OUTPUT
printf("%d", x);
12345
x++;
23451
}
34521
else
{
OR
printf("%d", y);
INPUT
y--;
64
}
OUTPUT
}
1234
printf("\n");
2341
}
3421
return 0;
4321
5321 }
6321

55
viết chương trình C cho phép nhập vào số #include <stdio.h>
hàng và số cột của hình chữ nhật. Vẽ hình
chữ nhật số theo nguyên tắc tương ứng.
main()
INPUT
{
44
int a, b, x, y, i, j;
OUTPUT
scanf("%d %d", &a, &b);
1234
for(i = 0; i < a; i++)
2343
{
3432
x = i + 1;
4321
y = b - 1;
for(j = 0; j < b; j++)
Hoặc
{
INPUT
if(j == 0 || j < b - i)
35
{
OUTPUT
printf("%d", x);
12345
if(x < b) x++;
23454
}
34543
else
{
Hoặc
x--;
INPUT
printf("%d", x);
53
}
OUTPUT
}
123
printf("\n");
232
}
321
return 0;
432
}
543

56
Viết chương trình C cho phép nhập vào số #include <stdio.h>
hàng và số cột của hình chữ nhật. Thực hiện
in ra hình chữ nhật theo nguyên tắc tương
ứng. main()
INPUT {
44 int a, b, i, j, x;
OUTPUT scanf("%d %d", &a, &b);
1234 for(i = 0; i < a; i++)
2123 {
3212 x = i + 1;
4321 for(j = 0; j < b; j++)
{
Hoặc if(j <= i)
INPUT {
46 printf("%d", x);
OUTPUT if(j < i) x--;
123456 }
212345 else
321234 {
432123 x++;
printf("%d", x);
Hoặc }
INPUT }
64 printf("\n");
OUTPUT }
1234 return 0;
2123 }
3212
4321
5432
6543

57
Viết chương trình C cho phép nhập vào số #include <stdio.h>
hàng và số cột của hình chữ nhật. Thực hiện
in ra hình chữ nhật theo nguyên tắc tương
ứng. main()
INPUT {
44 int a, b, i, j, x;
OUTPUT scanf("%d %d", &a, &b);
4321 for(i = 0; i < a; i++)
3212 {
2123 x = (a > b ? a : b) - i;
1234 for(j = 0; j < b; j++)
{
Hoặc if(j < (a > b ? a : b) - i || j == 0)
INPUT {
46 printf("%d", x);
OUTPUT if(j < (a > b ? a : b) - i - 1) x--;
654321 }
543212 else
432123 {
321234 x++;
printf("%d", x);
Hoặc }
INPUT }
64 printf("\n");
OUTPUT }
6543 return 0;
5432 }
4321
3212
2123
1234

58
Viết chương trình C cho phép nhập vào 2 số int a, b, bcnn = 0, i, ucln = 0;
a và b. Thực hiện tìm bội chung nhỏ nhất scanf("%d %d", &a, &b);
của a và b và in ra màn hình.
for (i = 1;;i++)
Input
{
12 30
bcnn = a * i;
Output
if (bcnn % b == 0)
60
break;
else continue;
}
#include <stdio.h>
ucln = a * b / bcnn;
printf("%d", ucln);
main()
return 0;
{
int a, b, bcnn = 0, i; }
scanf("%d %d", &a, &b);
for (i = 1;;i++)
Tìm ước chung lớn nhất và bội chung nhỏ
{ nhất của hai số nguyên dương a và b
bcnn = a * i; INPUT
if (bcnn % b == 0) 12 18
break; OUTPUT
else continue; 6 36
}
printf("%d", bcnn); #include<stdio.h>
return 0; #include<math.h>
} #include<string.h>
#define MAX 100
int main()
Viết chương trình C cho phép nhập vào 2 số {
a và b. Thực hiện in tìm ước chung lớn nhất
của a và b và in ra màn hình. int a, b;
Input scanf("%d%d", &a, &b);
12 30 int c=a*b;
Output while(a!=b)
6 {
if(a>b) a-=b;
else b-=a;
#include <stdio.h> }
main() printf("%d %d", a, c/a);
{ }

59
Một số được coi là đẹp nếu nếu nó có tính {
chất thuận nghịch và tổng chữ số chia hết
cho 10. Bài toán m=n%10;
đặt ra là cho trước số chữ số. Hãy đếm xem tong+=m;
có bao nhiêu số đẹp với số chữ số như vậy
INPUT n/=10;
2
}
OUTPUT
1 if(tong%10==0)

return 1;

#include <stdio.h> return 0;

#include <math.h> }

int tn(int n)

{ int main()

int st=0, sn=n; {

int a,i;

while(n!=0) scanf("%d", &a);

{ int min= pow(10,a-1);

st=n%10+st*10; int max= (pow(10,a)-1);

n/=10; int dem=0;

} for(i=min; i<=max; i++)

if(st==sn) {

return 1; if(tn(i) && tong(i) )

return 0; dem++;

} }

printf("%d", dem);

int tong(int n) return 0;

{ }

int tong=0, m;

while(n!=0)

60
Viết chương trình C cho phép nhập một số Dãy số Fibonacci được định nghĩa như sau:
tự nhiên n và tính giai thừa của n. F0 = 0, F1 = 1; Fi = Fi-1 + Fi-2. Cho số
nguyên dương n, với
INPUT
2<=n<=92. Hãy viết chương trình in ra n số
5 Fibonacci đầu tiên.
OUTPUT INPUT
120 5
OUPUT
01123
#include <stdio.h>

main() #include<stdio.h>
{ int main()
int n, i; {
long long a = 1; int f1=0,f2=1,f3,n;
scanf("%d", &n); do
for (i = 1; i <= n; i++) {
{ scanf("%d",&n);
a *= i; }
} while ( n<2 || n> 92);
printf("%lld ", a); printf("%d %d",f1,f2);
return 0; for(int i=2;i<n;++i)
} {
f3=f1+f2;
printf(" %d",f3);
f1=f2;
f2=f3;
}
}

61
Viết chương trình C cho phép nhập vào ba Nhập một số nguyên dương N không quá 9
số và tìm giá trị lớn nhất trong ba số đó. chữ số. Hãy đếm xem N có bao nhiêu chữ số
lẻ và bao nhiêu chữ số chẵn. Nếu không
INPUT tồn tại số lẻ hoặc số chẵn thì in ra kết quả là
10 20 30 0 cho loại số tương ứng
OUTPUT INPUT
30 12345678
OUTPUT
44
#include <stdio.h>
#include <conio.h>
main() #include <stdio.h>
{ main()
int a = 0, b= 0, c= 0; {
scanf("%d %d %d", &a, &b, &c); unsigned int n, a = 0, chan = 0, le = 0;
if (b < a && (c < a || c < b)) scanf("%d", &n);
{ while (n > 0)
printf("%d", a); {
} a = n % 10;
else if (n % 2 ==0)
{ chan++;
if (a < b && (c < b || c < a)) else
{ le++;
printf("%d", b); n /= 10;
} }
else printf("%d %d", le, chan);
{ return 0;
printf("%d", c); }
}
}
return 0;
}

62
Viết chương trình C cho phép nhập vào một Viết chương trình C cho phép nhập vào số
số n, thực hiện đếm số lần xuất hiện của các ngày, thực hiện chuyển số ngày sang năm,
chữ số trong n và in ra màn hình. tuần, ngày (Bỏ qua trường hợp năm nhuận)
INPUT INPUT
112345 373
OUTPUT OUTPUT
12 111
21
31
41 #include <stdio.h>
51 main()

{
#include <stdio.h> int a, nam = 0, tuan = 0, ngay = 0;
scanf("%d", &a);
int main() nam = a / 365;
{ tuan = (a - nam * 365) / 7;
int n, arr[10] = {0}; ngay = a - nam * 365 - tuan * 7;
scanf("%d", &n); printf("%d %d %d", nam, tuan, ngay);
if (!n) { return 0;
arr[0]++; }
}
while (n > 0) {
arr[n % 10]++;
n /= 10;
}
for (int i = 1; i <= 9; i++) {
if (arr[i]) {
printf("%d %d\n", i, arr[i]);
}
}
if (arr[0]) {
printf("%d %d\n", 0, arr[0]);
}
return 0;
}

63
Năm nhuận là năm thõa mãn 1 trong hai {
điều kiện sau: int c;
1. chia hết cho 4 và không chia hết cho 100 float f;
2. chia hết cho 400 scanf("%d", &c);
Viết chương trình C cho phép kiểm tra một f = ((float)c * 9 / 5) + 32;
năm có phải là năm nhuận hay không. Nếu
đúng in ra 1 sai in ra 0 printf("%.2f", f);
INPUT return 0;
2016 }
OUTPUT
1

#include <stdio.h> Viết chương trình C cho phép nhập vào hai
số x và y và tìm mũ của chúng sử dụng hàm
main() pow (thư viện math.h)
INTPUT
{
52
unsigned int a = 0; OUTPUT
scanf("%d", &a); 25
if (((a % 4 == 0) && ( a % 100 != 0)) ||
(a % 400 == 0))
printf("1");
#include <stdio.h>
else printf("0");
#include <math.h>
return 0;
main()
}

{
Công thức chuyển đơn vị đo nhiệt độ từ C int x,y,z = 0;
sang F như sau: scanf("%d %d", &x, &y);
F = (C * 9 / 5) + 32 z = pow(x, y);
Viết chương trình C cho phép nhập vào printf("%d", z);
nhiệt độ đo theo độ C, thực hiện chuyển
sang đơn vị đo độ F và in ra màn hình. (Lưu return 0;
ý luôn lấy 2 chữ số thập phân sau dấu chấm }
phẩy)
INPUT
24
OUTPUT
75.20

#include <stdio.h>
main()

64
Viết chương trình C nhập vào hai số nguyên Viết chương trình C nhập vào 2 số nguyên a
a và b. Thực hiện các phép cộng, trừ, nhân, và b. Tính tổng và in ra màn hình
chia và chia lấy dư và in ra kết quả (Lưu ý: INPUT
+ trong trường hợp b = 0 thì không thực 10 20
hiện bất kỳ tính toán nào và in ra màn hình
số 0 OUTPUT
+ kết quả của phép chia chỉ lấy 2 chữ số sau 30
dấu chấm)
INPUT #include <stdio.h>
10 5 int main()
OUTPUT {
15 5 50 2.00 0 int a,b,tong = 0;
scanf("%d %d", &a, &b);
#include <stdio.h> tong = a + b;
main() printf("%d", tong);
{ }
int a,b, tong = 0, hieu = 0, tich = 0, du =
0;
Viết chương trình C cho phép nhập vào một
float thuong = 0; số n, thực hiện tìm tích của các chữ số của n
scanf("%d %d", &a, &b); và in ra màn hình.
if(b == 0) INPUT
{ 1234
printf("0"); OUTPUT
} 24
else
{ #include <stdio.h>
tong = a + b; main()
hieu = a - b; {
tich = a * b; int n, tich = 1, m;
thuong = (float)a / b; scanf("%d", &n);
du = a % b; while(n > 0)
printf("%d %d %d %.2f %d", tong, {
hieu, tich, thuong, du); m = n % 10;
} tich = tich * m;
return 0; n = n / 10;
} }
printf("%d", tich);
return 0;
}

65
Viết chương trình C cho phép nhập vào Viết chương trình C cho phép nhập vào n và
chiều dài và chiều rộng của hình chữ nhật. thực hiện liệt kê các số arstrong nhỏ hơn n.
Thực hiện tính chu vi, diện tích và in ra màn (Mỗi kết quả thỏa mãn cách nhau một
hình. khoảng trắng)
Lưu ý nếu người dùng nhập chiều dài hoặc INPUT
chiều rộng nhỏ hơn hoặc bằng 0 thì in ra 1000
màn hình số 0 OUTPUT
INPUT 1 2 3 4 5 6 7 8 9 153 370 371 407
2 10
OUTPUT #include<stdio.h>
24 20 #include<math.h>
int sochuso(int i)
{
#include <stdio.h> int dem=0,j;
#include <math.h> while(i){
int main () j=i%10;
{ dem++;
int a, b; i/=10;
scanf("%d", &a); }
scanf("%d", &b); return dem;
if (a>0 && b>0) }
{ int kiemtra(int i)
printf("%d\n",(a + b)*2); {
printf("%d\n", a * b); int tong=0,m=i,j;
} while(i){
else j=i%10;
printf("0"); tong+=pow(j,sochuso(m));
return 0; i/=10;
} }
if(tong==m)
return 1;
return 0;
}
int main(){
int i,n;
scanf("%d",&n);
for(i=1;i<n;i++)
if(kiemtra(i)==1)
printf("%d ",i);
return 0;
}

66
Phương trình bậc 2 là phương trình dạng Phương trình bậc nhất là phương trình
ax2 + bx + c = 0. dạng ax + b = 0.
Viết chương trình C cho phép nhập vào Viết chương trình C cho phép nhập vào a,b
a,b,c và thực hiện giải phương trình bậc 2. và thực hiện giải phương trình bậc nhất.
Nếu vô nghiệm thì in ra dòng NO Nếu vô nghiệm thì in ra VN
Nếu có nghiệm thì in các nghiệm (luôn lấy 2 Nếu có nghiệm thì in ra VSN
chữ số thập phân sau dấu chấm phẩy) cách Nếu phương trình có nghiệm duy nhất thì in
nhau một khoảng trắng. ra với định dạng luôn lấy 2 chữ số thập
INPUT phân sau dấy chấm
8 -4 -2 INPUT
OUTPUT 2 -1
0.81 -0.31 OUTPUT
0.50

#include <stdio.h>
#include <math.h> #include <stdio.h>
main()
main()
{ {
int a = 0, b = 0, c = 0, d = 0; int a, b;
float x1 = 0, x2 = 0; float x = 0;
scanf("%d %d %d", &a, &b, &c); scanf("%d %d", &a, &b);
d = b*b - 4*a*c; if ((a == 0) && (b == 0))
printf("VSN");
if (d < 0)
else
printf("NO");
{
else
if ((a == 0) && (b != 0)) printf("VN");
{
else
x1 = (-b + sqrt(d)) / (2*a);
{
x2 = (-b - sqrt(d)) / (2*a);
x = -(float)b/a;
if (x1 == x2)
printf("%.2f", x);
printf("%.2f", x1);
}
else
}
printf("%.2f %.2f", x1, x2);
return 0;
}
}
}

67
Viết chương trình C cho phép nhập vào một int n, tong = 0, m;
số n và in ra tất cả các ước số của n. (Mỗi scanf("%d", &n);
ước được liệt kê cách nhau một khoảng
trắng) while(n > 0)
INPUT {
12 m = n % 10;
OUTPUT tong = tong + m;
1 2 3 4 6 12 n = n / 10;
}
printf("%d", tong);
#include <stdio.h> return 0;
}
main()
{ Viết chương trình C cho phép nhập vào một
số nguyên dương và kiểm tra xem số đó là số
int n, i; chẵn hay số lẻ.
scanf("%d", &n); Nếu là số chẵn thì in ra 0, số lẻ in ra 1
if(n != 0) (Lưu ý nếu người dùng nhập vào số nhỏ hơn
{ 0 thì in ra 0)
for(i = 1; i <= n; i++) INPUT
{ 5
if(n % i == 0) OUTPUT
printf("%d ", i); 1
else continue;
} #include <stdio.h>
} main()
} {
int a = 0;
scanf("%d", &a);
Viết chương trình C cho phép nhập vào một
số n, thực hiện tìm tổng các chữ số của n và if (a < 0)
in ra màn hình. printf("0");
INPUT else
1234 {
OUTPUT if (a % 2 == 0)
10 printf("0");
else printf("1");
#include <stdio.h> }
}
main()
{

68
Viết chương trình C cho phép nhập vào 3 số }
a, b, c. Thực hiện kiểm tra a có chia hết cho printf("%d %d", n, a);
b và c hay không. Nếu a chia hết cho b và c
thì in ra 1, ngược lại in ra 0. }
INPUT
15 3 5
OUTPUT
1 Viết chương trình C cho phép nhập vào một
số n bất kỳ, tìm và in ra chữ số đầu tiên và
cuối cùng của n.
#include <stdio.h>
INPUT
main()
1234
OUTPUT
{
14
int a = 0, b = 0, c = 0;
scanf("%d %d %d", &a, &b, &c);
if ((a % b == 0) && (a % c == 0))
printf("1");
#include <stdio.h>
else
printf("0");
main()
return 0;
{
}
int n = 0, a = 0, i;
scanf("%d", &n);
a = n % 10; //chu so cuoi
Viết chương trình C cho phép nhập vào một
số n bất kỳ, tìm và in ra chữ số đầu tiên và while (n >= 10) //lap tim chu so dau
cuối cùng của n. {
INPUT n /= 10;
1234 }
OUTPUT printf("%d %d", n, a);
14
}

#include <stdio.h>
main()
{
int n = 0, a = 0, i;
scanf("%d", &n);
a = n % 10;
while (n >= 10)
{
n /= 10;

69
Viết chương trình cho phép nhập vào hai số Ba góc của một tam giác sẽ thỏa mãn là số
nguyên dương và tìm tất cả các số nguyên tố nguyên dương và có tổng bằng 180. Viết
nằm trong khoảng đó chương trình C cho phép nhập vào 3 giá trị
và kiểm tra xem có thỏa mãn là ba góccủa
INPUT một tam giác hay không. Nếu đúng in ra 1,
10 50 ngược lại in ra 0.
OUTPUT INPUT
11 13 17 19 23 29 31 37 41 43 47 30 60 90
OUTPUT
1
#include <stdio.h>
#include <math.h> #include <stdio.h>
main()
int csnt(int n)
{ {
for (int i = 2; i <= sqrt(n); i++) { int a =0, b = 0, c= 0;
if (n % i == 0) { scanf("%d %d %d", &a, &b, &c);
return 0; if ((a < 0) || (b < 0) || (c < 0) || ((a + b + c) !=
180))
}
printf("0");
}
else printf("1");
return n < 2 ? 0 : 1;
return 0;
}
}
int main ()
{
int a, b;
scanf("%d %d", &a, &b);
for (int i = (a < b ? a : b); i <= (a < b ? b : a);
i++) {
csnt(i) ? printf("%d ", i) : 0;
}
return 0;
}

70
Ba cạnh được gọi là cạnh của một tam giác if ((('A' <= ch) && (ch <= 'Z')) || (('a'
nếu chúng nguyên dương và tổng của hai <= ch) && (ch <= 'z')))
cạnh luôn lớn hơn cạnh còn lại. printf("1");
Viết chương trình C cho phép nhập vào 3 else printf("0");
cạnh và kiểm tra xem có thỏa mãn là 3 cạnh
của một tham giác hay không. Nếu đúng in return 0;
ra 1, sai in ra 0. }
INPUT
7 4 10
OUTPUT
1 Viết chương trình C cho phép nhập vào một
số n và in ra số đảo ngược của n.
#include <stdio.h> Lưu ý nếu chữ số cuối cùng là 0 thì khi in số
đảo ngược có thể loại bỏ số này
INPUT
main ()
1234
{
OUTPUT
int a, b, c;
4321
scanf("%d %d %d", &a, &b, &c);
if ((a <= 0) || (b <= 0) || (c <= 0) || (a >=
b + c) || (b >= a + c) || (c >= a + b)) #include <stdio.h>
printf("0");
else main()
printf("1"); {
return 0; int n, a = 0;
} scanf("%d", &n);
a = n % 10;
{
Viết chương trình C cho phép người dùng if (a == 0);
nhập vào một ký tự và kiểm tra xem ký tự
đó có nằm trong bảng chữ cái hay không. else
Nếu đúng in ra 1, sai in ra 0. printf("%d", a);
INPUT }
a while (n > 10)
OUTPUT {
1 n /= 10;
a = n % 10;
#include <stdio.h> printf("%d", a);
main() }
return 0;
{ }
char ch;
scanf("%c", &ch);

71
Viết chương trình C cho phép nhập vào ba cạnh của một tam giác và kiểm tra xem ba cạnh
có thỏa mãn là ba cạnh của tam giác đặc biệt nào đó,như là tam giác vuông, cân, đều hay
không.
Nếu là tam giác đều in ra 3
Nếu là tam giác cân in ra 2
Nếu là tam giác vuông in ra 1
INPUT
333
OUTPUT
3

#include <stdio.h>
main()

{
unsigned int a = 0, b = 0, c = 0;
scanf("%d %d %d", &a, &b, &c);
if ((a*a + b*b == c*c) || ( a*a + c*c == b*b) || (b*b + c*c == a*a))
printf("1");
else
{
if ( (a == b) && (b== c))
printf("3");
else
{
if ((a == b) || (a == c) || (b == c))
printf("2");
}
}
}

72
Viết chương trình cho phép nhập vào hai số Viết chương trình phân tích một số nguyên
nguyên dương và tìm tất cả các số hoàn thành các thừa số nguyên tố.
hảo(là số có tổng các ước số nhỏ hơn nó INPUT
bằng chính nó) (nếu không tồn tại số nào thì 28
in ra 0) OUTPUT
INPUT 227
1 100
OUTPUT #include <stdio.h>
6 28 #include <math.h>
int snt(int j)
{
#include <stdio.h> int i, a = 0;
for(i = 2; i <= sqrt(j); i++)
main() {
{ if(j % i == 0)
int a, b, i, s, j; {
scanf("%d %d", &a, &b); a++;
if(a > b) break;
}}
{ return (a == 0 ? 1 : 0);
int temp; }
temp = a; main()
a = b; {
b = temp; int n, j;
} scanf("%d", &n);
for(j = a; j <= b; j++) if(n <= 1);
{ else
s = 0; {
for(i = 1; i < j; i++) while (n > 1)
{ {
if(j % i == 0) s += i; for(j = 2; j <= n; j++)
} {
if(j == s) printf("%d ", j); if(snt(j) == 1 && n % j == 0)
} {
return 0; printf("%d ", j);
} n /= j;
break;
}}}}
return 0;
}

73
Viết chương trình cho phép nhập vào hai số main()
nguyên dương và tìm tất cả các số Strong (là {
số có tổng giai thừa các chữ số bằng chính
nó) nằm trong khoảng đó (nếu không tồn tại int k, a, b;
số nào thì in ra 0) scanf("%d %d", &a, &b);
INPUT if(a < b)
1 1000 {
OUTPUT for(k = a; k <= b; k++)
1 2 145 if(str(k) == 1) printf("%d ", k);
}
if(a > b)
{
#include <stdio.h> for(k = b; k <= a; k++)
if(str(k) == 1) printf("%d ", k);
int giaithua(int a) }
{
}
int i, gt = 1;
if(a >= 1)
{
for(i = 1; i <= a; i++) gt *= i;
}
return gt;
}

int str(int k)
{
int n1, a, s = 0;
n1 = k;
while (n1 > 0)
{
a = n1 % 10;
n1 /= 10;
s += giaithua(a);
}
return ((s == k) ? 1 : 0);
}

74
Viết chương trình cho phép nhập vào hai số }
nguyên dương và tìm tất cả các số Amstrong return s;
(là số có 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ó - với n là số chữ số) }
nằm trong khoảng đó (nếu không tồn tại số main()
nào thì in ra 0)
{
INPUT
int a, b, k;
10 1000
scanf("%d %d", &a, &b);
OUTPUT
for(k = ((a < b) ? a : b); k <= ((a < b) ?
153 370 371 407 b : a); k++)
{
if (ktra(k) == k) printf("%d ", k);
}
#include <stdio.h> return 0;
#include <math.h>
}

int dem(int a)
{
int n = 0;
while (a > 0)
{
n++;
a /= 10;
}
return n;
}

int ktra(int a)
{
int i, s = 0;
int x = dem(a);
while (a > 0)
{
i = a % 10;
s += pow(i, x);
a /= 10;

75
Một số được coi là thuần nguyên tố nếu nó if (snt(d)) j /= 10;
là số nguyên tố, tất cả các chữ số là nguyên else break;
tố và tổng chữ số của nó
}
cũng là một số nguyên tố. Bài toán đặt ra là
đếm xem trong một đoạn giữa hai số nguyên return ((j == 0) ? 1: 0);
cho trước có bao nhiêu }
số thuần nguyên tố.
INPUT int tong(int j)
23 199 {
OUTPUT int s, d;
1 s = 0;
while (j > 0)
{
d = j % 10;
#include <stdio.h> s += d;
#include <math.h> j /= 10;
}
int snt(int j) return (snt(s) ? 1: 0);
{ }
int i, a = 0;
if(j <= 1) return 0; main()
else {
{ int a, b, j, dem = 0;
for(i = 2; i <= sqrt(j); i++) scanf("%d %d", &a, &b);
{ if(a > b)
if(j % i == 0) {
{ int temp;
a++; temp = a;
break; a = b;
}}} b = temp;
return (a == 0 ? 1 : 0); }
} for(j = a; j <= b; j++)
{
int cs(int j) if(snt(j) == 1 && cs(j) == 1 &&
{ tong(j) == 1)
int d; dem++;
d = j % 10; //d: chu so }
while (j > 0) printf("%d", dem);
{ return 0;
d = j % 10; }

76
Viết chương trình C cho phép nhập vào hai Viết chương trình C cho phép nhập vào một
số a,b (a có thể lớn hơn b). Thực hiện tìm số n và kiểm tra số đó có thuộc dãy fionacci
tổng các số nguyên tố nằm trong khoảng a,b hay không. Nếu thỏa mãn in ra 1, ngược lại
và in ra màn hình. in ra 0.
INPUT 100 1 INPUT
8
OUTPUT 1060
OUTPUT
1
#include <stdio.h>
#include <math.h> #include<stdio.h>
int snt(int j)
{ #include<math.h>
int i, a = 0; int fibonacci (int n);
for(i = 2; i <= sqrt(j); i++)
int main(){
{
if(j % i == 0) int n;
{
scanf("%d",&n);
a++;
break; for(int i=1; ;i++)
}}
return (a == 0 ? 1 : 0); if(fibonacci(i)==n)
}
main() {
{ printf("1");
int n, m, i , j, s = 0;
scanf("%d %d", &n, &m); return 0;
if(n > m) }
{
else if(fibonacci(i)>n)
int temp;
temp = n; {
n = m;
m = temp; printf("0");
}
return 0;
if(n == 1) n++;
for (j = n; j <= m; j++) }
{
}
if(snt(j)) int fibonacci(int n)
s += j;
{
}
printf("%d", s); if(n==1||n==2) return 1;
return 0;
return fibonacci(n-1)+fibonacci(n-2);
}
}

77
Số hoàn hảo là số có tổng các ước số (nhỏ #include<stdio.h>
hơn chính nó) bằng nó. Ví dụ: 6 = 1 + 2 + 3.
int main(){
Viết chương trình cho phép nhập vào số n
và liệt kê các số hoàn hảo nhỏ hơn n. int n;
INPUT
1000 scanf("%d",&n);
OUTPUT int a[100][100];
6 28 496
for(int i=1;i<=2*n-1;i++){

#include <stdio.h> for(int j=1;j<=2*n-1;j++){


#include <math.h>
if(i<=n){

int hh (int n) {
int sum = 1 ; if(j>=i&&j<=2*n-i) printf("%d",n-i+1);
for (int i = 2 ; i<= sqrt (n) ; i++) else{
sum += ! ( n % i ) ? n/i + n / (n/i) : 0 ;
if(j<=n)
return ( n > 1 && sum == n ) ;
printf("%d",n-j+1);
}
int main () { else
int n ; printf("%d",j-n+1);
scanf ("%d", &n); }
for (int i = 1 ; i <n ; i ++ ) { }
hh(i) ? printf ("%d ",i) : 1 ; else{
}; if(j>=2*n-i&&j<=i)
return 0 ; printf("%d",i-n+1);
}
else{

Viết chương trình C cho phép nhập vào n là


cạnh của hình vuông. Thực hiện in ra hình if(j<=2*n-i-1) printf("%d",n-j+1);
vuông số theo nguyên tắc tương ứng.
INPUT else
4 printf("%d",j-n+1);
OUTPUT
4444444 }
4333334
4322234 }
4321234 }
4322234 printf("\n");
4333334 }
4444444 }

78
Một số được coi là đẹp nếu nó là số nguyên }
tố và tổng chữ số là một số trong dãy int a=0, b=1, c;
Fibonaci. Viết chương trình liệt kê trong
một đoạn giữa hai số nguyên cho trước có while(b<sum)
bao nhiêu số đẹp như vậy {
INPUT c=a+b;
2 50 a=b;
OUTPUT b=c;
2 3 5 11 17 23 41 }
if(b==sum) return 1;
else return 0;
#include <stdio.h> }
#include <string.h>
#define MAX 1001 void hoan_vi(int *a, int *b)
#include<math.h> {
int tmp;
int check_ngto(int n) tmp=*a;
{ *a=*b;
if(n<2) return 0; *b=tmp;
else if(n==2 || n==3) return 1; }
else
{ int main()
int i; {
for(i=2; i<=sqrt(n); i++) int a, b;
{ scanf("%d%d", &a, &b);
if(n%i==0) return 0; if(a>b) hoan_vi(&a, &b);
} int i;
return 1; for(i=a; i<=b; i++)
} {
} if(check_fibonaci(i) && check_ngto(i))
printf("%d ", i);
int check_fibonaci(int n) }
{ }
int sum=0;
while(n!=0)
{
sum=sum+n%10;
n/=10;

79
Viết chương trình C cho phép nhập vào n và while(n){
in ra màn hình n số đầu tiên thuộc dãy m=n%10;
fibonacci
t=t+m;
INPUT
n=n/10;
10
dem=dem+1;
OUTPUT
}
0 1 1 2 3 5 8 13 21
printf("%d", dem);
return 0;
#include<stdio.h>
}
#include<conio.h>

Viết chương trình C cho phép nhập vào một


int main() số nguyên n và thực hiện đổi vị trí của chữ
{ cái đầu tiên và chữ cái cuối cùng.
int n1=0,n2=1,n3,i,sopt; Lưu ý trong trường hợp chữ số cuối cùng là
0 thì khi đổi chỗ sẽ được loại bỏ (ví dụ 9800
scanf("%d",&sopt); -> 809)
printf("%d %d",n1,n2); INPUT
for(i=2;i<sopt;++i) 1234
{ OUTPUT
n3=n1+n2; 4231
printf(" %d",n3);
n1=n2; #include<stdio.h>
n2=n3;
} int main(){
return 0; int a[500];
} int n;
scanf("%d",&n);
int count=0;
Viết chương trình C cho phép nhập vào một while(n){
số n và kiểm tra xem n có bao nhiêu chữ số.
a[count++]=n%10;
INPUT
n/=10;
1234
}
OUTPUT
if(a[0]!=0) printf("%d",a[0]);
4
for(int i=count-2;i>0;i--){
printf("%d",a[i]);
#include<stdio.h>
}
int main(){
printf("%d",a[count-1]);
int n,m,t=0,dem=0;
}
scanf("%d", &n);

80
Viết chương trình C cho phép nhập vào hai printf ("%d ", i);
số a,b. Thực hiện liệt kê các số arstrong nằm }
trong khoảng a và b.
}
INPUT
else{
100 1000
for (i = b; i <a; i++){
OUTPUT
if ( kiemtra(i) == 1)
153 370 371 407
printf ("%d ", i);
}
}
#include <stdio.h>
}
#include <math.h>
int main (){
int demcs (int n){
int a,b;
if ( n <= 0) return 0;
scanf ("%d%d", &a, &b);
int count;
lietke(a,b);
count=(int)(log10(n))+1;
return 0;
return count;
} }
int kiemtra (int n){
int m;
m = n;
int sum = 0;
while (n!=0){
int i;
i = n%10;
sum += pow (i, demcs(m));
n/=10;
}
if (sum == m)
return 1;
else
return 0;
}
void lietke (int a,int b){
int i;
if ( a<b ){
for (i = a; i <b; i++){
if ( kiemtra(i) == 1)

81
Một số được gọi là số tăng giảm nếu số đó có if(cs1>cs2) k=1;
các chữ số thỏa mãn hoặc tăng dần, hoặc
giảm dần từ trái qua phải. if(cs1==cs2) return dem=0;

Hãy đếm các số nguyên tố là số tăng giảm cs1=cs2;


với số chữ số cho trước n=n/10;
INPUT }
2 if(i==0&&k==0) return dem=0;
OUTPUT if(i==0&&k==1) return dem=1;
20 if(i==1&&k==0) return dem=1;

if(i==1&&k==1) return dem=0;


#include<stdio.h> }
#include<math.h>
int check(int );
int check(int n){
int dem; int main(){
dem=0;
if(n<2){ int a;
dem=1;
} scanf("%d",&a);
else{
if(n==2){ int b,c;
dem=0;
b=pow(10,a-1);
}
else{ c=pow(10,a)-1;
for(int j=2;j<=sqrt(n);j++){
if(n%j==0){ int kt=0,kt1=0;
dem=1;
break; int dem=0;
}
} for(int i=b;i<=c;i++){
}
} kt=check(i);
return dem;
} kt1=kiemtra(i);

int kiemtra(int ); if(kt==0&&kt1==1) dem++;


int kiemtra(int n){
}
int i=0,k=0;
int cs1,cs2,dem=0; printf("%d",dem);
cs1=n%10;
n=n/10; }
while(n!=0){
cs2=n%10;
if(cs1<cs2) i=1;

82
Một số được gọi là “lộc phát” nếu chỉ có các INPUT
chữ số 0,6,8. Nhập vào một số nguyên dương 1 500
không quá 9 OUTPUT
161
chữ số, hãy kiểm tra xem đó có phải số lộc
#include <stdio.h>
phát hay không. Nếu đúng in ra 1, sai in ra 0
int cstn (int n)
INPUT
{
6068
int k = n, sdn = 0;
OUTPUT while (k) {
sdn = sdn * 10 + k % 10;
1 k /= 10;
}
#include<stdio.h> return sdn == n;
int main(){ }

int n,m; int cslp(int n)

scanf("%d",&n); {

do{ m=n%10; int sum = 0, kt = 0;


while (n){
if(m==0 || m==6 || m==8){
sum += n % 10;
n=n/10;} else
kt = n % 10 == 6 ? 1 : kt; n /= 10;
break;
}
}while(n>0);
return kt && sum % 10 == 8;
if(n==0) printf("1");
}
else
int main()
printf("0"); {
return 0; int a, b;
} scanf("%d %d", &a, &b);

Một số được coi là số đẹp nếu nó là số thuận for (int i = (a < b ? a : b); i <= (a < b ? b : a);
nghịch, có chứa ít nhất một chữ số 6, và tổng i++) {
các chữ số của nó có chữ số cuối cùng là 8.
Viết chương trình đếm xem trong một đoạn cstn(i) && cslp(i) ? printf("%d ", i) : 0;
giữa hai số nguyên cho trước có bao nhiêu }
số đẹp như vậy
return 0;
}

83

You might also like