kiem tien, kiem tien online, kiem tien truc tuyen, kiem tien tren mang
Sunday, October 16, 2011



Bài tập về nhà (CLB):

Chương 3:

Câu 1:
Nêu các kiểu dữ liệu cơ sở
Nêu các kiểu dữ liệu cho dạng  số và số byte của mỗi kiểu.
I.                 Các kiểu dữ liệu cơ sở:

Có 5 kiểu dữ liệu cơ sở:
1)      char            kiểu kí tự ( character)     ( 1 byte)
2)      int               kiểu số nguyên ( integer)
3)       float          kiểu số thực
4)      double      kiểu số thực có độ chính xác kép
5)      void           kiểu không có giá trị nào cả
II.               các kiểu dữ liệu cho dạng số:







Kiểu  nguyên
Phạm vi biểu diễn
Kích thước
int
-32768 -> 32  767
 2 byte
unsigned int
0 -> 65  535
2 byte
long [int]
-2  147  482  648 -> 2  147  483  647
4 byte
unsigned long [int]
0 ->  4  294  967 295
4 byte






Kiểu

Phạm vi biểu diễn
Số chữ số có nghĩa
Kích thước byte
float
3.4E-38 -> 3.4E+38
7 – 8
4 byte
double
1.7E-308 -> 1.7E+308
15 – 16
8 byte
long double
3.4E-4932 -> 1.1E4932
17-18
10 byte

Câu 2:
Viết họ tên, quê quán  theo bảng mã ASCII :

Ho….. ten:   72-11 …. 116-101-110
Que…quan: 81-117-101…. 113-117-97-110



Chương 4:

Câu 1: Nêu  cấp bậc của sự chỉnh kiểu dữ liệu số học ( ép kiểu)

1.      Sự hiệu chỉnh kiểu dữ liệu số học:
Trong một biểu thức, có thể tồn tại  nhiều toán hạng với kiểu số học khác nhau ( Số nguyên, số thực). Nguyên tắc máy sẽ chuyển kiểu đơn giản lên cao hơn để qui đổi kết quả.

Chiều cấp bậc tăng dần được sắp xếp theo dãy sau:

int -> long -> float -> double -> long double

Không thể có chiều chuyển đổi ngược lại. Nghĩa là một số thực double cũng không được đổi về kiểu float.

Không có kiểu char và short trong  dãy trên.
2.      Sự ưu tiên cho kiểu số:
CChúng ta biết rằng các phép tính số học không được định nghĩa cho kiểu char và short. C tự hiệu chỉnh  dữ liệu loại char và short xuất hiện  trong biểu thức thành kiểu int  trước khi tính toán . Đây là một sự hiệu chỉnh tự động.
3.      Sự chuyển đổi cho kiểu kí tự char:
Trong bảng mã ASCII , mỗi kí tự có 2 giá trị: bản thân kí tự và mã kí tự.
Ví dụ:
Kí tự  ‘A’ có mã là 65.
Vậy máy sẽ đem mã kí tự ra để tính toán.
Kết quả ‘A + 1’ = 66.

4.      Cố ý chuyển kiểu giá trị (typecast) hay ép kiểu:
C/C++ cho phép trộn lẫn các kiểu dữ liệu với nhau.
Đồng thời mỗi loại dữ liệu phản ứng khác nhau đối  với 1 phép toán. Vì vậy đôi lúc chúng ta cần cố ý ra lệnh cho máy chuyển đổi kiểu dữ liệu để nhận được kết quả mong muốn.



int i, m,n;

float x;

x = m/n; // Phep chia nay cho ket qua la phan nguyen cua phep chia

x = m/ float(n);

// phep chia nay cho ket qua la so thuc vi day la phep chia so nguyen cho so thuc



float(n) được gọi là typecast, nghĩa là  cưỡng ép chuyển kiểu dữ liệu của n thành kiểu float.


Ngoài ra ta cũng có thể viết (float ) n






Câu 2: Các hàm số học chuẩn ( dùng cho số nguyên và số thực)
Các hàm sau đây được định nghĩa sẵn và sử dụng với đối số là số thực hoặc các số nguyên.
Ta kí hiệu tham số nguyên là i, tham số thực là f. Các ham này nằm trong tệp
#include
Việc chuyển một số thực sang một số nguyên được thực hiện nhờ 2 hàm chuẩn:
Hàm làm tròn và hàm cắt.
Hàm cắt floor(x) cho ta một số nguyên là phần nguyên của x.
Ví dụ:
floor(3.146)
Hàm làm tròn ceil (x) cho ta một só nguyên x gần nhất và không nhỏ hơn x.




















Hàm
Kiểu giá trị nhận được
Tác dụng

abs(i)
int
Trả lại giá trị tuyệt đối của số nguyên i
fabs(d)

double
Trả lại giá trị tuyệt đối của số thực d.
sin(d)
double

Trả lại giá trị hàm sin
cos(d)
double
Trả lại giá trị hàm cos
cosh(d)
double
Trả lại giá trị hàm cosh
tan(d)
double
Trả lại giá trị hàm tan
exp(d)
double
Trả lại giá trị e mũ
log(d)
double
Trả lại giá trị logarit cơ số tự nhiên ln(d)
pow(d1, d2)
double
Trả lại giá trị d1 mũ d2
floor(d)
double
Hàm cắt tròn số
ceil(d)
double
Hàm làm tròn số
fmod(d1,d2)
double
Hàm phần dư của phép chia d1/d2

sqrt(d)
double
Hàm khai căn bậc 2
srand(d)
void
Khoi tao bộ tạo số ngẫu nhiên. Không có giá trị trả lại





2. Các phép tính theo bit (logic số học):

Ngoài  các phép tính số học ra, số nguyên còn được dùng với các phép tính theo bit như
NOT ( ^ )
AND (&)
OR ( |)
Các phép tính này liên quan đến cách biểu diễn nhị phân trong máy.

Số nhị phân là các số được biểu diễn bằng chữ số 0 và chữ số 1.
Mỗi chữ số biểu diễn một số nhị phân nào đó được gọi là bit ( Binary digit = chữ số nhị phân)
Tám bit hợp thành một byte.
Toán tử theo bit:






Toán tử
Ý nghĩa

&

Phép AND theo từng bit
|

Phép OR theo từng bit

^
Phép XOR  theo từng bit
~
Phép đảo bit


Phép toán logic XOR:
2 toán hạng giống nhau sẽ cho kết quả  là 0, hai toán hạng khác nhau cho kết quả là 1.
Phép tính XOR có rất nhiều ứng dụng: tạo mật mã, tạo con trỏ di chuyển trên màn hình đồ họa.

PHÉP TOÁN DỊCH SỐ HỌC   >>  VÀ   <<

Phép tính nhân một  số nguyên với một số lũy thừa của 2 có thể thực hiện một cách nhanh hơn nếu dùng >> ( Shift Right) và  << ( Shift Left).

Cách viết:

 I  << M  nghĩa là dịch sang trái  số nguyên I đi M bít, tương đương  với I*2^M

I >> M nghĩa là dịch sang phải số nguyên I đi M bít , tương đương với I/ 2^M

Đây là 2 phép toán đặc biệt hay được dùng khi xử lý số  nguyên để khai thác máy nhằm nâng cao  tốc độ tính toán.




//Bitwise.cpp
//{L}printBinary
//Demonstration of bit manipulation
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Display a byte in binary


#include
using namespace std;

void printBinary( const unsigned char val)
{
for( int i=7; i>= 0; i--)
if( val & (1<< i)) cout<< "1"; else cout<<"0"; } //A macro to save tying #define PR(STR,EXPR)\ cout<< STR; printBinary(EXPR); cout<>getval; a = getval;
PR(" a in binary:", a);

//...........................
cout<<"Enter a number between 0 and 255: "; cin>> getval; b = getval;
PR(" b in binary:", b);
//............................
PR(" a|b = ", a|b);
PR(" a&b = ", a&b);
PR(" a^b = ", a^b);
PR(" ~a = ", ~a);
PR(" ~b = ", ~b);

system("pause");
return 0;
}


Câu 3: Viết chương trình tính:
a)      z = E^( A + sin(x) – x)
b)       y = 2Ax – 4log(x)



// a) Viet chuong trinh tinh  z = E^ ( A + sin(x) - x)

#include"iostream"

#include"math"

using namespace std;



int main(){

double z;

int E, A;

float x;

cout<<" Input the value of variable :";

cout<<" \nEnter E = "; cin >> E;

cout<<" \nEnter A = "; cin >> A;

cout<<" \nEnter x = "; cin >> x;

z = pow( E, ( A + sin(x) - x));

cout<<" \nResult : \n";

cout<<" z = E^ ( A + sin(x) - x) = " << z<< endl;

system("pause");

return 0;

}

// b) Viet chuong trinh tinh  y = 2Ax - 4 log(x)

#include"iostream"

#include"math"

using namespace std;



int main(){

double y;

int A, x;

cout<<" Input the value of variable :";

cout<<" \nEnter A = "; cin >> A;

cout<<" \nEnter x = "; cin >> x;

y = 2*A*x - 4*(log(x)/log(10));

cout<<" \nResult : \n";

cout<<" y = 2Ax - 4 log(x)) = " << y << endl;

system("pause");

return 0;

}





Chương 5:  Vào / ra dữ liệu

 Thao tác trình bày hình thức in ra ( manipulator)
setw( do rong) 
setw là từ viết tắt của set width













setw( do_rong)


setprecision ( int n)

Qui định số chỗ  dành cho phần thập phân nếu  số in ra là số thực  và biểu diễn theo kiểu có dấu thập phân
setfill ( char c)
Lấp ( fill) các kí tự  c  vào những chỗ trống khi in ra với setw. Kí tự ngầm định là dấu cách.
dec

In ra số thập phân thông thường
hex
In ra  dạng hệ mười sáu, hexa

oct
In ra số hệ 8

ws()
Nhẩy qua, không in các ký tự các ký tự trắng  whitespace ( space, newline)

endl()
Xuống dòng mới ( new line) như ‘\n’

ends()
Cho kí tự null ‘\0’ ra luồng ra ( output stream). Điều này thường được dùng trong trường hợp luồng ra được định hướng sang hướng khác

flush()
Lùa hết dữ liệu trong bộ nhớ đệm (buffer) tới luồng ra.

setioflag()
Thiết lập cờ chuyển đổi tương ứng

resetiosflags()
Xóa cờ đã chọn











fixed
Để in ra số thực dạng bình thường có dấu chấm

sciencetific
Để in ra số thực dạng số mũ với E

left
Căn lề trái


right
Căn lề phải
showpos
Hiển thị dấu + của số dương














// example 5-1

#include"iostream"

#include"iomanip"

using namespace std;



int main()

{

cout<< 45 << -45 << endl;

cout<< setw(4) << setfill('0')

<< 45 << -45<< endl;

cout<< setw(4) << setfill('0') << 45

<< setw(4) << setfill('0') << -45<< endl;

cout<< setw(10) << 45 << -45<< endl;

cout<< setw(10)<< 45<< setw(10)<< -45<< endl;



cout<< setw(10) << setfill('0') << 45

<< setw(10) << setfill('0') << -45<< endl;



system("pause");

return 0;

}







//Example 5-2

#include"iostream"

#include"iomanip"

using namespace std;



int main()

{

int n =90;

cout<< "So " << n << " thap phan he tam la : " << oct << n << endl

<< " va so hexa la " << n << endl;



system("pause");

return 0;

}





 



#include"iostream"

#include"iomanip"

using namespace std;



int main()

{

float real;

real = 123.4567;

cout<< setiosflags( ios:: scientific) << real << endl;

cout<< setiosflags( ios:: fixed) << real;

system("pause");

return 0;

}







// Example 5-5

#include"iostream"

#include"iomanip"

using namespace std;



int main()

{

int i;

for( i =11; i<= 20; i++)

{

cout<< setw(4) << i << " ";

cout<< setw(2) << oct << i << " ";

cout<< setw(3) << setfill('0') << hex << i << endl;

cout<< dec << setfill(' '); // thiet lap ve dinh dang ban dau

}



system("pause");

return 0;

}




0 comments:

Post a Comment

domain, domain name, premium domain name for sales

Popular Posts