You are on page 1of 19

Nội dung

Lời giới thiệu........................................................................................................................................2


Trường Công nghệ Thông tin Thành phố Hồ Chí Minh chi nhánh Hà Nội.........................................3
Đề thi................................................................................................................................................3
Bài 1: Giải và biện luận phương trình bậc 2 (tính cả trường hợp suy biến)................................3
Bài 2: Viết chương trình cho phép nhập n từ bàn phím (nếu n <= 0 thì bắt nhập lại) . Tính tổng
s = 1^2 + 2^2+.... + n^2. ............................................................................................................3
Bài 3: Nhập chuỗi s từ bàn phím. Kiểm tra tính đối xứng (nếu có đếm số ký tự giống nhau). . 3
Lời giải.............................................................................................................................................3
Bài 1:...........................................................................................................................................3
Bài 2............................................................................................................................................4
Bài 3:...........................................................................................................................................4
Trường đại học Bách Khoa Đà Nẵng...................................................................................................5
Đề thi................................................................................................................................................5
Bài 1: Tính tổng S=1+2+3+….+n ..............................................................................................5
Bài 2: Viết chương trình nhập vào một số nguyên N có dạng abc rồi xuất ra màn hình một số
đảo ngược có dạng cba................................................................................................................5
Bài 3: Nhập vào một số nguyên N (có 3 chữ số) rồi tính tổng các số của số nguyên N.
VD:123 => 1+2+3=6..................................................................................................................5
Bài 4: Liệt kê tất cả các số nguyên tố nhỏ hơn 1000..................................................................5
Bài 5: Nhập vào số nguyên N rồi xuất ra màn hình N số nguyên tố...........................................5
Bài 6: Viết chương trình xuất ra màn hình dãy Fibonaci (1 1 2 3 5 8 13…)..............................5
Bài 7: Viết chương trình liệt kê tất cả các số N có 3 chữ số bằng tổng lập phương các chữ số
của nó..........................................................................................................................................5
Bài 8: Nhập mảng 2 chiều có dạng A[n][n]................................................................................6
Bài 9: Nhập mảng 2 chiều rồi in ra các số chính phương...........................................................6
Bài 10: Viết hàm nhập mảng,xuất mảng,viết hàm in ra các phần tử là số nguyên tố.................6
Bài 11: Nhập mảng 2 chiều có dạng M*N (Hoặc N*N) rồi tính tổng các phần tử.....................6
Lời giải.............................................................................................................................................6
Bài 1:...........................................................................................................................................6
Bài 2............................................................................................................................................6
Bài 3............................................................................................................................................7
Bài 4............................................................................................................................................7
Bài 5............................................................................................................................................8
Bài 6............................................................................................................................................9
Bài 7..........................................................................................................................................10
Bài 9..........................................................................................................................................11
Bài 11........................................................................................................................................12
Đề thi đại học công nghệ, đại học quốc gia........................................................................................13
Đề thi..............................................................................................................................................13
Bài 1: Sử dụng khuôn hình hàm tìm giá trị lớn nhất của 1 mảng;............................................13
Bài 2: Nhập dữ liệu và các phương thúc của số phức , nhap , in, tính modull và sử dụng toán
tử operator < để so sánh số phức;
ham main; nhập 1 dãy số phức sau đó in ra số phức nhỏ nhất..................................................13
Lời giải...........................................................................................................................................13
Bài 1..........................................................................................................................................13
Bài 2..........................................................................................................................................14
Đại Học Đà Lạt...................................................................................................................................16
Đề thi..............................................................................................................................................16
Bai 4:
- Các số 0 đầu mảng
- Các số âm ở giữa mảng và có thứ tự giảm.
- Các số dương cuối mảng và có thứ tự tăng............................................................................16
Lời giải...........................................................................................................................................16
Bài 4..........................................................................................................................................16
Đề thi Tin Dai cuong 2010 Đại học Bách Khoa Hà Nội ...................................................................18
Đề thi..............................................................................................................................................18
Tự luận......................................................................................................................................18
Lời giải...........................................................................................................................................18

Lời giới thiệu


Qua một thời gian làm mod ở box C/C++/C++0x tôi có điều kiện được theo dõi
sát hơn các topics, các bài viết về nhiều chuyên đề khác nhau. Trong tôi nảy sinh ra
một ý tưởng, sẽ tập hợp các bài viết hay, các chuyên đề hay (tất nhiên về điều này tôi
sẽ cố gắng đánh giá một cách khách quan nhất, dựa vào việc theo dõi các ý kiến thảo
luận của mọi người, chứ không chỉ dựa trên việc đánh giá theo quan điểm các nhân),
để tập hợp thành các cuốn tài liệu ngắn gọn hơn, dễ tra cứu hơn.
Việc làm của tôi không vì mục đích vụ lợi cá nhân mà dựa trên tinh thần cộng
đồng, vì lợi ích tập thể. Dựa trên cơ sở đó, các thức trình bày tài liệu này đặt cơ sở
trên việc tôn trọng quyền tác giả, tôn trọng các quy định của diễn đàn. Mong muốn
tích lũy các tài liệu hay, bổ sung vào cơ sở dữ liệu của diễn đàn, đồng thời làm tài liệu
tra cứu ngắn gọn, tiện lợi cho mọi người.
Các bài viết được sưu tầm sẽ chỉ rõ nguồn (tên tác giả, có kèm link trực tiếp
đến bài viết). Nội dung của các bài viết sẽ được tôn trọng đến mức tối đa như phong
cách trình bày code, kiểu font chữ, … Tôi chỉ chỉnh sửa những lỗi về ngữ pháp, cách
trình bày nội dung trong tài liệu.
Ngoài ra, tác giả sẽ có những comment, những ý kiến đóng góp cho bài viết
của các tác giả (dựa trên quan điểm và trình độ hiểu biết của bản thân, khó tránh khỏi
sai sót).
Tài liệu chỉ mang tính chất tham khảo. Nó không phải là một tài liệu khoa học
thật sự cả về hình thức trình bày lẫn nội dung. Những sai sót liên quan đến tác giả
như về hình thức trình bày, comment các bài viết, … xin ý kiến trực tiếp đến tác giả.
Những đóng góp cho bài viết, các bạn hãy liên hệ trực tiếp các đường link và cho ý
kiến góp ý. Tôi sẽ cố gắng cập nhật thường xuyên những thay đổi trong nội dung các
bài viết có trong tài liệu này.
Mong được sự đồng thuận nhiệt tình của mọi người!
mp121209
Trường Công nghệ Thông tin Thành phố Hồ Chí Minh chi
nhánh Hà Nội

Đề thi

Bài 1: Giải và biện luận phương trình bậc 2 (tính cả trường hợp suy biến).

Bài 2: Viết chương trình cho phép nhập n từ bàn phím (nếu n <= 0 thì bắt nhập lại) .
Tính tổng s = 1^2 + 2^2+.... + n^2.

Bài 3: Nhập chuỗi s từ bàn phím. Kiểm tra tính đối xứng (nếu có đếm số ký tự giống
nhau).

Lời giải

Bài 1:
Lời giải của bạn kitti

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

int gptb2(float a, float b, float c, float* x1, float* x2)


{
float del;
del = b*b - (4*a*c);
if(del < 0) return -1;
else
{
*x1 = (b*b - sqrt(del))/ (2*a);
*x2 = (b*b + sqrt(del))/ (2*a);
}
return 1;
}
int main()
{
clrscr();
float a, b, c, x1, x2;
printf("\nNhap a, b, c:");
scanf("%f%f%f", &a,&b,&c);
fflush(stdin);
if(a == 0)printf("X = %.2f", -b/c);
else
{
if(gptb2(a,b,c,&x1,&x2) == -1)
printf("\nphuong trinh vo nghiem");
else
{
printf("\nx1 = %.2f", x1);
printf("\nx2 = %.2f", x2);
}
}
getch();
return 0;
}

Bài 2
Lời giải của kitti

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

int main()
{
clrscr();
int n;
long tong;
int i;
do
{
printf("\n Nhap n: ");
scanf("%d", &n);
}while(n <= 0);

tong = 0;
for(i = 1; i <= n; i++) tong += i*i;
printf("\n S = %ld", tong);
getch();
return 0;
}

Bài 3:
Lời giải của kitti

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

int main()
{
clrscr();
int i, j, dem = 0;
char s[100];
printf("\n Nhap chuoi: ");
gets(s);
for(i=0,j=strlen(s)-1; i<j; i++, j--)
{
if(s[i]!=s[j])
{
printf("\n khong doi xung");
getch();
return 0;
}
else
{
dem++;
}
}
printf("\n co doi xung");
printf("\n So chhu giong nhau trong chuoi: %d", dem);
getch();
return 0;
}

Trường đại học Bách Khoa Đà Nẵng

Đề thi

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

Bài 2: Viết chương trình nhập vào một số nguyên N có dạng abc rồi xuất ra màn hình
một số đảo ngược có dạng cba

Bài 3: Nhập vào một số nguyên N (có 3 chữ số) rồi tính tổng các số của số nguyên N.
VD:123 => 1+2+3=6

Bài 4: Liệt kê tất cả các số nguyên tố nhỏ hơn 1000

Bài 5: Nhập vào số nguyên N rồi xuất ra màn hình N số nguyên tố

Bài 6: Viết chương trình xuất ra màn hình dãy Fibonaci (1 1 2 3 5 8 13…)

Bài 7: Viết chương trình liệt kê tất cả các số N có 3 chữ số bằng tổng lập phương các
chữ số của nó.
VD: N=abc=a3+b3+c3
Bài 8: Nhập mảng 2 chiều có dạng A[n][n]

Bài 9: Nhập mảng 2 chiều rồi in ra các số chính phương

Bài 10: Viết hàm nhập mảng,xuất mảng,viết hàm in ra các phần tử là số nguyên tố

Bài 11: Nhập mảng 2 chiều có dạng M*N (Hoặc N*N) rồi tính tổng các phần tử.

Lời giải

Bài 1:
Lời gải của bạn kitti
#include<stdio.h>
#include<conio.h>

int main()
{
clrscr();
int n;
long tong;
int i;
do
{
printf("\n Nhap n: ");
scanf("%d", &n);
}while(n <= 0);

tong = 0;
for(i = 1; i <= n; i++) tong += i*i;
printf("\n S = %ld", tong);
getch();
return 0;
}

Bài 2
Lời giải của bạn kitti
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
int main ()
{
clrscr ();
char* p;
int i,n;
p = (char*)malloc(128);
printf("\n Nhap xau ki tu :");
gets (p);
n = strlen(p);
printf("\n xau dao: %s \n");
for( i = n-1; i>=0; i --)
putchar(p[i]);
printf("\n");
free(p);
getch ();
return 0;
}

Bài 3
Lời giải của bạn mp121209

Code 1: Đệ quy

#include <iostream>

const int sum(const int &n) {


return n <= 0 ? 0 : n % 10 + sum(n / 10);
}

int main() {

// input
int n;
std::cin >> n;

// output
std::cout << sum(n) << std::endl;

return 0;
}
Code 2: Không đệ quy

const int sum1(const int &n) {


int m(n);
int sum(0);
while (m != 0) {
sum += m % 10;
m /= 10;
}
return sum;
}

Bài 4
Lời giải của bạn kitti
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>

int ktSNT (const int a)


{
int i = 0;
for(i = 2; i <= (int)sqrt(a); i++)
{
if( a % i == 0 || a < 2 && a != 2)
{
return 0;
}
}
return 1;
}
int main ()
{
int N= 1000,i, k = 0;
int* snt = 0;

snt = (int*)malloc(N*sizeof(int));
k = 0;
for(i = 2; i <= N; i++)
{
if(ktSNT(i) == 1)
{
snt[k] = i;
k++;
}
}

printf("\n Bang cac so nguyen to\n");


for (i = 0; i < k; i++)
{
printf("%9d", snt[i]);
}
free(snt);
getch();
return 0;
}

Bài 5
Lời giải của bạn kitti
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>

int ktSNT (const int a)


{
int i = 0;
for(i = 2; i <= (int)sqrt(a); i++)
{
if( a % i == 0 || a < 2 && a != 2)
{
return 0;
}
}
return 1;
}
int main ()
{
int N,i, k = 0;
int* snt = 0;
printf("\n Nhap vao N:");
scanf("%d", &N);

snt = (int*)malloc(N*sizeof(int));
k = 0;
i = 2;
while(k < N)
{
i++;
if(ktSNT(i) == 1)
{
snt[k] = i;
k++;
}
}

printf("\n Bang cac so nguyen to\n");


for (i = 0; i < k; i++)
{
printf("%5d", snt[i]);
}
free(snt);
getch();
return 0;
}

Bài 6
Lời giải của mp121209
Code 1: Đệ quy
// recursive algorithm
// This function returns the n-th
// number in Fibonacci's sequence
int fibonacci(const int &n) {
while (n == 1 || n == 2)
return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
Code 2: Không đệ quy
// linear algorithm
int fibonacci1(const int &n) {
for (;n == 1 || n == 2;)
return 1;
int a(1), b(1);
int count(1);
while (++ count < n) {
b += a;
a = b - a;
}
return b;
}

Hàm main để test:


int main() {
// output the first 10 numbers of Fibonacci's series
#define N 10

// test fibonacci
for (auto i = 1; i <= N; i ++)
std::cout << fibonacci(i) << " ";
std::cout << std::endl;

// test fibonacci1
for (auto i = 1; i <= N; i ++)
std::cout << fibonacci1(i) << " ";
std::cout << std::endl;

return 0;
}

Bài 7
Lời giải của bạn heroworld
#include<stdio.h>
#include<conio.h>

int main()
{
clrscr();
int a, b, c, t, i,j = 0;
int d[5];
for(i = 100; i < 999; i++)
{
a = i/100;
b = (i - a*100)/10;
c = (i - a*100 - b*10);
if(a*a*a + b*b*b + c*c*c == i)
{
d[j] = i;
j++;
}
}
printf("\nBang Cac So ");
for(i = 0; i < j; i++) printf("\n %d", d[i]);
getch();
return 0;
}

Bài 9
Lời giải của bạn xuyenit55

#include<iostream>
#include<math.h>
using namespace std;
//----------------------------------------------------------------
-------------------------------
// ham nhap mang
//----------------------------------------------------------------
------------------------------
void input_arg( int a[][20], int n , int m){

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


for ( int j = 0 ; j < m ; j++ ){
cout<< " a [ " << i << " ] [ " << j << "
] = " ;
cin>>a[i][j];
}
}

//----------------------------------------------------------------
-------------------
// ham kiem tra so chinh phuong
//----------------------------------------------------------------
--------------------
int kiemtra( int x ){
if ( x==1) return 0;
if ( sqrt (x) ==int(sqrt(x))) return 1;
return 0;
}
//----------------------------------------------------------------
-----------------------
// ham main
//----------------------------------------------------------------
-----------------------
int main(){

int a[20][20], n ,m;


cout<<" nhap so hang n = ";
cin>>n;
cout<<" nhap so cot m = ";
cin>>m;
input_arg(a,n,m);
cout<<" cac so chinh phuong cua mang la : \n";
for ( int i = 0 ; i < n ; i++)
for ( int j = 0 ; j < m ; j++){

if ( kiemtra( a[i][j]) == 1){


cout << a [i][j] << " " ;
}

}
system ("pause");
return 0;

Bài 11
Lời giải của bạn kitti

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

int dong, cot;


long SUM = 0;
int A[100][100];
void NHAPMANG(int A[][100]);
void INMANG(int A[][100]);

int main()
{

NHAPMANG(A);
INMANG(A);
getch();
return 0;
}
void INMANG(int A[][100])
{
for(int i=0;i<dong;i++)
{
for(int j=0;j<cot;j++)
{
printf(" %d ",A[i][j]);

}
printf("\n");
}
printf("Tong = %ld",SUM);

}
void NHAPMANG(int A[][100])
{
do{
printf("Nhap vao so dong cua ma tran:
");scanf("%d",&dong);
printf("\nNhap vao so cot cua ma tran: ");scanf("%d",
&cot);
}while(dong < 2 || cot < 2 || dong > 100 || cot >100);
for(int i=0;i<dong;i++)
{
for(int j=0;j<cot;j++)
{
printf("\nNhap vao phan tu A[%d][%d]: ",i,j);
scanf("%d",&A[i][j]);
SUM += A[i][j];
}

Đề thi đại học công nghệ, đại học quốc gia

Đề thi

Bài 1: Sử dụng khuôn hình hàm tìm giá trị lớn nhất của 1 mảng;

Bài 2: Nhập dữ liệu và các phương thúc của số phức , nhap , in, tính modull và sử
dụng toán tử operator < để so sánh số phức;
ham main; nhập 1 dãy số phức sau đó in ra số phức nhỏ nhất

Lời giải

Bài 1
Lời giải của bạn xuyenit55

#include<iostream>
using namespace std;
//
------------------------------------------------------------------
----------------------
// xay dung khuon hinh ham tim gia tri lon nhat cau mang
//----------------------------------------------------------------
-------------------------
template <typename T > T GTLN( T a[], int n){

int imax =0 ; // gan vi tri imax = 0;


for ( int i = 0 ; i < n ; i++){
if ( a[imax] < a [i] ){
imax = i;
}
}
return a[imax];
}
//
------------------------------------------------------------------
---------------------
// xay dung ham main
//----------------------------------------------------------------
--------------------

int main(){

int n, i;
cout<<" nhap so luong cua phan tu cua mang n = ";
cin>>n;
int *a = new int [n]; // cap phat dong mang a
// nhap mang a
for ( i = 0 ; i < n ; i++){

cout<< " a [ " << i << " ] = ";


cin>>a[i];
}
// xuat mang a

cout<<"\n Mang vua nhap la : \n";


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

cout<< a[i] << " " ;


}
cout<<" \ngia tri lon nhat cua mang a la : " << GTLN(
a,n) << endl;
// giai phong mang a
delete []a;
system (" pause");
return 0;
}

Bài 2
Lời giải của bạn xuyenit55

#include<iostream>
#include<math.h>
using namespace std;
//----------------------------------------------------------------
-------------------
// xay dung lop so phuc
//----------------------------------------------------------------
---------------------
class sophuc {

private :
int thuc;
int ao;
public :
sophuc(){
thuc = ao =0;
}
void input();
void output();
// tinh modull cua so phuc
float modull(){

return sqrt( pow ( thuc, 2) + pow (ao,


2));
}
// toan tu so sanh
int operator < ( sophuc );
};
//----------------------------------------------------------------
-------------------
// ham nhap
//----------------------------------------------------------------
----------------------
void sophuc::input(){

cout<< " nhap phan thuc = " ;


cin>>thuc;
cout<<" nhap phan ao = ";
cin>>ao;
}
//----------------------------------------------------------------
-----------------------
// ham in so phuc
//----------------------------------------------------------------
---------------------
void sophuc::output(){

if ( ao < 0 ) cout<< thuc << " - " << ao << " i " <<
endl;
else cout<< thuc << " + " << ao << " i " << endl;

}
//----------------------------------------------------------------
----------------------
// ham so sanh toan tu operator
//---------------------------------------------------------------
-------------------
int sophuc::operator <( sophuc x){
return ( modull() < x.modull() );

}
//----------------------------------------------------------------
---------------------------
// ham main
//----------------------------------------------------------------
--------------------------
int main(){

int i,n, imin=0;


sophuc *a= new sophuc [n];
cout<<" nhap so phan tu cua mang n = ";
cin>>n;
// nhap mang so phuc
for ( i = 0 ; i < n ; i++ ){
cout<<" nhap so phuc thu " << i +1 << endl;
a[i].input();

} // ham so sanh
for ( i = 0 ; i < n ; i++ ){
if ( a[i] < a[imin]){
imin= i;
}
}
cout<<" so phuc nho nhat cua mang la : " ;
a[imin].output();
system ("pause");
return 0;
}

Đại Học Đà Lạt

Đề thi

Bai 4:
- Các số 0 đầu mảng
- Các số âm ở giữa mảng và có thứ tự giảm.
- Các số dương cuối mảng và có thứ tự tăng.

Lời giải

Bài 4
Lời giải của kitti

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

void main()
{
int a[100], b[100];
int i , n, j, c1, c2;
int temp;

printf("Nhap so phan tu n=");


scanf("%d",&n);
c1 = 0; c2 = 0;
for (i=0; i < n; i++)
{
printf("\nNhap A[%d]: ", i);
scanf("%d", &temp);
if(temp > 0)
{
b[c2] = temp;
c2++;
}
else
{
a[c1] = temp;
c1++;
}
}

for (i = 0; i < c2 - 1; i++)


for (j = i + 1; j < c2; j++)
{
if(b[i] > b[j])
{
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}

for (i = 0; i < c1 - 1; i++)


for (j = i + 1; j < c1; j++)
{
if(a[i] < a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}

for (j=0; j < c1; j++)


{
printf("\n %d ", a[j]);
}

for (j=0; j < c2; j++)


{
printf("\n %d ", b[j]);
}

getch();
clrscr();
}
Đề thi Tin Dai cuong 2010 Đại học Bách Khoa Hà Nội

Đề thi

Tự luận
Thông tin về một cán bộ gồm: họ tên (không quá 25 ký tự), lương (là số thực).
Viết một chương trình nhập vào thông tin của một phòng gồm 15 cán bộ, sau đó
tìm và hiển thị ra màn hình họ tên những cán bộ có lương thấp nhất phòng, mỗi họ tên trên 1 dòng.
Gợi ý: khai báo cấu trúc và dùng mảng cấu trúc.

Lời giải

Lời giải của bạn kitti


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

typedef struct CanBo


{
char HoTen[26];
float luong;
}tt;
void nhap(tt ds[])
{
char hoten[26];
float t;
int i = 0;
do
{
printf("\nCan bo thu %d",i + 1);
printf("\nNhap ho ten: ");
gets(ds[i].HoTen);
fflush(stdin);
printf("\n Nhap Luong: ");scanf("%f",&t);
ds[i].luong = t;
fflush(stdin);
i++;
}while(i < 15);
}

void xuat(tt ds[])


{
printf("\n Danh sach Can Bo ");
for(int i = 0; i < 15; i++)
printf("\n%30s%9.2f ",ds[i].HoTen,ds[i].luong);
}

void sxep(tt ds[])


{
tt tg;
for(int i = 0; i < 15 - 1; i++)
for(int j= i+1; j < 15; j++)
if(ds[i].luong > ds[j].luong)
{
tg=ds[i];
ds[i]=ds[j];
ds[j]=tg;
}
}

int main()
{
clrscr();
tt ds[15];
nhap(ds);
sxep(ds);
xuat(ds);
getch();
return 0;
}

You might also like