Tổng hợp bài tập về lập trình C môn Kỹ thuật lập trình | Đại học Bách Khoa, Đại học Đà Nẵng
Tổng hợp bài tập về lập trình C môn Ki thuật lập trình | Đại học Bách Khoa, Đại học Đà Nẵng giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng, ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học
Preview text:
BÀI TẬP LẬP TRÌNH C
I. Lệnh gán, nhập xuất
1. Hoán đổi giá trị của 2 biến a, b cho nhau
2. Cho a, b là 2 giá trị kiểu unsigned char, lập trình tính giá trị các biểu
thức chứa phép toán trên bit: a&b, a|b, ~a, a>>3, b<<5
3. Cho biết kết qủa chương trình sau: #include "stdio.h" #include "conio.h" int main() { unsigned char a,b,c; a=0x5a; b=072; c=100; printf("\n\n c = %x",c);
printf("\n %d & %d = %d", a, b, a & b);
printf("\n %d | %d = %d", a, b, a | b);
printf("\n %d ^ %d = %d", a, b, a ^ b);
printf("\n !(%d & %d) = %d", a, b, !(a&b)); printf("\n ~%d = %d",a,~a);
printf("\n ~(%d & %d) = %d", a, b, ~(a&b));
printf("\n %d >> 3 = %d", a, a>>3);
printf("\n %d << 5 = %d", b, b<<5); return 0; }
4. Tính diện tích mặt cầu, thể tích hình cầu bán kính R
5. Tính chu kỳ dao động của con lắc chiều dài l
6. Tìm các góc của tam giác khi biết 3 cạnh (dùng hệ thức Cosin)
7. Nhập x, dùng các hàm chuẩn để tính y = (x5 - sina + e3 )/( bx+2 +1)
Trong đó: a = 2x –1; b=log x x 5(x3 + 4 ) + ln(5 )
II. Lệnh lựa chọn, rẽ nhánh
8. Tìm giá trị lớn nhất, nhỏ nhất của 3 số , 4 số
9. Giải phương trình bậc nhất: ax + b = 0
10. Giải phương trình bậc hai: ax2 + bx + c = 0 (a#0)
11. Nhập vào điểm 3 môn học: Toán, Tin, Lý. Tính điểm trung bình (ĐTB),
xếp loại (XL) và học bổng (HB), biết: 1 “Gioi” nếu ĐTB≥8
“Kha” nếu 7≤ĐTB<8 XL =
“Tbinh” nếu 5≤ĐTB<7 “ Yeu” nếu ĐTB<5 200 nếu DTB≥8 HB = 100 nếu 7≤ĐTB<8) 0 nếu ĐTB<7
12. Nhập vào 3 giá trị a, b, c. Kiểm tra a, b, c phải là: - 3 cạnh của tam giác?
- 3 cạnh của tam giác cân/ vuông/ vuông cân/ đều?
13. Tìm số ngày trong tháng
14. Cho ngày 24/12 là thứ tư. Hãy nhập vào một ngày bất kỳ trong tháng
12, hỏi ngày đó là thứ mấy?
15. Nhập x, tính y: (dùng lệnh if hoặc toán tử ?:) a. -1/2x3 (x>0) y = 3 x (x ) 0 b. -1/2x3 (x>0) y = x3 (-5 ex (x<=-5) III. Lệnh lặp
16. Viết thuật toán, chương trình tính: S1 = 1 + 22 + … + n2
S2 = 1 + 1/3 + 1/5 + … + 1/(2n-1) S3 = 1*2* …*n = n! S4 = 1! + 2! + … + n! 1 2 3 n 5 S =5+ + + + ...+ 2 * 3 3 * 4 4 * 5 n ( +) 1 * n ( + ) 2 6 S 1 = + 2 + 3 .. +. + n
S7 = 1! - 2! +3! - 4! + … n! 2 1*3*5* …*n (nếu n lẻ) S8 = n!! = 2*4*6*…*n (nếu n chẳn)
Với n l à số nguyên dương nhập vào
17. In ra màn hình các số từ 1 dến 100 trên 10 dòng như sau: 1 2 3 … 10 11 12 13 … 20 … … 91 92 93 … 100
18. In ra các số chẳn nhỏ hơn hoặc bằng 100 trên 10 dòng như sau: 2 4 6 … 10 12 14 16 … 20 … … 92 94 96 … 100
19. Tìm các phương án để có được 20.000 đồng từ các loại 1000, 2000 và 5000 đồng
20. Viết chương trình xuất ra các hình sau: a. * * * * * * * * * * * * * *
Hình chữ nhật m dòng * n cột * * * * * * * * * * * * * * b. * * *
Tam giác vuông cân cạnh n * * * * * * * c. * * * * * * * * *
Tam giác vuông cân cạnh n * d. * * * * * * * * *
Hình chữ nhật m dòng * n cột (rỗng) * * * * * * * * *
21. In ra các số nguyên tố nhỏ hơn hoặc bằng n
22. Cho biết dãy số Fibonanci như sau: 1 1 2 3 5 8 13 21 34 …
Hãy in ra màn hình dãy n số Fibonanci đầu tiên 3
23. Nhập vào một số nguyên dương, tính tổng các số của nó, đếm số chữ số
(ví dụ: 1234 -> tổng = 1+2+3+4 = 10, số chữ số = 4)
24. Tìm ước số chung lớn nhất, bội số chung nhỏ nhất của 2 số nguyên dương
25. Cho số thực a>0, tìm số tự nhiên n nhỏ nhất sao cho: S = 1 + 2 + … +n > a
26. Tính giá trị các hàm sau (không dùng hàm chuẩn)
S1 = ex 1 + x + x2/2! + … + xk/k! + …
S2 = sinx x – x3/3! + x5/5! – x7/7! + …
S3 = cosx 1 – x2/2! + x4/4! – x6/6 !+ …
27. Viết lệnh nhập vào giá trị cho biến x cho đến khi x>0 (cho phép nhập tối đa 5 lần) IV. Hàm
28. Định nghĩa các hàm sau: (dùng vòng lặp hoặc đệ quy)
a. Tính S3, S4, S5, S6 trong bài tập 16
b. Tính S1, S2, S3 trong bài tập 26
c. Tìm ước số chung lớn nhất của 2 số nguyên dương
d. Tìm số Fibonanci thứ n
e. Đếm số bit 1 của số nguyên dương n
29. Định nghĩa các hàm sau: (dùng tham số là con trỏ)
a. Tính S3, S4, S5, S6 trong bài tập 16
b. Hoán đổi giá trị của 2 biến a, b
c. Tim nghiệm phương trình bậc 2
30. Định nghĩa các hàm kiểm tra: (trả về 1 nếu đúng, ngược lại trả về 0)
a. Số nguyên tố (chỉ chia hết cho 1 và chính nó)
b. Số hoàn hảo (bằng tổng các ước số tự nhiên của nó ko kể chính nó, ví dụ 6=1+2+3)
c. Số hạnh phúc (có số chữ số là chẵn và tổng các chữ số nửa đầu
bằng tổng các chữ số nửa cuối, ví dụ 2516)
d. Số đối xứng ( ví dụ 62126)
e. Số Amstrong (có k chữ số, tổng luỹ thừa bậc k của các chữ số bằng
chính số đó, ví dụ 153 = 13+53+33 )
f. Số Mersen (là số nguyên tố được biểu diễn dưới dạng 2k-1 trong đó
k là số bit 1 liên tiếp khi đổi số đó sang số nhị phân và k cũng là số
nguyên tố, ví dụ 7=23-1=111, 31=25-1=11111)
31. Dùng các hàm đã định nghĩ
a trong bài tập 28, viết lệnh: a. Tính m! + n! b. Tính 1! + 2! + … + n! 4
c. Xuất ra dãy n số Fibonanci đầu tiên
32. Cho biết kết quả chương trình sau, giải thích #include "stdio.h" #include "conio.h" int a,b ; void ham1() { int a ; a=2; b=4; printf("\n %5d%5d\n",a,b); } void ham2() { int b ; a=1; b=2; printf("\n %5d%5d\n",a,b); } in tmain( ) { a=5; b=10; printf("\n %5d%5d\n",a,b);
ham1(); printf("\n %5d%5d\n",a,b);
ham2(); printf("\n %5d%5d\n",a,b); getch(); }
33. Cho biết kết quả chương trình sau, giải thích #include "stdio.h" #include "conio.h" int a,b ; void ham1() { int a, b; a=2; b=4; printf("\n %5d%5d\n",a,b); } void ham2() { a=1; b=2; printf("\n %5d%5d\n",a,b); } void main() { a=5; b=10; printf("\n %5d%5d\n",a,b); 5
ham1(); printf("\n %5d%5d\n",a,b);
ham2(); printf("\n %5d%5d\n",a,b); getch(); } V. Mảng 1 chiều
34. Nhập vào 1 dãy gồm n số nguyên (n≤10)
a. Tìm phần tử lớn nhất / nhỏ nhất
b. Tìm phần tử lớn nhất đầu tiên / cuối cùng (trả về giá trị và vị trí)
c. Tính tổng các phần tử lẻ/chẳn
d. Tính tổng của phần tử đầu, giữa và cuối
e. Đếm số phần tử không chia hết cho 5
f. Xuất dãy theo thứ tự giảm dần
g. Đảo dãy (giá trị của các phần tử bị đảo ngược)
h. Chuyển các phần tử lẻ sang trái, chẳn sang phải
35. Nhập vào 1 dãy gồm n số thực (n≤10)
a. Có bao nhiêu phần tử thuộc [x, y]
b. Tìm xem có phần tử x trong dãy không?
c. Xoá phần tử x đầu tiên trong dãy
d. Sắp dãy tăng dần, chèn phần tử z để có dãy tăng dần
36. Nhập vào 1 dãy gồm n số thực (5≤n≤10)
a. Xóa các phần tử nhỏ hơn x
b. Tính tổng các phần tử đứng trước phần tử lớn nhất cuối cùng
c. Tính tổng các phần tử đứng trước phần tử lẻ cuối cùng
d. Tính tổng các phần tử đứng sau phần tử nhỏ nhất đầu tiên
e. Tính r bằng phần tử nào có phần nguyên là số lẻ lớn nhất
37. Tạo dãy a gồm n phần tử nguyên lấy từ số nguyên p, mà a[i] là chữ số
thập phân thứ i của p, n là số chữ số của p. Ví dụ p=2308 thì mảng a có
a[0]=8, a[1]=0, a[2]= 3, a[3]=2 và n=4
38. Tương tự bài 37 nhưng a[i] là chữ số thập lục phân thứ i của p. Ví dụ
p=0X2CE thì mảng a có a[0]=14, a[1]=12, a[2]= 2 và n=3
39. Tương tự bài 37 nhưng a[i] là chữ số bát phân thứ i của p
40. Cho dãy a gồm m phần tử được sắp giảm dần và dãy b gồm n phần tử.
Hãy chèn các phần tử của dãy b vào dãy a để nhận được dãy a gồm m+n
phần tử cũng giảm dần
41. Nhập vào 2 dãy a, b gồm n số thực (n<=10)
a. Tính tổng phần tử lớn nhất của dãy a và của dãy b
b. Đếm số phần tử có giá trị lớn nhất/nhỏ nhất trong dãy b
c. Tạo dãy c gồm 2n phần tử được lấy từ 2 dãy a, b như sau:
- Phần tử thứ nhất của dãy c là phần t ử thứ nhất của dãy a 6
- Phần tử thứ hai của dãy c là phần tử thứ nhất của dãy b
- Phần tử thứ ba của dãy c là phần tử thứ hai của dãy a
- Phần tử thứ tư của dãy c là phần tử thứ hai của dãy b - … … … VI. Mảng 2 chiều
42. Nhập vào ma trận vuông cấp n
a. Tìm phần tử lớn nhất /nhỏ nhất
b. Tìm phần tử nhỏ nhất đầu tiên/cuối cùng (trả về giá trị và vị trí)
c. Tính tổng các phần tử trên đường chéo chính/chéo phụ
d. Tính tổng của dòng chứa phần tử nhỏ nhất
e. Kiểm tra ma trận đối xứng qua đường chéo chính/chéo phụ ?
f. Tính tổng dòng p, tổng cột q (p,q≤n)
43. Nhập vào ma trận vuông cấp n
a. Tính s bằng tổng các phần tử có chữ số cuối cùng là 7, nếu không s
là tổng các phần tử cột giữa của ma trận
b. Hoán đổi 2 dòng p và q cho nhau (p,q≤n)
c. Hoán đổi 2 cột p và q cho nhau (p,q≤n)
d. Chuyển phần tử lớn nhất của từng dòng lên đường chéo phụ
e. Chuyển phần tử nhỏ nhất của từng cột lên đường chéo chính
f. Tìm mảng 1 chiều x[n], mà x[i] =maxi + maxj (maxi l à phần tử lớn
nhất hàng, maxj là phần tử lớn nhất cột j, cột j ứng với phần tử nhỏ
nhất đầu tiên của hàng i ) 44. C o
h ma trận cấp mxn, viết các hàm thực hiện: a. Xóa dòng p b. Xoá cột q c. Xoá dòng p và cột q
d. Tìm mảng 1 chiều x[n], mà x[i] =maxi (maxi là phần tử lớn nhất cột i của ma trận )
45. Sử dụng các hàm ở bài tập 44 thực hiện:
a. Xóa dòng chứa phần tử lớn nhất của ma trận
b. Xoá cột chứa phần tử nhỏ nhất cuối cùng của ma trận
c. Xoá dòng và cột chứa phần tử nhỏ nhất đầu tiên của ma trận ---oﬡﬡﬡo--- 7 Th t
a các phép toán trong bi u th c: 1. Trong ngo c: ( ) [ ] 2. M t ngôi: -- ++ - & ~ ! 3. Nhân chia: * / % 4. C ng tr : + - 5. D ch trái, ph i: << >> 6. So sánh: < <= > >= 7. So sánh b ng, khác: == != 8. And trên bit: & 9. Xor trên bit: ^ 10. Or trên bit: | 11. And logic: && 12. Or logic: || 13. Toán t : ?: 14. Gán và gán k t h p:
|= ^= &= >>= <<= %= /= *= -= += =
Biểu thức 10<<5%3|6 được thực hiện theo trình tự như thế nào? a. 10<<((5%3)|6) b. ((10<<5)%3)|6 c. (10<<(5%3))|6 d. (10<<5)%(3|6) 8