Bài tập Tin học Đại cương 1PHẦN I : DỮ LIỆU VÀ CHƯƠNG TRÌNH TÍNH TOÁN CÁC BIỂU THỨC 1... Hãy viết chương trình thực hiện các yêu cầu sau: + Nhập số liệu của 30 khối gỗ theo cạnh dài, c
Trang 1Bài tập Tin học Đại cương 1
PHẦN I : DỮ LIỆU VÀ CHƯƠNG TRÌNH
TÍNH TOÁN CÁC BIỂU THỨC
1 Viết chương trình nhập bán kính R và xuất ra màn hình thể tích V và diện tích S của hình cầu
(V = 4πR3/ 3 và S=4πR2)
* Thuật toán:
+ Có thể khai báo các biến : V,S,R
+ Nhập R từ bàn phím (dữ liệu nhập vào từ bàn phím)
printf("Dien tich hinh cau= %0.2f",s);
printf("\nThe tich hinh cau= %0.2f",v);
getch();
}
* Kết quả chạy demo
+ Vào R=2
+ Dien tich hinh cau la:50.27
Trang 144Bài tập Tin học Đại cương 144
Trang 145Bài tập Tin học Đại cương 145
Trang 146Bài tập Tin học Đại cương 146
Trang 147Bài tập Tin học Đại cương 147
BÀI TẬP LÀM THÊM
1 Giả sử ta có các khai báo sau:
int x, a[10]; register r; static int u;
Trong các biểu thức sau biểu thức nào hợp lệ ?
&x &a &a[10] &5 &(x+5) &x+5 &r u
2 Giả sử ta có các khai báo sau:
int x, a[10]; register r; static int u;
Trong các biểu thức sau biểu thức nào hợp lệ ?
&x *a *a[0] *5 *(x+5) &x+5 &r *&u
3 Giả sử có vòng lặp sau:
For (i=0; i<lim-1&&(c=getchar())!=’\n’&&c!=EOF;++i) s[i]=c;
Viết lại vòng lặp trên sao cho không cần đến các phép && và ||
4 Giả sử có vòng lặp sau:
For (i=100; i>n &&(c=getchar())!=’\n’&&c!=EOF;i ) s[i]=c;
Viết lại vòng lặp trên sao cho không cần đến các phép && và ||
5 Viết lại hàm strend(char *s, char *t) trả về giá trị 1 nếu dòng s là đoạn cuối của dòng t ( ví dụ t là “123” thì đoạn cuối của t là “”,”3”,”23”,”123”), và trả về giá trị 0 nếu ngược lại
6 Cho 2 hàm sau
int f(int x, int *y) int g(int x, int y)
if (x==0)= return *y if (x==0)= return y
x ; *y+=3; z=*y; x ; y+=2; z=f(x,&y);
Hãy cho biết g(3,3)
7 Cho 2 hàm sau
int f(int x, int *y) int g(int x, int y)
if (x==6)= return *y if (x==6)= return y
x ; *y+=2; z=*y; x ; y+=3; z=f(x,&y);
Hãy cho biết g(3,3)
8 Viết chương trình liệt kê tất cả các số nguyên bằng bình phương của tổng các chữ số của nó
Ví dụ: 81 = (8+1)2û
Nguyễn Văn Nguyên- Khoa CNTT-ĐTVT Đại học Bách Khoa Đà Nẵng
Trang 148Bài tập Tin học Đại cương 148
9 Cho hai dãy số A và B có các phần tử theo thứ tự giảm dần Hãy ghép mảng B vào mảng A cũng có phần tử giảm dần (không dùng mảng phụ) ì
10 Cho hai dãy số A và B có các phần tử theo thứ tự tăng dần Hãy ghép mảng B vào mảng A cũng có phần tử tăng dần (không dùng mảng phụ) ì
11 Viết hàm int InsCircle(double r, double x, double y) trả về giá trị đúng hợc sai tùy thuộc
điểm (x,y) có nằm trong vòng tròn tâm O(0,0) bán kính r hay không Sau đó sử dụng hàm này viết hàm double monte2(double r, int n) trả về giá trị diện tích hình tròn bán kính r được tính bằng phương pháp MonteCarlo với n điểm thử Giả sử đã tồn tại hàm double
range_rand(double min, double max) cho giá trị ngẫu nhiên trên đoạn [min,max]
Chú thích : Phương pháp Monte_Carlo với n điểm thử để tính diện tích hình tròn: Gieo ngẫu
nhiên n điểm trên hình vuông ngoại tiếp hình tròn đó, và đếm số điểm rơi vào bên trong hình tròn (giả sử là n1) Diện tích hình tròn được xấp xỉ bằng diện tích hình vuông nhân với tỉ số n1/n
12 Viết chương trình tính n! với n là số lớn
13 Viết chương trình tính 2nvới n là số lớn
14 Viết chương trình in ra bảng mã ASCII có số thú tự đi kèm : ví dụ A có mã 65
15 Viết chương trình in bảng cửu chương như ở bìa vở học sinh
16.Nhập một ma trận vuông A(n,n) ( với 5≤ n ≤ 10) kiểu nguyên Hãy tính P = S/P ( với S là tổng các phần tử trên đường chéo chính và R là tổng các tử lẻ trên đường chéo phụ, nếu không có phần tử lẻ thì R là tổng các phần tử trên đường chéo phụ), rồi đổi P ra hệ đếm bất kỳ.( cơ số của hệ đếm được nhập từ bàn phím)
17 Để quản lý xe máy, người ta quản lý các thông tin bao gồm: họ tên chủ xe (HT), địa chỉ (DC), số máy (SM), số khung (SK), biển kiểm soát(BKS)
Viết chương trình nhập một danh sách bao gồm các thông tin trên( tối đa 50 đối tượng)
Hiển thị danh sách vừa nhập
Nhập vào một số khung bất kỳ, hiển thị họ tên chủ xe có số khung trùng với số khung vừa nhập
18.Để quản lý các khối gỗ hình hộp chữ nhật, ta tổ chức một mảng các record, mỗi record gồm các trường : Cạnh dài (CD), Cạnh ngắn (CN), chiều cao(CC), Thể tích(TT), giá tiền (TIEN) Hãy viết chương trình thực hiện các yêu cầu sau:
+ Nhập số liệu của 30 khối gỗ (theo cạnh dài, cạnh ngắn,chiều cao)
+ Tính thể tích của từng khối gỗ theo công thức: TT=CD*CN*CC +Tính giá tiền của từng khối gỗ theo công thức: TIEN=TT*DG
Với đơn giá (DG) là giá tiền của 1m3 gỗ ( được nhập từ bàn phím)
Nguyễn Văn Nguyên- Khoa CNTT-ĐTVT Đại học Bách Khoa Đà Nẵng
Trang 149Bài tập Tin học Đại cương 149
+ In ra danh sách các khối gỗ đã nhập ( gồm STT( số thứ tự), TT,TIEN) theo chiều tăng dần của giá tiền
19 Hãy nhập một phân số rồi ước lược phân số
20 Tìm ước số chung lớn nhất của nhiều số
20 Hãy nhập nhiều phân số rồi thực hiện các phép cộng ,trừ, nhân, chia phân số
Nguyễn Văn Nguyên- Khoa CNTT-ĐTVT Đại học Bách Khoa Đà Nẵng
Trang 150Bài tập Tin học Đại cương 150
TÀI LIỆU THAM KHẢO
[1] Ngôn ngữ lập trình PASCAL - Quách Tuấn Ngọc
[2] Turbo PASCAL, cẩm nang tra cứu - Quách Tuấn Ngọc
[3] Tin học Đại cương - Phan Huy Khánh
[4] Turbo Pascal - Đỗ Ngọc Phương
[6] Bài tập tin học chọn lọc - Nguyễn Thanh Hùng
[8] Bài tập Turbo Pascal - Đỗ Phúc
[9] Bài tập Tin học - Hồ sỹ Đàm
[10] Các đề bài tập, các đề thi - Khoa CNTT- ĐTVT-ĐHKT-Đà nẵng
Nguyễn Văn Nguyên- Khoa CNTT-ĐTVT Đại học Bách Khoa Đà Nẵng
Trang 151Bài tập Tin học Đại cương 151
Pgup/PgDn : lªn/xuỉng mĩt trang
^Home/^End : vÒ ®Ìu/cuỉi cöa sư
Delete : xo¸ mĩt ký tù t¹i con trâ
BackSpace: xo¸ mĩt ký tù bªn tr¸i con trâ
^Y : xo¸ mĩt dßng chøa con trâ
^Q +Y : xo¸ tõ con trâ ®Õn cuỉi dßng
3 PhÝm vÒ khỉi:
Clipboard lµ vïng nhí ®Ó lưu khỉi v¨n b¶n t¹m thíi
^K+B/ ^K+K : ®¸nh dÍu ®Ìu/cuỉi khỉi Còng cê thÓ ®¸nh dÍu khỉi b»ng c¸ch gi÷ phÝm Shift vµ dïng phÝm di chuyÓn con trâ
^K+H : Ỉn/hiÖn khỉi
^Ins : ChÐp khỉi sang Clipboard
Shift+Del: C¾t khỉi sang Clipboard
Shift+Ins : D¸n khỉi ị Clipboard vµo t¹i con trâ
^K+ Y (^Del) : xo¸ khỉi
^K+C : sao chÐp khỉi tíi vÞ trÝ con trâ
^K+V : di chuyÓn khỉi tíi vÞ trÝ con trâ
^K+R : ®ôc tÖp trªn ®Üa vµo vÞ trÝ con trâ như mĩt khỉi
^K+W : ghi khỉi vµo tÖp trªn ®Üa
Trang 152Bài tập Tin học Đại cương 152
^L: t×m hoƯc t×m vµ thay tiÕp
5 Tư hîp phÝm Alt+BkSp ®Î bâ qua 1 thao t¸c so¹n th¶o gÌn nhÍt
II Các lỗi thường gặp khi lập trình
" " expected ThiÕu " "
Ambiguity between 'function1' and
'function2'
NhÌm lĨn gi÷a c¸c hµm
Array bounds missing ] ThiÕu dÍu "[" trong chØ sỉ m¶ng
Array must have at least one
element
M¶ng ph¶i cê Ýt nhÍt mĩt phÌn tö
Array of references is not allowed Kh«ng cho phÐp khai b¸o m¶ng tham chiÕu
Array size too large KÝch th−íc m¶ng qu¸ lín
Assembler statement too long LÖnh Hîp ng÷ qu¸ dµi
Attempting to return a reference to
a local object
Tr¶ vÒ mĩt tham chiÕu chØ ®Õn mĩt ®ỉi t−îng côc bĩ
Attempting to return a reference to
local variable 'identifier'
Tr¶ vÒ mĩt tham chiÕu chØ ®Õn mĩt biÕn côc
bĩ Bad define directive syntax Sai có ph¸p trong ®Þnh h−íng #define
Bad syntax for pure function
definition
§Þnh nghÜa hµm sai có ph¸p
Bit field cannot be static Tr−íng bit kh«ng thÓ thuĩc líp static
Bit field too large Tr−íng bit qu¸ lín
Bit fields must be signed or
unsigned int Tr−íng bit ph¶i lµ kiÓu int cê dÍu hoƯc
kh«ng dÍu Bit fields must contain at least one
bit
Tr−íng bit ph¶i cê Ýt nhÍt 1 bit
Bit fields must have integral type Tr−íng bit ph¶i thuĩc kiÓu nguyªn
Body already defined for this
Cannot cast from 'type1' to 'type2' Kh«ng thÓ Ðp kiÓu nµy thµnh kiÓu kia
Cannot convert 'type1' to 'type2' Kh«ng thÓ chuyÓn kiÓu nµy thµnh kiÓu kia
Cannot define a pointer or
reference to a reference
Kh«ng thÓ ®Þnh nghÜa mĩt con trâ hoƯc mĩt tham chiÕu chØ ®Õn mĩt tham chiÕu
Cannot initialize 'type1' with 'type2' Kh«ng thÓ khịi tao kiÓu nµy víi kiÓu kia
Cannot modify a const object Kh«ng thÓ thay ®ưi mĩt ®ỉi t−îng h»ng
Case outside of switch C¸c chØ ®Þnh case ngoµi lÖnh switch
Case statement missing : ThiÕu ":" trong chØ ®Þnh case
Character constant must be one or H»ng ký tù ph¶i dµi 1 hoƯc 2 ký tù
Nguyễn Văn Nguyên- Khoa CNTT-ĐTVT Đại học Bách Khoa Đà Nẵng
Trang 153Bài tập Tin học Đại cương 153
two characters long
Compound statement missing } LÖnh phøc hîp thiÕu "}"
Conflicting type modifiers NhÌm lĨn trong thay ®ưi kiÓu
Constant expression required CÌn mĩt biÓu thøc h»ng
Constant variable 'variable' must be
initialized
BiÕn h»ng ph¶i ®−îc khịi t¹o
Conversion of near pointer not
allowed
Kh«ng cho phÐp chuyÓn ®ưi con trâ gÌn
Could not find a match for
argument(s)
Kh«ng t×m thÍy sù phï hîp cho ®ỉi sỉ
Could not find file 'filename' Kh«ng t×m thÍy tÖp
Declaration does not specify a tag
or an identifier
Khai b¸o kh«ng chØ ®Þnh mĩt nh·n tªn hoƯc mĩt tªn
Declaration is not allowed here Kh«ng cho phÐp khai b¸o ị ®©y
Declaration missing ; Khai b¸o thiÕu ";"
Declaration syntax error Sai có ph¸p khai b¸o
Declaration terminated incorrectly KÕt thóc khai b¸o kh«ng ®óng
Declaration was expected ThiÕu khai b¸o
Default argument value redeclared Gi¸ trÞ ®ỉi sỉ mƯc ®Þnh bÞ khai b¸o l¹i
Default argument value redeclared
for parameter 'parameter'
Gi¸ trÞ ®ỉi sỉ mƯc ®Þnh bÞ khai b¸o l¹i cho tham sỉ
Default expression may not use
local variables
BiÓu thøc mƯc ®Þnh kh«ng thÓ dïng biÕn côc
bĩ Default outside of switch ChØ ®Þnh default bªn ngoµi lÖnh switch
Default value missing G¸i trÞ default bÞ bâ qua
Default value missing following
parameter 'parameter' G¸i trÞ default bÞ bâ qua sau tham sỉ
Define directive needs an identifier #define cÌn mĩt tªn
do statement must have while LÖnh do ph¶i cê while
do-while statement missing ( | ) | ; LÖnh do-while thiÕu "(" , ")" , ";"
Enum syntax error Sai có ph¸p trong khai b¸o kiÓu enum
Expression expected ThiÕu biÓu thøc
Expression of scalar type expected ThiÕu biÓu thøc kiÓu v« h−íng
Expression syntax VÒ có ph¸p biÓu thøc
extern variable cannot be initialized Kh«ng thÓ khịi t¹o biÕn thuĩc líp extern
Extra parameter in call Thªm tham sỉ trong lÖnh gôi
Extra parameter in call to function Thªm tham sỉ trong lÖnh gôi hµm
File must contain at least one
external declaration
TÖp ph¶i chøa Ýt nhÍt mĩt khai b¸o bªn ngoµi (líp extern)
File name too long Tªn tÖp qu¸ dµi
For statement missing ( | ) | ; LÖnh for thiÕu "(" , ")" , ";"
'function' cannot return a value Hµm nµy kh«ng thÓ tr¶ vÒ mĩt gi¸ trÞ
'function' must be declared with no |
one | two parameter(s)
Hµm nµy ph¶i ®−îc khai b¸o kh«ng| mĩt | hai tham sỉ
Nguyễn Văn Nguyên- Khoa CNTT-ĐTVT Đại học Bách Khoa Đà Nẵng
Trang 154Bài tập Tin học Đại cương 154
'function1' cannot be distinguished
from 'function2'
Hµm nµy kh«ng thÓ ph©n biÖt víi hµm kia
Function 'function' cannot be static Hµm nµy kh«ng thÓ thuĩc líp static
Function 'function' should have a
prototype
Hµm nµy ph¶i cê nguyªn mĨu
Function call missing ) Gôi hµm thiÕu ")"
Function calls not supported Kh«ng cung cÍp c¸c lÖnh gôi hµm
Function definition cannot be a
typedef'ed declaration
§Þnh nghÜa hµm kh«ng thÓ lµ mĩt khai b¸o kiÓu
Function should return a value Hµm ph¶i tr¶ vÒ mĩt gi¸ trÞ
Functions may not be part of a
struct or union Hµm kh«ng thÓ lµ mĩt phÌn cña struct hay
union
Global anonymous union not static Mĩt union toµn côc kh«ng tªn kh«ng thÓ
thuĩc líp static 'identifier' cannot be declared in an
'identifier' is not a member of struct Tªn nµy kh«ng lµ thµnh phÌn cña struct
'identifier' is not a non-static
member and can't be initialized here
Tªn nµy kh«ng lµ thµnh phÌn ®ĩng vµ kh«ng ®−îc khịi t¹o ị ®©y
'identifier' is not a parameter Tªn nµy kh«ng ph¶i lµ mĩt tham sỉ
'identifier' must be a previously
defined enumeration tag
Tªn nµy ph¶i lµ mĩt nh·n tªn cña kiÓu
enum ®· ®−îc ®Þnh nghÜa tr−íc
'identifier' specifies multiple or
duplicate access
Tªn nµy bÞ lƯp trong chØ ®Þnh hoƯc truy cỊp
Identifier expected ThiÕu tªn
If statement missing ( | ) C©u lÖnh if thiÕu "(" , ")"
Illegal character 'character'
(0x'value')
Ký tù nµy bÍt hîp lÖ
Illegal initialization Khịi t¹o bÍt hîp lÖ
Illegal octal digit Ch÷ sỉ b¸t ph©n bÍt hîp lÖ
Illegal pointer subtraction Trõ con trâ bÍt hîp lÖ
Illegal structure operation BÍt hîp lÖ trong thao t¸c kiÓu struct
Illegal to take address of bit field LÍy ®Þa chØ cña tr−íng bit lµ bÍt hîp lÖ
Illegal use of floating point Dïng sỉ thùc bÍt hîp lÖ
Illegal use of pointer Dïng con trâ bÍt hîp lÖ
Implicit conversion of 'type1' to
'type2' not allowed
Kh«ng cho phÐp chuyÓn kiÓu kh«ng rđ rµng
Improper use of typedef 'identifier' Dïng ®Þnh nghÜa kiÓu typedef kh«ng ®óng Incompatible type conversion ViÖc chuyÓn kiÓu kh«ng t−¬ng thÝch
Incorrect configuration file option Chôn cÍu h×nh tÖp bÞ sai
Incorrect number format Sai d¹ng thøc sỉ
Incorrect use of default Sai trong c¸ch dïng default
Invalid combination of opcode and
operands
ViÖc kÕt hîp lÖnh vµ c¸c to¸n h¹ng bÍt hîp
lý Nguyễn Văn Nguyên- Khoa CNTT-ĐTVT Đại học Bách Khoa Đà Nẵng
Trang 155Bài tập Tin học Đại cương 155
Invalid macro argument separator ViÖc t¸ch c¸c ®ỉi sỉ cña macro bÍt hîp lý Invalid pointer addition Cĩng con trâ bÍt hîp lý
Invalid register combination Tư hîp thanh ghi bÍt hîp lý (nh− BP+BX) Invalid use of dot Dïng ký tù chÍm bÍt hîp lý
Last parameter of 'operator' must
have type 'int'
Tham sỉ cuỉi cïng cña to¸n tö ph¶i thuĩc kiÓu int
Lvalue required CÌn mĩt lvalue kh¶ biÕn
Macro argument syntax error Sai có ph¸p trong ®ỉi sỉ cña macro
Macro expansion too long ViÖc bung macro qu¸ dµi
main must have a return type of int Hµm main() ph¶i tr¶ vÒ kiÓu int
Memory reference expected ThiÕu tham chiÕu bĩ nhí
Misplaced break §Ưt tõ kho¸ break sai chì
Misplaced continue §Ưt tõ kho¸ continue sai chì
Misplaced decimal point §Ưt dÍu chÍm thỊp ph©n sai chì
Misplaced else §Ưt tõ kho¸ else bÞ sai chì
Multiple declaration for 'identifier' Khai b¸o tªn bÞ lƯp
Must take address of a memory
location
Ph¶i lÍy ®Þa chØ trong bĩ nhí
Need an identifer to declare CÌn mĩt tªn ®Ó khai b¸o
No : following the ? ThiÕu dÍu ":" sau to¸n tö "?"
No file name ending Kh«ng kÕt thóc tªn tÖp
No file names given Kh«ng cho c¸c tªn tÖp
No type information ThiÕu th«ng tin vÒ kiÓu
Nonportable pointer conversion ViÖc chuyÓn kiÓu con trâ bÍt dÞch
Not a valid expression format type Kh«ng ph¶i mĩt kiÓu biÓu thøc hîp lÖ
Not an allowed type Kh«ng ph¶i mĩt kiÓu cho phÐp
Numeric constant too large H»ng sỉ qu¸ lín
Objects of type 'type' cannot be
initialized with { }
C¸c ®ỉi t−îng kiÓu nµy kh«ng thÓ khịi t¹o víi { }
operator -> must return a pointer or
a class To¸n tö -> ph¶i tr¶ vÒ mĩt con trâ hoƯc mĩt
líp operator [] missing ] To¸n tö [ ] thiÕu ]
Parameter names are used only
with a function body
C¸c tªn tham sỉ chØ ®−îc dïng trong th©n hµm
Parameter 'number' missing name ThiÕu tªn tham sỉ
Pointer to structure required on left
side of -> or ->* Con trâ chØ ®Õn struct ph¶i ị bªn tr¸i ->
hoƯc ->*
Reference initialized with 'type1',
needs lvalue of type 'type2' Khịi t¹o tham chiÕu víi kiÓu nµy cÌn lvalue
kiÓu kia Reference variable 'variable' must
be initialized
BiÕn tham chiÕu ph¶i ®−îc khịi t¹o
Repeat count needs an lvalue §Õm vßng lƯp cÌn mĩt lvalue
sizeof may not be applied to a bit
tr−íng bit sizeof may not be applied to a Kh«ng thÓ ¸p dông to¸n tö sizeof vµo mĩt
Nguyễn Văn Nguyên- Khoa CNTT-ĐTVT Đại học Bách Khoa Đà Nẵng