Tải bản đầy đủ (.docx) (46 trang)

Bài Tập Môn Lập Trình C Căn Bản đến Nâng Cao

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (226.1 KB, 46 trang )

NHẬP MÔN LẬP TRÌNH C
Phân bổ thời gian thực hành (12 tuần, 5 tiết/tuần)
 Tuần 01-02:
Chương 1. Các thành phần cơ bản của Ngôn ngữ C
Chương 2. Nhập xuất dữ liệu và Khai thác các thư viện của C
 Tuần 03-04-05:
Chương 3. Các câu lệnh có cấu trúc
 Tuần 06-07-08:
Kiểm tra giữa kỳ
Chương 4. Hàm
 Tuần 09-10-11:
Chương 5. Mảng và Chuỗi
 Tuần 12:
Ôn tập, bài tập tổng hợp và kiểm tra cuối kỳ.
Một số lưu ý hỗ trợ phần thực hành Nhập môn Lập trình C
1. Khai báo biến - Cú pháp
<kiểu dữ liệu> <tên biến>;
<kiểu dữ liệu> <tên biến 1>, <tên biến 2>;
2. Hằng số - Cú pháp khai báo
#define <tênhằng> <giá trị>
hoặc const <kiểu dữ liệu> <tênhằng> = <giá trị>;
3. Biểu thức (Expression)
4. Toán tử
Toán tử gán
<biến> = <giá trị>; <biến> = <biến>; <biến> = <biểu thức>;
Toán tử 1 ngôi
Chỉ có một toán hạng trong biểu thức.
++ (tăng 1 đơn vị), -- (giảm 1 đơn vị)
Các toán tử quan hệ
Cho ra kết quả 0 (hay false nếu sai) hoặc 1 (hay true nếu đúng)
==, >, <, >=, <, <=, !=


Các toán tử luận lý
Tổ hợp nhiều biểu thức quan hệ với nhau. Toán tử: && (and), || (or), ! (not)
Toán tử điều kiện
<biểu thức 1> ? <biểu thức 2> : <biểu thức 3>. Trong đó <biểu thức 1> đúng thì giá trị là
<biểu thức 2>.<biểu thức 1> sai thì giá trị là <biểu thức 3>.
Toán tử phẩy
Các biểu thức đặt cách nhau bằng dấu , Các biểu thức con lần lượt được tính từ trái sang
phải. Biểu thức mới nhận được là giá trị của biểu thức bên phải cùng.
Ví dụ: x = (a++, b = b + 2);  a++; b = b + 2; x = b;
Độ ưu tiên của các toán tử
Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

1


Toán tử

Độ ưu tiên

() [] -> .
! ++ -- - + * (cast) & sizeof
* / %
+ << >>
< <= > >=
== !=
&
|
^
&&
||

?:
= += -= *= /= %= &= …
,

















5. Cấu trúc chương trình C đơn giản
#include “…”; // Khai báo file tiêu đề, thư viện
int x;
// Khai báo biến hàm
void Nhap();
// Khai báo hàm
void main()
// Hàm chính
{
// Các lệnh và thủ tục

}
void Nhap()
{
// Định nghĩa hàm
}

Note for students:
Conversion specifier
Integers
%d
%i
%o
%u
%x or %X
%h or %l

Description
Read an optionally signed decimal integer.
Read an optionally signed decimal, octal, or hexadecimal integer.
Read an octal integer.
Read an unsigned decimal integer.
Read a hexadecimal integer.
Place before any of the integer conversion specifiers to indicate that
a short or long integer is to be input.

Floating-point numbers
%e, %E, %f, %g or %G Read a floating-point value.
%l or %L
Place before any of the floating-point conversion specifiers to
Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh


2


indicate that a double or long double value is to be input.
Characters and strings
Read a character. The corresponding argument is a pointer to char,
no null (‘\0’) is added.
Read a string. The corresponding argument is a pointer to an array
of type char that is large enough to hold the string and a terminating
null (‘\0’) character.

%c
%s

Syntax of printf function is:
printf (“format string”, argument list);
Syntax of scanf function is:
scanf (“format string”, argument list); // toán tử &







%d
%6d
%f
%4f

%.4f
%3.2f

(print as a decimal integer)
(print as a decimal integer with a width of at least 6 wide)
(print as a floating point)
(print as a floating point with a width of at least 4 wide)
(print as a floating point with a precision of four characters after the decimal point)
(print as a floating point at least 3 wide and a precision of 2)

4 basic data types: int, char, float, double








There are 5 modifiers available in C language. They are,
short
long
signed
unsigned
long long

S.No

Storage size
Byte(s)


C Data types

Range

1

char

1

–127 to 127

2

int

2

–32,767 to 32,767

3

float

4

1E–37 to 1E+37 with six digits of precision

4


double

8

1E–37 to 1E+37 with ten digits of precision

5

long double

10

1E–37 to 1E+37 with ten digits of precision

6

long int

4

–2,147,483,647 to 2,147,483,647

7

short int

2

–32,767 to 32,767


8

unsigned short int

2

0 to 65,535

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

3


9

signed short int

2

–32,767 to 32,767

10

long long int

8

–(2^63 –1) to 2^63 –1


11

signed long int

4

–2,147,483,647 to 2,147,483,647

12

unsigned long int

4

0 to 4,294,967,295

unsigned long long int

8

2^64 –1

13
Lưu ý:



Tất cả các bài tập lưu trong thư mục: T:\MaSV_HoTen\TuanXX\ trong đó XX sẽ là 01 → 12
Cuối mỗi buổi thực hành, SV phải nén (.rar hoặc .zip) thư mục làm bài và nộp lại bài tập đã
thực hiện trong buổi đó.


Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

4


BÀI TẬP THỰC HÀNH TUẦN 01-02
Mục tiêu:
 Trình bày được các thành phần cơ bản của ngôn ngữ C
 Trình bày được cách khai báo biến
 Vận dụng được cách chuyển đổi các kiểu dữ liệu
 Viết chương trình cơ bản với các hàm trong thư viện
 Khai thác hiệu quả các thư viện có sẵn của C
Bài 1: Hãy cho biết các danh định sau đây có hợp lệ không. Với các danh định hơp lệ hãy cho biết đó
có phải là một tên gợi nhớ không. Một tên gợi nhớ là một tên mà bản thân nó nói lên phần nào mục
đích sử dụng đối với tên này.. Với các danh định không hợp lệ hãy cho biết tại sao không hợp lệ:
1m234
do
a2b3c4d5

new_price
next
c1

abcd
invoices
x8

A123
1A2345

dem_so_lan_lap_lai int

so_lan
new

Bài 2: Cho biết các tên biến sau đây có hợp lệ không. Với các tên biến không hợp lệ hãy cho biết tại
sau:
prod_a
c1234
abcd
-c3
12345
newbal
while
$total
new bal
a1b2
9ab6
sum.of
grade1
2grade
next
Bài 3: Thử đặt tên cho các hàm thực hiện những công việc sau:
a. Tìm giá trị lớn nhất trong một tập hợp các số
b. Tìm giá trị nhỏ nhất trong một tập hợp các số
c. Biến đổi một ký tự thường sang ký tự hoa
d. Biến đổi một ký tự hoa sang ký tự thường
e. Sắp xếp tập hợp các số theo thứ tự tăng dần
Bài 4: Dùng printf viết một chương trình in tên của mình lên một dòng trên màn hình, số nhà, tên
đường của nhà mình trên dòng kế tiếp

Bài 5:
a. Hãy cho biết phải dùng bao nhiêu lệnh printf để in mẫu sau lên màn hình:

Mã HH
Đơn giá
T1276
$6.34
T1300
$8.92
T2041
$65.40
T4482
$36.99
b. Số lệnh printf tối thiểu dùng để in mẫu trên là bao nhiêu.
c. Viết chương trình để in mẫu trên lên màn hình.
Bài 6: Viết chương trình nhập vào 2 số nguyên a, b. Tính tổng, hiệu, tích, thương của
Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

5


2 số trên và in kết quả ra màn hình.
Bài 7: Viết chương trình cho phép nhập vào một số đo nhiệt độ theo độ Fahrenheit và xuất ra nhiệt độ
tương đương của nó theo độ Celsius, sử dụng công thức chuyển đổi:
C = (5/9)(F –32).
Bài 8: Viết chương trình nhập vào 4 số nguyên a, b, c, d. Tính giá trị trung bình cộng của 4 số
trên và in kết quả ra màn hình.
Bài 9: Viết chương trình nhập vào giờ phút và giây, đổi ra giây và xuất kết quả ra màn hình.
Bài 10:
Chọn loại dữ liệu thích hợp cho các giá trị sau:

a. Điểm trung bình của bốn môn học
b. Số ngày trong một tháng
c. Chiều dài của một cây cầu
d. Khoảng cách từ một điểm này sang điểm khác
Bài 11:





Từ các biểu thức đại số bên dưới hãy viết lại những biểu thức hợp trong C/C++

4.5
12.2 − 3.1
6 + 18
2

(2)(3)+(4)(5)
4.6(3+19.9)
(12.1+18.9)(15.3-3.8)

Bài 12:
Hãy viết lệnh khai báo cho các biến như sau:
a. count dùng để lưu một số nguyên
b. grade dùng để lưu một số thực độ chính xác đơn
c. yield dùng để lưu một số thực độ chính xác kép
d. initial dùng để lưu một ký tự
e. numt, num2, num3 dùng để lưu số nguyên
f. grade1, grade2, grade3 dùng để lưu số thực độ chính xác đơn
Bài 13:

Cho biết ý nghĩa của từng lệnh trong chương trình sau:
#include <stdio.h>
int main()
{ int num1, num2, total;
num1=25;
num2=35;
total=num1+num2;
printf(“The total of %3d and %3d is %5d \n”, num1, num2, total);
return 0;
}
Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

6


Bài 14:
Viết chương trình lưu tổng của hai số nguyên 12 và 33 vào một biến có tên là sum sau đó
in giá trị của biến sum lên màn hình.
Bài 15:
Viết chương trình lưu giá trị 15 vào biến length và 7 vào biến width, sau đó lưu kết quả
của biểu thức : length*width/2 vào biến area sau đó xuất giá trị của area lên màn hình
Bài 16:
Viết chương trình lưu giá trị 105.62 vào biến mum1, 89.352 vào biến num2 và 98.67 vào
biến num3. Sau đó tính tổng và trị trung bình của 3 biến trên với tổng được lưu vào biến total và trị
trung bình lưu vào biến average. Xuất kết quả của total và average.
Bài 17:
Tìm và sửa lỗi trong các chương trình
a. #include <stdio.h>
int main()
{

width = 15;
area = length * width;
printf(“ area= %d”, area)
return 0;
}
b.
int main()
{ int length, width, area;
area = length * width;
width = 15;
length = 20;
printf(“ area= %d”, area)
return 0;
}
c. #include <iostream.h>
int main()
{ int length=15, width=20, area;
length * width= area;
printf(“ area= %d”, area)
return 0;
}
Bài 18:
Viết chương trình tính và xuất kết quả lên màn hình trị trung bình của các số 32.6 , 55.2,
67.9 và 48.6.
Bài 19:
Viết chương trình nhập dữ liệu cho các biến kiểu int, long int, float, chuỗi, sau đó hiển thị
ra màn hình.
Tham khảo
#include <stdio.h>
void main()

{
int a;
long int b;

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

7


float x;
char st[10];
printf("\n Nhap du lieu tu ban phim ");
printf("\n a = "); scanf("%d", &a);
printf("\n b = "); scanf("%ld", &b);
printf("\n x = "); scanf("%f", &x);
printf("\n Nhap vao mot chuoi :"); scanf("%s", st);
printf("\n a :%10d\n b :%10ld\n x :%10.2f", a, b, x);
printf("\n Chuoi da nhap :%s", st);
}

Bài 20:
Tham khảo

Chương trình minh họa việc khai báo và khởi tạo (gán) các biến.

#include<stdio.h>
void main()
{
int a = 20; /* Khai bao va khoi tao cac bien */
int b = 15;

float x = 25.678;
printf("\n1:%d %f\n", a, x);
printf("2:%4d %10f\n", b, x);
printf("3:%2d %3f\n", a, x);
printf("4:%10.3f %10d\n", x, b);
printf("5:%-5d %f\n", a, x);
printf("6:%*d\n", b, b);
printf("7:%*.*f\n", 12, 5, x);
printf("8:%x :%8x :\n", a, a);
printf("9:%o :%8o :\n", a, a);
}

Bài 21:
Viết chương trình tính chu vi của một hình tròn (cv= 2*bk*3.14) giả sử bán kính của
đường tròn là 3.3 cm.
Bài 22:
Viết chương trình tính diện tích của một hình tròn (dt= bk*bk*3.14) giả sử bán kính của
đường tròn là 5 cm.
Bài 23:
Viết chương trình tính thể tích của một cái hồ có chiều dài là 2.5m chiệu rộng 1m và
chiều cao là 4m (thể tích=dài * rộng * cao).
Bài 24:
Viết chương trình tính độ dài của một quảng đường theo đơn vị là feet. Biết quảng đường
dài 2.36 mile (1 mile=5280 feet)
Bài 25:

Hãy cho biết tại sao biểu thức a-b=25; thì không hợp lệ, nhưng a-(b=25); thì hợp lệ.

Bài 26:
Viết lời gọi hàm để tính các giá trị sau:

ví dụ: Căn bậc 2 của 6.37
thì lời gọi hàm là sqrt(6,37)
a. căn bậc 2 của x-y
Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

8


b.
c.
d.
e.

sin của góc 30 độ
sin của góc 60 độ
trị tuyệt đối của a2-b2
Giá trị của e3

Bài 27:
Viết chương trình tính khoảng cách giữa 2 điểm có tọa độ (7,12) và (3,9) biết công thức
để tính khoảng cách giữa hai điểm có tọa độ (x1,y1) và (x2,y2) là:

[ x1 − x2] 2 + [ y 2 − y 2] 2

distance=
Bài 28:
Viết chương trình tính và in kết quả diện tích của một hình tròn lên màn hình với bán
kình được nhập từ bàn phím.
Bài 29:
Viết chương trình tính và in kết quả diện tích của một căn phòng hình chữ nhật lên màn

hình với chiều dài và chiều rộng của căn phòng được nhập từ bàn phím.
Bài 30:
Viết chương trình tính và in kết quả thể tích của một hồ bơi lên màn hình với chiều dài,
chiều rộng và độ sâu của căn phòng được nhập từ bàn phím.
Bài 31:
Viết chương trình nhập vào 4 số nguyên sau đó in lên màn hình trị trung bình của bốn số
nguyên vừa nhập.
Bài 32:

Cho biết kết quả của chương trình sau:

#include <stdio.h>
void main()
{
int a = 10, b = 5, c = 10, d;
printf("\n Minh hoa phep toan tang giam \n");
d = a == (b = c);
printf(" A :a =%d b =%d c =%d d =%d\n", a, b, c, d);
a = b = c = 5;
a += b += c;
printf(" B :a =%d b =%d c =%d \n", a, b, c);
c = aprintf(" C :a =%d b =%d c =%d \n", a, b, c);
c = a>b ? a++ : b++;
printf(" D :a =%d b =%d c =%d \n", a, b, c);
}

Bài 33:

Cho biết kết quả của chương trình sau:


#include<stdio.h>
void main()
{
int a, b, c;
printf(" \n Chuong trinh minh hoa toan tu logic \n ");
a = 5; b = 2; /* Truong hop 1 */

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

9


c = (a++ >b) || (b++ != 3);
printf("A : a = %d b = %d c = %d\n", a, b, c);
a = 5; b = 2; /* Truong hop 2 */
printf(" B : a = %d b = %d c = %d\n", a, b, c);
a = 5; b = 2; /* Truong hop 3 */
c = (++a == 3) && (++b == 3);
printf(" C : a = %d b = %d c = %d\n", a, b, c);
a = 5; b = 2; /* Truong hop 4 */
c = (++a == 6) && (++b == 3);
printf(" D : a = %d b = %d c = %d\n", a, b, c);
}

Bài 34:
Tham khảo

Viết chương trình tìm số lớn nhất và nhỏ nhất trong 3 số thực.


#include <stdio.h>
void main()
{
float x, y, z, max, min;
printf("\nNhap vao 3 so ");
scanf("%f%f%f", &x, &y, &z);
max = (x>y) ? x : y;
max = (max>z) ? max : z;
min = (x>y) ? y : x;
min = (min>z) ? z : min;
printf("\nSo lon nhat la %f", max);
printf("\nSo nho nhat la %f", min);
}

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

10


BÀI TẬP THỰC HÀNH TUẦN 03-04-05
Mục tiêu:
 Trình bày được các câu lệnh rẽ nhánh, cấu trúc lặp
 Hiện thực được các chương trình có cấu trúc rẽ nhánh đơn giản và phức tạp
 Hiện thực được các chương trình có cấu lặp (for, while, do while) đơn giản và phức tạp
Bài 1: Cho biết số các bước lặp nhỏ nhất của câu lệnh while và lệnh do...while?
Bài 2: Giả sử là một câu lệnh có cấu trúc và e1, e2, e3 là các biểu thức, có sự khác nhau gì giữa đoạn
mã:
for (e1;e2;e3)
s;
và đoạn mã:

e1;
while (e2) {
e;
e3;
}
Bài 3: Cho biết giá trị của x sau khi thực hiện câu lệnh sau:
for (x = 0; x < 100, x++) ;
Bài 4: Cho biết giá trị của x sau khi thực hiện câu lệnh sau:
for (ctr = 2; ctr < 10; ctr += 3) ;
Bài 5: Có bao nhiêu ký tự X được in ra sau khi thực hiện đoạn mã:
for (x = 0; x < 10; x++)
for (y = 5; y > 0; y--)
puts("X");
Bài 6: Cho biết điểm sai trong đoạn mã sau:
record = 0;
while (record < 100)
{
printf( "\nRecord %d ", record );
printf( "\nGetting next number..." );
}
Bài 7: Cho biết điểm sai trong đoạn mã sau:
for (counter = 1; counter < 10; counter++);
printf("\nCounter = %d", counter );
Bài 8: Sự khác nhau giữa lệnh break và lệnh continue là gì?

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

11



Bài 9: Vòng lặp vô hạn là gì? làm thế nào để tạo vòng lặp vô hạn?
Bài 10:

Hai sự kiện gì làm kết thúc việc chạy chương trình?

Bài 11:

Hàm exit() dùng để làm gì?

Hàm exit() làm kết thúc chương trình. Một giá trị phải được truyền cho hàm exit(). Giá trị này được trả
về cho hệ điều hành.
Bài 12:
lặp.

Câu lệnh làm cho điều khiển chương trình chuyển đến bước lặp kế tiếp trong một lệnh

Bài 13:

Câu lệnh chuyển điều khiển chương trình đến cuối vòng lặp.

Bài 14:
Có điểm gì sai trong đoạn mã sau?
switch( answer )
{
case 'Y': printf("You answered yes");
break;
case 'N': printf( "You answered no");
}
Bài 15:
Có điểm gì sai trong đoạn mã sau?

switch( choice )
{
default:
printf("You did not choose 1 or 2");
case 1:
printf("You answered 1");
break;
case 2:
printf( "You answered 2");
break;
}
Bài 16:

Viết lại câu trên bằng cách dùng lệnh if.

Bài 17:

Viết một vòng lặp vô hạn do...while

Bài 18:
Hãy xác định giá trị của những biểu thức sau:
giả sử a=5, b=2, c=4, d=6 và e=3
a.
a>b
f.
a*b
b.
a !=b
g.
a%b*c

c.
d%b ==c%b
h.
c%b*a
d.
a*c != d*b
i.
b%c*a
Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

12


d*b == c*e

e.

Bài 19:
Viết lại các biểu thức bên dưới bằng cách thêm vào các dấu ngoặc để cho biết thứ tự sẽ
thực hiện các phép toán. Sau đó hãy tính giá trị của các biểu thức với a=5, b=2 và c=4.
ví dụ: a%b*c && c%b*a được viết lại: ((a%b) c)&&((c%b)*a)
a. a%b*c || c%b*a
b. b%c * a && a%c *b
c. b%c * a|| a%c *b
Bài 20:
Viết các biễu thức quan hệ để biểu diễn các điều kiện sau (tên biến tự đặt)
a. Tuổi của một người bằng 30
b. Nhiệt độ của một người lớn hơn 370c
c. Chiều cao của một người cao hơn 1.7m
d. Tuổi của một người lớn hơn hoặc bằng 30 và cao từ 1.7m trở lên

e. Chiều dài lớn hơn 5m và nhỏ hơn 8m
Bài 21:
Xác định biểu giá của những biểu thức sau giả sử a=5, b=2, c=4 và d=5
a. a==5
b. b * d == c*c
c. d % b * c>5 ||c%b * d<7
Bài 22:
Lãi suất tiền gởi tiết kiệm tại một ngân hàng được tính như sau: Nếu thời gian gởi hơn 5 năm
thì lãi suất là 9.5%, các trường hợp còn lại là 5.4%. Hãy viết một chương trình nhập số năm đã
gởi tiền vào biến Numyear, sau đó cho hiện lên màn hình tỉ lệ lãi suất phù hợp với giá trị của
biến Numyear.
b. Phải thực hiện chương trình bao nhiêu lần để biết chương trình trên thực hiện chính xác. Phải
nhập những giá trị nào để test chương trình.
a.

Bài 23:
a. Để thi đổ một môn học nào đó thì điểm thi của học sinh cho môn này phải lờn hơn hoặc bằng 50
và thi rớt nếu có điểm thấp hơn. Hãy viết chương trình cho phép nhập vào một điểm sau đó in
lên màn hình “A passing grade” hoặc “A failing grade”
b. Phải thực hiện chương trình bao nhiêu lần để biết chương trình trên thực hiện chính xác. Phải
nhập những giá trị nào để test chương trình.
Bài 24:
a. Viết chương trình để tính và hiển thị số lương lãnh được cho một tuần của một công nhân được
xác định theo quy tắc sau:
Nếu số giờ đã làm nhỏ hơn hoặc bằng 40 thì nhận được 20000đ/giờ ngược lại sẽ nhận được
25000đ/giờ cộng thêm 2500đ cho mỗi giờ đối với số giờ vượt quá 40. Số giờ làm việc được
nhập từ bàn phím.
b. Phải thực hiện chương trình bao nhiêu lần để biết chương trình trên thực hiện chính xác. Phải
nhập những giá trị nào để test chương trình.


Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

13


Bài 25:
a. Một người bán hàng có thâm niên cao được thanh toán 500000đ/tuần và người có thâm niên
thấp được thanh toán 380000đ/tuần. Hãy viết chương trình cho phép nhập một ký tự vào biến
thamnien. Nếu thamnien=’c’ thì hiển thị mức lương của người có thâm niên cao, ngược lại hiển
thị mức lương của người có thâm niên thấp.
b. Phải thực hiện chương trình bao nhiêu lần để biết chương trình trên thực hiện chính xác. Phải
nhập những giá trị nào để test chương trình.
Bài 26:
Viết chương trình cho phép nhập và lưu trữ một ký tự vào biến ch sau đó in lên màn hình
cho biết ký tự vừa nhập có phải là một chữ cái thường hay không.
Bài 27:
Viết chương trình cho phép nhập và lưu trữ một ký tự vào biến ch sau đó hãy xác định ký
tự vừa nhập có phải là một chữ cái thường, nếu là một chữ cái thường hãy xác định vị trí của ký tự
này trong bản chữ cái.
Bài 28:
Viết chương trình cho phép nhập và lưu trữ một ký tự vào biến ch nếu ký tự vừa nhập là
một chữ cái thường, hãy in lên màn hình chữ cái hoa tương ứng
(gợi ý: ‘A’= char(‘a’-32)).
Bài 29:
sau:

Xếp loại của một sinh viên dựa vào điểm trung bình của các môn học được cho theo bảng
ĐIỂM TRUNG BÌNH

XẾP LOẠI


Lớn hơn hoặc bằng 90
A
Nhỏ hơn 90 nhưng nớn hơn hoặc bằng
B
80
Nhỏ hơn 80 nhưng nớn hơn hoặc bằng
C
70
Nhỏ hơn 70 nhưng nớn hơn hoặc bằng
D
60
Nhỏ hơn 60
E
Viết chương trình cho phép nhập vào điểm trung bình của một sinh viên. Sau đó hãy in lên màn hình
xếp loại của học sinh này phụ thuộc vào điểm vừa nhập.
Bài 30:
Tỉ lệ lãi suất tiền gởi tiết kiệm tại một ngân hàng được xác định dựa vào thời gian của số
tiền được gởi. Tỉ lệ này được cho bởi bản sau:
Thời gian gởi
Lớn hơn hoặc bằng 5 năm
Nhỏ hơn 5 năm nhưng lớn hơn hoặc bằng 4 năm
Nhỏ hơn năm nhưng lớn hơn hoặc bằng 3 năm
Nhỏ hơn 3 năm nhưng lớn hơn hoặc bằng 2 năm
Nhỏ hơn 2 năm nhưng lớn hơn hoặc bằng 1 năm

Tỉ lệ
.095
.09
.085

.075
.065

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

14


Nhỏ hơn 1 năm
.058
Viết chương trình cho phép nhập thời gian gởi tiền. Sau đó hãy in lên màn hình tỉ lệ lãi suất tương ứng
với thời gian đã nhập.
Bài 31:
Viết chương trình cho phép nhập một số, sau đó là một khoảng trắng, sau khoảng trắng là
một ký tự. Nếu ký tự là ‘f’, thì xem như giá trị số đã nhập là nhiệt độ tính theo độ Fa và hãy đổi ra
độ C tương ứng. Nếu ký tự là ‘c’ thì xem như giá trị số đã nhập là nhiệt đó tính theo độ C và hãy đổi
ra độ Fa tương ứng. Nếu ký tự không phải là ‘f’ mà cũng không là ‘c’ thì hiển thị câu thông báo “Dữ
liệu nhập không chính xác’.
Công thức chuyển đổi như sau:
Celsius= (5.0/9.0) * (fahrenheit –32.0)
Fahrenhiet= (9.0/5.0) * (Celsius+32.0)
Bài 32:
Hãy viết lại đoạn chương trình sau bằng cấu trúc switch
if (xeploai==’A’)
printf(”%s”, ”Điểm trung bình giữa 90 và 100”);
else if (xeploai==’B’)
printf(”%s”, ”Điểm trung bình giữa 80 và 89.9”);
else if (xeploai==’C’)
printf(”%s”, ”Điểm trung bình giữa 70 và 79.9”);
else if (xeploai==’D’)

printf(”%s”, ”Điểm trung bình nhỏ hơn 70”);
else printf(”%s”, ”Dữ liệu nhập không hợp lệ”).
CẤU TRÚC LẶP
Bài 33:
Chương trình dưới đây khi thực hiện sẽ in lên màn hình các số nguyên từ 1 đến 10.
#include <stdio.h>
#include <iomanip.h>
int main()
{
int count;
count=1; //Khởi tạo giá trị cho biến count
while (count<=10) //count còn nhỏ hơn hoặc bằng 10 thì còn lặp.
{
printf(“%3d ”, count);
count=count+1; // Tác động lên biến count để đến một lúc BTĐK=0 →kết thúc vòng lặp
}
return 0;
}
a.
Dựa vào chương trình trên hãy viết chương trình in các số chẵn từ 2 đến 20 lên màn hình.
(gợi ý: count được khởi tạo bằng một giá trị chẵn và sau mỗi lần lặp giá trị của count sẽ tăng 2).

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

15


b.

Viết lại chương trình ở câu a với yêu cầu cho phép người sử dụng nhập vào phạm vi các số

chẵn muốn in lên màn hình.

Bài 34:
a. Hãy cho biết tổng của các số nguyên được in lên màn hình bởi chương trình sau, và số nguyên
đầu tiên và số nguyên cuối cùng đợc in lên màn hình là những số nguyên nào.
b. Nếu đảo ngược vị trí của hai lệnh trong vòng while trong chương trình sau thì chương trình sẽ
hoạt động như thế nào.
#include <stdio.h>
int main()
{ int num=0;
while (num<=20)
{
num++;
printf(“%d ”, num);
}
return 0;
}
Bài 35:
Viết chương trình in bảng chuyển đổi từ gallon sang liter. Chương trình cho hiện các giá
trị gallon từ 10 đến 20 (bước nhảy là 1) và các giá trị liter tương ứng. Biết rằng 1 gallon chất lỏng
tương đương 3.785 liter.
Bài 36:
Viết chương trình in bảng chuyển đổi từ feet sang meter. Chương trình cho hiện các giá
trị feet từ 3 đến 30 (bước nhảy là 3) và các giá trị meter tương ứng. Biết rằng 3.28 feet tương đương
1 meter
Bài 37:
Một cái máy trong ngành cơ khí được mua với giá 2800000đ và được khấu hao theo tỉ lệ
sau: 150000đ/tháng trong vòng 19 tháng. Hãy viết một chương trình in lên màn hình mẫu sau:
Tháng
-------1

2
..
19

Khấu hao
-----------150000
150000
............
100000

Giá trị còn lại
----------------2650000
2500000
..............
0

Tổng giá trị đã khấu hao
-----------------------------150000
300000
............
2800000

Bài 38:
Chương trình bên dưới đây in lên màn hình giá trị của 10 số nguyên được nhập từ bàn
phím.
#include <stdio.h>
int main()
{ int so,dem,tong=0;
dem=0;
while (dem<10)

{
printf(“Nhap vao 1 so: ”);
scanf(“%d, &so);
tong +=so;
Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

16


dem++;
}
printf(“\nTri trung binh cua cac so vua nhap la: %3.3f”, (float)(tong/dem));
return 0;
}
a. Giả sử do sai sót chương trình trên được viết như bên dưới có cho kết quả chính xác không.
b.
#include <stdio.h>
int main()
{ int so,dem,tong=0;
dem=0;
while (dem<10)
{
printf(“Nhap vao 1 so: ”);
scanf(“%d, &so);
tong +=so;
dem++;
printf(“\nTri trung binh cua cac so vua nhap la: %3.3f”, (float)(tong/dem));
}
return 0;
}

c. Hai chương trình trên chương trình nào tốt hơn? tại sao?.
d. Giả sử ở cuối dòng while (dem<10) có thêm dấu ; thì chương trình sẽ hoạt động như thế nào
Bài 39:
Viết chương trình tìm ước số chung lớn nhất của hai nguyên dương được nhập từ bàn
phím theo giải thuật: khi hai số còn khác nhau thì lấy số lớn trừ đi số nhỏ cho đến khi hai số có giá
trị bằng nhau thì đó chính là ước số chung lớn nhất
Bài 40:

Cho biết kết quả xuất của chương trình sau:

#include <stdio.h>
int main()
{
int i;
for (i=20; i>=0 ; i -=4)
printf(“%d ”, i) ;
return 0;
}
Bài 41:
Sử dụng vòng for viết chương trình in lên màn hình bảng giá trị bình phương, lập phương
của các số nguyên chẵn từ 2 đến 30
Bài 42:
Viết chương trình sử dụng vòng for in bảng chuyển đổi từ độ fa sang độ C. Với phạm vi
của độ Fa cần hiển thị, bước nhảy được nhập từ bàn phím. Biết công thức chuyển đổi như sau:
0
C=(5.0/9.0)*(fa-32.0)

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

17



Bài 43:
Viết chương trình nhập 10 giá trị ở đơn vị liter và in ra giá trị gallon tương ứng (mỗi lần
nhập một giá trị) biết 3.785 liter thì tương đương 1 gallon. (dùng vòng lặp for)
Bài 44:
Chương trình dưới đây có sai cú pháp không. Nếu sai hãy điều chỉnh để chương trình có
thể thực hiện được.
#include<stdio.h>
int main()
{
for (i=1; i<10;i++)
printf(“%d \n”, i) ;
for (i=1; i<5;i++)
printf(“%d \n”, i) ;
return 0;
}
Bài 45:
Viết chương trình tính kết quả của biểu thức: gt=1*2*3*...*n, với n được nhập từ bàn
phím (n<=11).
Bài 46:
Viết chương trình tính kết quả của biểu thức: gt=1*2*3*...*n, với n được nhập từ bàn
phím (n<=14).
Bài 47:
Bài 48:
n

Viết chương trình nhập vào số n (nguyên dương), in ra giá trị của
12 + 22 + ... + n2
1.2 + 2.3 + .... + n.(n+1)

Viết chương trình nhập vào số n (nguyên dương), in ra các số chẳn trong khoảng từ 1 đến

Bài 49:

Viết chương trình nhập vào số n (nguyên dương), in ra các số lẻ trong khoảng từ 1 đến n

Bài 50:
Ví dụ: ....
A
B
C
........
a
b
........

Viết chương trình in bảng mã ASCII của các chữ cái hoa và thường lên màn hình
65
66
67
97
98

Bài 51:
Viết chương trình nhập số n, số hạng đầu tiên a và công sai d. In lên màn hình n số hạng
đầu tiên của cấp số cộng.
Bài 52:
Viết chương trình nhập số n, số hạng đầu tiên a và công bội q. lên màn hình n số hạng
đầu tiên của cấp số nhân.


Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

18


Bài 53:

Viết chương trình nhập số n. In lên màn hình các ước số của nó.

Bài 54:

Viết chương trình nhập số n. Cho biết nó có bao nhiêu ước số.

Bài 55:

Viết chương trình nhập số n. In lên màn hình các ước số chẵn của nó.

Bài 56:
a. Dùng vòng lặp do – while viết chương trình nhập vào điểm của một học sinh. Chương trình phải
yêu cầu người sử dụng nhập lại nếu giá trị nhập không hợp lệ. Một giá trị không hợp lệ là những
giá trị nhỏ hơn 0 hoặc lớn hơn 100. Sau khi đã có giá trị hợp lệ thì in nó lên màn hình.
b. Viết lại chương trình 1a với yêu cầu khi có một giá trị nhập không hợp lệ thì báo cho người sử
dụng biết và cho phép người sử dụng nhập lại hoặc kết thúc chương trình.
c. Viết lại chương trình 1a với yêu cầu khi có một giá trị nhập không hợp lệ thì tự động kết thúc
chương trình
Bài 57:
Viêt chương trình in lên màn hình số đảo ngược của một số nguyên dương nhập từ bàn
phím. Ví dụ: số nhập vào là 8735 thì in lên màn 5378.
Bài 58:
Viết lại chuơng trình 15 với yêu cầu cho phép chương trình trên thực hiện nhiều lần. Số

lần thực hiện phụ thuộc vào người sử dụng.
Bài 59:
Viết chương trình tạo một menu như sau:
1. Nhập hai số nguyên a, b
2. Xuất tổng a + b
3. Xuất hiệu a – b
4. Xuất tích a * b
5. Xuất thương a/b
6. Kết thúc

Khi người sử dụng nhập một số nguyên, thực hiện công việc tương ứng.
Bài 60:
Thực hiện các bài tập
Hướng dẫn:
 Sử dụng cấu trúc lặp
 Lưu ý các đường chéo chính, đường chéo phụ, chiều cao
a.
*
**
***
****
*****
******

*******
******
*****
****
***
**


Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

19


*******

*

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

20


b.
$$$$$$$
$$$$$$$
$$$$$$$
$$$$$$$
$$$$$$$
$$$$$$$
$$$$$$$

$$$$$$$
$$$$$$$
$$$$$$$
$$$$$$$
$$$$$$$
$$$$$$$

$$$$$$$

c.
*
***
*****
*******
*********
***********
************
**************
d.
1
232
34543
4567654
567898765
67890109876
7890123210987
890123454321098
90123456765432109
0123456789876543210
e.
1
232
34543
4567654
567898765
67890109876
7890123210987

890123454321098
90123456765432109
0123456789876543210

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

21


f.
**************
**************
**************
**************
**************
**************
**************
**************
**************
**************
**************
**************
**************
g.
**************
**************
**************
**************
**************
**************

**************
**************
**************
**************
**************
**************
**************
h.
**************
**************
**************
**************
**************
**************
**************
**************
**************
**************
**************
**************
**************
Bài 61:
Viết chương trình in ra tổng của 10 số chẵn đầu tiên (sử dụng vòng lặp for hoặc while)

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

22


Bài 62:


Viết chương trình in ra những số lẻ từ 1 đến 99.

Bài 63:

Viết chương trình xuất ra tổng các số là bội số của 7 (từ 1 đến 100)

Bài 64:

Viết chương trình in ra tổng 1+2+3….+n với n được nhập từ tham số command line

Bài 65:
Viết chương trình in ra tổng 1+3+5….+n nếu n là số chẵn, 2+4+6+….n nếu n là số lẻ. Giá
trị n được nhập vào từ tham số command line
Bài 66:
Viết chương trình in ra giá trị lớn nhất và nhỏ nhất trong một dãy các giá trị user đã nhập
vào từ tham số command line.
Bài 67:
Viết chương trình giải phương trình bậc 1 với hệ số a, b được nhập vào bởi user từ tham
số command line.
Bài 68:
zero

Viết chương trình đọc một giá trị nguyên từ bàn phím và in ra số đó là số chẵn, lẻ hoặc

Bài 69:

Viết chương trình in ra bội số của 3 từ 300 đến 3.

Bài 70:


Viết chương trình kiểm tra số nhập vào có phải là số nguyên tố hay không

Bài 71:

Viết chương trình tìm USCLN của 2 số nhập vào.

Bài 72:

Viết chương trình tính tổng N số nguyên.

Bài 73:

Tính tổng các số nguyên tố nhỏ hơn N.

Bài 74:

Tính tổng N số nguyên tố đầu tiên.

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

23


BÀI TẬP THỰC HÀNH TUẦN 06-07-08
Mục tiêu:
 Trình bày được vai trò của hàm và ý nghĩa
 Khai báo được hàm và viết được chương trình sử dụng hàm
Bài 1: Dòng đầu tiên của định nghĩa hàm gọi là gì, bao gồm các thông tin thế nào?
Bài 2: Hàm có thể trả về bao nhiêu giá trị?

Bài 3: Nếu một hàm không trả về giá trị, kiểu gì có thể dùng để khai báo hàm?
Bài 4: Sựkhác nhau giữa định nghĩa hàm và nguyên mẫu hàm (prototype)?
Bài 5: Biến địa phương (local variables) là gì? điểm đặc biệt của nó?
Bài 6: Hàm main() nên đặt ở đâu?
Bài 7: Viết một tiêu đề hàm có tên là do_it() có 3 tham số kiểu char và trả về kiểu float.
Bài 8: Viết một tiêu đề hàm có tên là print_a_number() có 1 tham số kiểu int và không trả về gì.
Bài 9: Tìm điểm sai trong đoạn mã sau và sửa lại cho đúng:
#include <stdio.h>
void print_msg( void );
main()
{
print_msg( "This is a message to print" );
return 0;
}
void print_msg( void )
{
puts( "This is a message to print" );
return 0;
}
Bài 10:
Tìm điểm sai trong định nghĩa hàm sau đây:
int twice(int y);
{
return (2 * y);
}
Bài 11:

Xem chương trình sau đây:

#include <stdio.h>

int x, y, z;

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

24


int larger_of(int, int);
int main()
{
puts("Enter two different integer values: ");
scanf("%d%d", &x, &y);
z = larger_of(x, y);
printf("\nThe larger value is %d.", z);
return 0;
}
int larger_of(int a, int b)
{
if (a > b)
return a;
else
return b;
}

Hãy viết lại hàm larger_of() trong chương trình này mà chỉ dùng một câu lệnh return duy nhất.
Bài 12:

Viết một hàm nhận hai tham số kiểu int và trả về giá trị tích của chúng.

Bài 13:

Viết một hàm nhận hai tham số kiểu int, hàm trả về giá trịlà thương của phép chia tham
số thứ nhất cho tham số thứ hai nếu tham số thứ hai khác không.
Bài 14:

Viết chương trình có dùng hàm tìm trung bình của 5 số thực được nhập vào từ bàn phím.

Bài 15:

Viết chương trình có dùng hàm tìm số lớn nhất trong 3 sốthực.

Bài 16:

Viết chương trình có dùng hàm kiểm tra năm nhuận.

Bài 17:

Viết chương trình có dùng hàm kiểm tra số nguyên tố.

Bài 18:
Viết chương trình có dùng hàm tìm số hạng thứ N của dãy số Fibonasi được định nghĩa
như sau:
f0= f1= 1, fn+1= fn+ fn-1 (n = 1,2,...)
Bài 19:
Viết chương trình có dùng hàm để giải phương trình bậc hai:
ax2 + bx + c = 0 (a khác 0)
Bài 20:
Viết chương trình có dùng hàm để tính cosx theo công thức sau:
Quá trình lặp sẽ dừng khi với ε là số đủ bé cho trước.
Bài 21:
Viết chương trình có dùng hàm để tính sinx theo công thức sau:

Quá trình lặp sẽ dừng khi với ε là số đủ bé cho trước.
Bài 22:
Tham khảo

Viết chương trình có dùng hàm để tính căn bậc hai của một số không âm.

Khoa Công nghệ thông tin – Đại học Công nghiệp TP. Hồ Chí Minh

25