Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG 1
BÀI THC HÀNH S 2
---------o0o--------
MC TIÊU:
Phân loi cấu trúc điều khiển (điều khin r nhánh, điu khin lp)
S dng thành tho các câu lnh r nhánh (if, if ..else).
Vn dng vòng lp (for, while, do …while) đ gii quyết bài toán.
Thc hin các bài toán kết hp lnh lp và điều kin.
Hiểu ý nghĩa và thc hin các bài toán dùng breakcontinue
I. MT S VÍ D MU
Ví d 1: Viết chương trình tìm số ln nht trong ba s thc a,b,c.
#nclude <stdio.h>
#include<conio.h>
int main (){
float a,b,c, max;
printf(“Nhap a:”);
scanf(“%f”,&a);
printf(“\nNhap b:”);
scanf(“%f”,&b);
printf(“\nNhap c:”);
scanf(“%f”,&c);
max=a;
if (max<b)
max=b;
if (max<c)
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG 2
max=c;
printf(“\n So lon nhat trong 3 so %10.3f, %10.3f, %10.3f,
la: %10.3f”, a,b,c,max);
return 0;
}
Ví d 2: Viết chương trình nhập vào hai s thc. Kim tra xem chúng có cùng du
hay không?
#include <stdio.h>
#include<conio.h>
int main ()
{
float a,b,c, max;
printf(“Nhap a:”);
scanf(“%f”,&a);
printf(“\nNhap b:”);
scanf(“%f”,&b);
if (a*b>0)
printf(“\n%10.3f va %10.3f cung dau”,a,b);
else
printf(“\n%10.3f va %10.3f khong cung dau”,a,b);
return 0;
}
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG 3
Ví d 3: Nhp vào tháng ca một năm. Cho biết tháng thuc quí mấy trong năm.
#include <stdio.h>
#include<conio.h>
int main ()
{
int thang;
printf(“Nhap thang:”);
scanf(“%d”,&thang);
switch (thang)
{
case 1:
case 2:
case 2:
printf(“Qui mot”);
break;
case 4:
case 5:
case 6:
printf(“Qui hai”);
break;
case 7:
case 8:
case 9:
printf(“Qui ba”);
break;
case 10:
case 11:
case 12:
printf(“Qui bon”);
break;
}
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG 4
return 0;
}
Ví d 4: Hãy s dng vòng lặp for để xut tt c các ký t t A ti Z.
#include<stido.h>
int main()
{
char kytu;
for(kytu= ‘A’; kytu<= ‘Z’; kytu++)
{
printf(“%c”, kytu);
}
return 0;
}
Ví d 5: Viết chương trình nhp mt dãy gm n phn t các s nguyên và:
- In mng trên mt dòng.
- Tính tng và trung bình cng các phn t ca mng.
- Tìm giá tr ln nht, nh nht ca mng.
- Đếm trong mng có bao nhiêu s chn, l.
- Đảo ngược mng.
- Sp xếp mng theo th t tăng dần.
#include <stdio.h>
int main() {
int n, i;
int a[100]; // mng ti đa 100 phn t
// Nhp s phn t
printf("Nhap so phan tu cua mang (n <= 100): ");
scanf("%d", &n);
// Nhp mng
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG 5
printf("Nhap %d phan tu:\n", n);
for(i = 0; i < n; i++) {
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
// Xut mng
printf("\nMang vua nhap: ");
for(i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
// 1. Tính tng và trung bình
int tong = 0;
for(i = 0; i < n; i++) {
tong += a[i];
}
printf("Tong = %d\n", tong);
printf("Trung binh = %.2f\n", (float)tong/n);
// 2. Tìm giá tr ln nht, nh nht
int max = a[0], min = a[0];
for(i = 1; i < n; i++) {
if(a[i] > max) max = a[i];
if(a[i] < min) min = a[i];
}
printf("Max = %d\n", max);
printf("Min = %d\n", min);
// 3. Đếm s chn, s l
int chan = 0, le = 0;
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG 6
for(i = 0; i < n; i++) {
if(a[i] % 2 == 0) chan++;
else le++;
}
printf("So phan tu chan = %d, le = %d\n", chan, le);
// 4. Đo ngưc mng
printf("Mang dao nguoc: ");
for(i = n-1; i >= 0; i--) {
printf("%d ", a[i]);
}
printf("\n");
// 5. Sp xếp tăng dn (Bubble Sort)
for(int j = 0; j < n-1; j++) {
for(i = 0; i < n-1-j; i++) {
if(a[i] > a[i+1]) {
int tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
}
}
printf("Mang sau khi sap xep tang dan: ");
for(i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
}
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG 7
Ví d 6: In tt cc s nguyên dương lẻ nh hơn 100.
#include<conio.h>
#include<stdio.h>
int main()
{
int i;
i=1;
while(i<1000)
{
printf(“%d\t”,i);
i=i+2;
}
return 0;
}
Ví d 7: Viết chương trình tìm số nguyên dương m lớn nhất sao cho 1+2+3+4+…+m<N.
#include<conio.h>
#include<stdio.h>
int main()
{
int N,m,s;
printf(“Nhap N:”);
scanf(“%d”,&N);
s=0;
m=0;
do
{
m=m+1;
s=s+m;
}while (s+m+1<N)
printf(“So nguyen duong m la %d”,m);
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG 8
return 0;
}
Ví d 7: Viết chương trình in ra tất c các s l nh n 100 trừ các s 5,7,93
#include<conio.h>
#include<stdio.h>
int main()
{
int i;
for(i=1;i<100;i+=2)
{
if((i==5)|| (i==7) || (i==93))
continue;
printf(“%5d”,i);
}
return 0;
}
II. BÀI TẬP CƠ BẢN
Bài 1: Viết chương trình nhập vào 3 s thc. Hãy in 3 s y ra màn hình theo th t
tăng dần mà ch dùng tối đa 1 biến ph.
Bài 2: Viết chương trình giải phương trình bậc 2.
Bài 3: Viết chương trình nhập tháng, năm. Hãy cho biết tháng đó có bao nhiêu ngày.
Bài 4: Viết chương trình nhập vào 1 ngày ( ngày, tháng, năm). Tìm ngày kế ngày va
nhập (ngày, tháng, năm).
Bài 5: Viết chương trình nhập vào 1 ngày ( ngày, tháng, năm). Tìm ngày trước ngày
va nhập (ngày, tháng, năm).
Bài 6: Viết chương trình nhập ngày, tháng, năm. Tính xem ngày đó ngày th bao
nhiêu trong năm.
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG 9
Bài 7: Viết chương trình nhập 1 s nguyên 2 ch s. Hãy in ra cách đọc ca s
nguyên này.
Bài 8: Viết chương trình nhập 1 s nguyên 3 ch số. Hãy in ra cách đọc ca s
nguyên này.
Bài 9: Viết chương trình in bảng cửu chương ra màn hình.
Bài 10: Cn tổng 200000 đồng t 3 loi giy bạc 1000 đồng, 2000 đồng, 5000 đồng.
Lập chương trình để tìm ra tt c các phương án có thể.
Bài 11: Viết chương trình in ra tam giác cân có độ cao h
a. Tam giác cân đặc nm gia màn hình
Ví d: vi h=4
b. Tam giác cân rng nm gia màn hình
d vi h=4
c. Tam giác vuông cân đặc
Ví d vi h=4
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG
10
d. Tam giác vuông cân rng
Ví d vi h=5
Bài 12: Lp chương trình tính sin(x) với độ chính xác 0.00001 theo công thc
󰇛󰇜


 󰇛󰇜

󰇛 󰇜
Bài 13: Nhp s nguyên dương n và số thc x. Tính giá tr biu thc:
n
nxxx
S
2
sin
...
4
2sin
2
sin
2010
Bài 14: Cho dãy s gm n s nguyên a
1
, a
2
, ..., a
n
. Hãy
1. Tìm giá tr ln nht ca dãy s. Kim tra xem giá tr này có chia hết cho 5
không?
2. Tính trung bình cng các phn t có giá tr âm và chn ca dãy? Kim tra
xem giá tr trung bình cng này có lớn hơn 4.0 không?
3. Tính tng các phn t có giá tr hoc chia hết cho 7 hoc chia hết cho 8
ca dãy. Kim tra xem tổng tìm được có chia hết cho 7 không?
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG
11
4. Đếm s phn t trong dãy có giá tr hoặc chia cho 5 dư 1 hoặc chia cho 5
dư 2? Kiểm tra xem s phn t tìm được có chia hết cho 4 không?
5. In ra màn hình dãy va nhp trên mt dòng.
Bài 15: Cho dãy s gm n s thc a
1
, a
2
, ..., a
n
. Hãy
1. Tìm giá tr ln nht và giá tr nh nht ca dãy s trên. Kim tra xem hiu
gia giá tr ln nht và nh nhất tìm được có lớn hơn 10 không?
2. Đếm xem trong dãy có bao nhiêu cp 2 phn t liên tiếp mà phn t đứng
sau có giá tr lớn hơn phần t đứng trước.
3. Tính trung bình cng các phn t có giá tr tuyệt đối lớn hơn 25.00.
4. Trong s các cp 2 phn t liên tiếp, hãy tìm mt cp có tích nh nht.
5. Tìm mt phn t l có giá tr nh nht trong dãy.
6. In ra màn hình dãy va nhp trên mt dòng.
Bài 16: Cho dãy n s thc a
1
,a
2
,…., a
n
. Hãy:
1. Nhp dãy s t bàn phím.
2. In dãy va nhp
3. Tính tng các phn t ca dãy.
4. Tính tích các phn t l và có giá tr nh hơn n của dãy.
5. Đếm xem trong dãy có bao nhiêu phn t âm.
6. Tìm giá tr ln nht ca dãy và v trí ca phn t y.
7. Tìm giá tr nh nht trong các phn t âm ca dãy.
8. Tìm giá tr dương nhỏ nht ca dãy.
9. Tính trung bình cng ca tt c các phn t nằm ngoài đoạn [-15.0, 27.5]?
10. Sp xếp dãy theo chiều tăng dần rồi in ra dãy đã sắp xếp.
11. Sp xếp dãy theo chiu gim dn rồi in ra dãy đã sắp xếp.
12. Đảo ngược dãy.
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG
12
13. Cho s thực x được nhp tn phím. Tìm xem trong dãy có phn t này
không ?
Tìm phn t nh nht ca dãy và tính S=Min-a[k]. Với k được nhp t bàn phím.
Bài 17: Cho dãy n s thc a
1
,a
2
,…., a
n
. Hãy:
1. Nhp dãy s t bàn phím.
2. In dãy va nhp
3. Tìm 3 s ln nht ca dãy.
Bài 18: Cho dãy n s nguyên a
1
,a
2
,…., a
n
. Hãy:
1. Nhp dãy s t bàn phím.
2. In dãy va nhp
3. Kim tra xem dãy có phải là dãy đối xứng không? ( dãy đối xng là dãy
có a
n
= a
1,
a
n-1
= a
2
....)
Bài 19: Cho dãy n s thc a
1
,a
2
,…., a
n
. Hãy:
1. Nhp dãy s t bàn phím.
2. In dãy va nhp
Xác định xem dãy có phi là dãy gim dn không? (dãy gim dn là dãy có
a
1
>a
2
>..>a
n
).
Bài 20: Nhp tọa độ n điểm trên mt phng tọa độ (xOy). Hãy
1. In ra màn hình tọa độ các điểm đã nhp trên mt dòng theo dng (x1,y1)
(x2,y2)….. (xn,yn).
2. Tính độ dài đường gp khúc đi qua n điểm trên theo th t 1,2…,n-1,n
3. Nhp s thực L>0, đếm xem có bao nhiêu đoạn thng to t n điểm trên có
độ dài >L
Nhp s thc r t n phím. Đếm xem có bao nhu điểm nằm trong đường tròn tâm
O (0,0) bán kính r.
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG
13
Gi ý:
#include <stdio.h>
#include <math.h>
int main() {
int n, i, j;
double x[100], y[100]; // mng lưu ta đ các đim
printf("Nhap so diem n: ");
scanf("%d", &n);
// Nhp ta đ
for(i = 0; i < n; i++) {
printf("Nhap toa do diem thu %d (x y): ", i+1);
scanf("%lf %lf", &x[i], &y[i]);
}
// 1. In ra các đim
printf("\nCac diem da nhap:\n");
for(i = 0; i < n; i++) {
printf("(%.2f, %.2f) ", x[i], y[i]);
}
printf("\n");
// 2. Tính đ dài đưng gp khúc
double tong = 0.0;
for(i = 0; i < n-1; i++) {
double dx = x[i+1] - x[i];
double dy = y[i+1] - y[i];
tong += sqrt(dx*dx + dy*dy);
}
printf("\nDo dai duong gap khuc = %.4f\n", tong);
// 3. Đếm s đon thng > L
double L;
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG
14
printf("\nNhap L > 0: ");
scanf("%lf", &L);
int dem = 0;
for(i = 0; i < n-1; i++) {
for(j = i+1; j < n; j++) {
double dx = x[j] - x[i];
double dy = y[j] - y[i];
double d = sqrt(dx*dx + dy*dy);
if(d > L) dem++;
}
}
printf("So doan thang co do dai > %.2f la: %d\n",
L, dem);
// 4. Đếm s đim trong đưng tròn tâm O bán kính r
double r;
printf("\nNhap ban kinh r: ");
scanf("%lf", &r);
int demTrong = 0;
for(i = 0; i < n; i++) {
if(x[i]*x[i] + y[i]*y[i] <= r*r) {
demTrong++;
}
}
printf("So diem nam trong duong tron tam O, ban
kinh %.2f la: %d\n", r, demTrong);
return 0;
}
Bài 21: Viết chương trình bằng ngôn ng C thc hin yêu cu sau:
Nhp s thc r và tọa độ của n điểm trên mt phng xOy. Hãy:
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG
15
1. Đếm s đim nm bên trong nửa đường tròn tâm O(0, 0) bán kính r
nm bên trên trc Ox ca h tọa độ xOy.
2. Đếm s đim nm ngoài đường tròn tâm O(0,0) bán kính r. Kim tra xem
s điểm tìm được có chia hết cho 6 không?
3. In ra màn hình tọa độ các điểm đã nhập trên mt dòng theo dng (x1,y1)
(x2,y2)….. (xn,yn).
Bài 22: Viết chương trình bằng ngôn ng C thc hin yêu cu sau:
Nhp tọa độ của n điểm trên mt phng xOy. Hãy:
1. Đếm s đim không thuc góc phần tư thứ nht ca h trc tọa độ xOy?
Kim tra xem s điểm tìm đưc có chia hết cho 5 không?
2. Tìm tọa độ ca một điểm thuc góc phần tư thứ 4 ca h trc tọa độ xOy
gn gc tọa độ nht.
3. Tính độ dài đường gp khúc đi qua n điểm theo th t 1, 2, 3…n.
4. Đếm xem có bao nhiêu đoạn thng to t n điểm trên ct trc Ox.
5. Đếm xem có bao nhiêu điểm nm trên (thuộc) đường thng y=ax+b. Vi
a,b nhp t bàn phím.
6. Đếm xem có bao nhiêu điểm nm phía trên (không thuc) trc Ox.
7. In ra màn hình tọa độ các điểm va nhp.
Bài 23: Viết chương trình bằng ngôn ng C thc hin yêu cu sau:
Nhp tọa độ của n điểm trên mt phng xOy. Hãy:
1. Tính độ dài đường gp khúc đi qua n điểm theo th t 2, 3…n, 1.
2. Xác định độ dài ca một đoạn thng ln nhất mà được to t 2 trong n
đim trên.
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG
16
3. In ra màn hình tọa độ các điểm va nhp.
Bài 24: Viết chương trình bng ngôn ng C thc hin yêu cu sau:
Nhp tọa độ của n điểm trên mt phng xOy. Hãy:
1. Tìm diện tích đường tròn tâm O(0,0) nh nht chứa n điểm trên.
2. In ra màn hình tọa độ các điểm va nhp.
3. Tìm một điểm gn tâm O(0,0) nht.
Bài 25: Viết chương trình bng ngôn ng C thc hin yêu cu sau:
Nhp tọa độ của n điểm trên mt phng xOy. Hãy:
1. Tìm din tích hình ch nht nh nht chứa n điểm trên và có các cnh xong
xong vi các trc Ox, Oy.
2. In ra màn hình tọa độ các điểm va nhp.
3. Tìm tt c c điểm gần điểm th 1 có tọa độ (x1,y1)
III. BÀI TP NÂNG CAO
Bài 27: Viết chương trình thực hin các yêu cu sau: nhp mng n s nguyên t bàn
phím sao cho khi nhp xong các phn t trong mảng được sp theo th t tăng dần
Bài 28: Viết chương trình sắp xếp các s dương trong mảng các s thực tăng dần
các s âm gi nguyên v trí ca chúng trong mng.
Bài 29: Cho đa thức Pn(x)=a0 + a1x + a2x2 + a3x3+....+anxn.
1. Nhp các h s của đa thức trên, in các h s va nhp trên mt dòng.
2. Đếm s h s nh hơn 0
3. Tính giá tr của đa thức ti giá tr x0 với x0 được nhp t bàn phím.
4. Tính đạo hàm cp 1 của đa thức, và in ra các h s của đa thức sau khi tính
đạo hàm.
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG
17
Gi ý làm các ý a, b, c
#include <stdio.h>
#include <math.h>
int main() {
int n, i, count= 0;
double a[100], x0, P = 0;
// 1. Nhp bc n và h s đa thc
printf("Nhap bac cua da thuc n: ");
scanf("%d", &n);
printf("Nhap cac he so a0, a1, ..., an:\n");
for (i = 0; i <= n; i++) {
printf("a[%d] = ", i);
scanf("%lf", &a[i]);
}
// In ra h s va nhp
printf("\nHe so da thuc Pn(x): ");
for (i = 0; i <= n; i++) {
printf("%.2f ", a[i]);
}
printf("\n");
// 2. Đếm s h s < 0
for (i = 0; i <= n; i++) {
if (a[i] < 0) count++;
}
printf("So he so < 0 la: %d\n", count);
// 3. Tính giá tr P(x0)
printf("Nhap gia tri x0: ");
scanf("%lf", &x0);
for (i = 0; i <= n; i++) {
P += a[i] * pow(x0, i);
}
printf("Gia tri cua P(%g) = %.4f\n", x0, P);
Khoa CNTT-Trường ĐH GTVT Thc hành Tin học đại cương
TRANG
18
return 0;
}
Bài 30: Cho đa thức Pn(x)= a
0
+ a
1
x + a
2
x
2
+ a
3
x
3
+....+a
n
x
n
Qm(x)= b
0
+ b
1
x + b
2
x
2
+ b
3
x
3
+....+b
m
x
m
1. Nhp các h s của 2 đa thức trên
2. Tính đa thức tng và in ra các h s của đa thức tng.
Bài 31: Cho đa thức P
n
(x)=a
0
+ a
1
x + a
2
x
2
+ a
3
x
3
+....+a
n
x
n
Và Q
m
(x)=b
0
+ b
1
x + b
2
x
2
+ b
3
x
3
+....+b
m
x
m
a. Nhp các h s của 2 đa thức trên
b. In các h s của 2 đa thức trên mt dòng
c. Tính đa thức hiu và in ra các h s của đa thức hiu.
d. Đếm xem có bao nhiêu h s âm trong đa thức.
e. Tính giá tr của 2 đa thc ti giá tr x
0
vi x
0
đưc nhp t bàn phím. Và tính
S=
)()(
0 omn
xQxP

Preview text:

Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương
BÀI THỰC HÀNH SỐ 2 ---------o0o-------- MỤC TIÊU:
 Phân loại cấu trúc điều khiển (điều khiển rẽ nhánh, điều khiển lặp)
 Sử dụng thành thạo các câu lệnh rẽ nhánh (if, if ..else).
 Vận dụng vòng lặp (for, while, do …while) để giải quyết bài toán.
 Thực hiện các bài toán kết hợp lệnh lặp và điều kiện.
 Hiểu ý nghĩa và thực hiện các bài toán dùng breakcontinue
I. MỘT SỐ VÍ DỤ MẪU

Ví dụ 1: Viết chương trình tìm số lớn nhất trong ba số thực a,b,c. #nclude #include int main (){ float a,b,c, max; printf(“Nhap a:”); scanf(“%f”,&a); printf(“\nNhap b:”); scanf(“%f”,&b); printf(“\nNhap c:”); scanf(“%f”,&c); max=a; if (maxmax=b; if (max TRANG 1
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương max=c;
printf(“\n So lon nhat trong 3 so %10.3f, %10.3f, %10.3f, la: %10.3f”, a,b,c,max); return 0; }
Ví dụ 2: Viết chương trình nhập vào hai số thực. Kiểm tra xem chúng có cùng dấu hay không? #include #include int main () { float a,b,c, max; printf(“Nhap a:”); scanf(“%f”,&a); printf(“\nNhap b:”); scanf(“%f”,&b); if (a*b>0)
printf(“\n%10.3f va %10.3f cung dau”,a,b); else
printf(“\n%10.3f va %10.3f khong cung dau”,a,b); return 0; } TRANG 2
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương
Ví dụ 3: Nhập vào tháng của một năm. Cho biết tháng thuộc quí mấy trong năm. #include #include int main () { int thang; printf(“Nhap thang:”); scanf(“%d”,&thang); switch (thang) { case 1: case 2: case 2: printf(“Qui mot”); break; case 4: case 5: case 6: printf(“Qui hai”); break; case 7: case 8: case 9: printf(“Qui ba”); break; case 10: case 11: case 12: printf(“Qui bon”); break; } TRANG 3
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương return 0; }
Ví dụ 4:
Hãy sử dụng vòng lặp for để xuất tất cả các ký tự từ A tới Z. #include int main() { char kytu;
for(kytu= ‘A’; kytu<= ‘Z’; kytu++) { printf(“%c”, kytu); } return 0; }
Ví dụ 5:
Viết chương trình nhập một dãy gồm n phần tử các số nguyên và:
- In mảng trên một dòng.
- Tính tổng và trung bình cộng các phần tử của mảng.
- Tìm giá trị lớn nhất, nhỏ nhất của mảng.
- Đếm trong mảng có bao nhiêu số chẵn, lẻ. - Đảo ngược mảng.
- Sắp xếp mảng theo thứ tự tăng dần. #include int main() { int n, i;
int a[100]; // mảng tối đa 100 phần tử // Nhập số phần tử
printf("Nhap so phan tu cua mang (n <= 100): "); scanf("%d", &n); // Nhập mảng TRANG 4
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương
printf("Nhap %d phan tu:\n", n); for(i = 0; i < n; i++) { printf("a[%d] = ", i); scanf("%d", &a[i]); } // Xuất mảng printf("\nMang vua nhap: "); for(i = 0; i < n; i++) { printf("%d ", a[i]); } printf("\n");
// 1. Tính tổng và trung bình int tong = 0; for(i = 0; i < n; i++) { tong += a[i]; } printf("Tong = %d\n", tong);
printf("Trung binh = %.2f\n", (float)tong/n);
// 2. Tìm giá trị lớn nhất, nhỏ nhất int max = a[0], min = a[0]; for(i = 1; i < n; i++) {
if(a[i] > max) max = a[i];
if(a[i] < min) min = a[i]; } printf("Max = %d\n", max); printf("Min = %d\n", min);
// 3. Đếm số chẵn, số lẻ int chan = 0, le = 0; TRANG 5
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương for(i = 0; i < n; i++) { if(a[i] % 2 == 0) chan++; else le++; }
printf("So phan tu chan = %d, le = %d\n", chan, le); // 4. Đảo ngược mảng printf("Mang dao nguoc: ");
for(i = n-1; i >= 0; i--) { printf("%d ", a[i]); } printf("\n");
// 5. Sắp xếp tăng dần (Bubble Sort)
for(int j = 0; j < n-1; j++) {
for(i = 0; i < n-1-j; i++) { if(a[i] > a[i+1]) { int tmp = a[i]; a[i] = a[i+1]; a[i+1] = tmp; } } }
printf("Mang sau khi sap xep tang dan: "); for(i = 0; i < n; i++) { printf("%d ", a[i]); } printf("\n"); return 0; } } TRANG 6
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương
Ví dụ 6: In tất cả các số nguyên dương lẻ nhỏ hơn 100. #include #include int main() { int i; i=1; while(i<1000) { printf(“%d\t”,i); i=i+2; } return 0; }
Ví dụ 7:
Viết chương trình tìm số nguyên dương m lớn nhất sao cho 1+2+3+4+…+m#include #include int main() { int N,m,s; printf(“Nhap N:”); scanf(“%d”,&N); s=0; m=0; do { m=m+1; s=s+m;
}while (s+m+1printf(“So nguyen duong m la %d”,m); TRANG 7
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương return 0; }
Ví dụ 7: Viết chương trình in ra tất cả các số lẻ nhỏ hơn 100 trừ các số 5,7,93 #include #include int main() { int i; for(i=1;i<100;i+=2) {
if((i==5)|| (i==7) || (i==93)) continue; printf(“%5d”,i); } return 0; } II. BÀI TẬP CƠ BẢN
Bài 1: Viết chương trình nhập vào 3 số thực. Hãy in 3 số ấy ra màn hình theo thứ tự
tăng dần mà chỉ dùng tối đa 1 biến phụ.
Bài 2: Viết chương trình giải phương trình bậc 2.
Bài 3: Viết chương trình nhập tháng, năm. Hãy cho biết tháng đó có bao nhiêu ngày.
Bài 4: Viết chương trình nhập vào 1 ngày ( ngày, tháng, năm). Tìm ngày kế ngày vừa
nhập (ngày, tháng, năm).
Bài 5: Viết chương trình nhập vào 1 ngày ( ngày, tháng, năm). Tìm ngày trước ngày
vừa nhập (ngày, tháng, năm).
Bài 6: Viết chương trình nhập ngày, tháng, năm. Tính xem ngày đó là ngày thứ bao nhiêu trong năm. TRANG 8
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương
Bài 7: Viết chương trình nhập 1 số nguyên có 2 chữ số. Hãy in ra cách đọc của số nguyên này.
Bài 8: Viết chương trình nhập 1 số nguyên có 3 chữ số. Hãy in ra cách đọc của số nguyên này.
Bài 9: Viết chương trình in bảng cửu chương ra màn hình.
Bài 10: Cần có tổng 200000 đồng từ 3 loại giấy bạc 1000 đồng, 2000 đồng, 5000 đồng.
Lập chương trình để tìm ra tất cả các phương án có thể.
Bài 11: Viết chương trình in ra tam giác cân có độ cao h
a. Tam giác cân đặc nằm giữa màn hình Ví dụ: với h=4                
b. Tam giác cân rỗng nằm giữa màn hình Ví dụ với h=4            
c. Tam giác vuông cân đặc Ví dụ với h=4 TRANG 9
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương          
d. Tam giác vuông cân rỗng Ví dụ với h=5            
Bài 12: Lập chương trình tính sin(x) với độ chính xác 0.00001 theo công thức 𝑥3 𝑥5 𝑥2𝑛+1 𝑠𝑖𝑛(𝑥) = 𝑥 − + +. . . +(−1)𝑛 3! 5! (2𝑛 + 1)!
Bài 13: Nhập số nguyên dương n và số thực x. Tính giá trị biểu thức: sin x sin 2x sin nx S  2010  ... 2 4 2n
Bài 14: Cho dãy số gồm n số nguyên a1, a2, ..., an. Hãy 1.
Tìm giá trị lớn nhất của dãy số. Kiểm tra xem giá trị này có chia hết cho 5 không? 2.
Tính trung bình cộng các phần tử có giá trị âm và chẵn của dãy? Kiểm tra
xem giá trị trung bình cộng này có lớn hơn 4.0 không? 3.
Tính tổng các phần tử có giá trị hoặc chia hết cho 7 hoặc chia hết cho 8
của dãy. Kiểm tra xem tổng tìm được có chia hết cho 7 không? TRANG 10
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương 4.
Đếm số phần tử trong dãy có giá trị hoặc chia cho 5 dư 1 hoặc chia cho 5
dư 2? Kiểm tra xem số phần tử tìm được có chia hết cho 4 không? 5.
In ra màn hình dãy vừa nhập trên một dòng.
Bài 15: Cho dãy số gồm n số thực a1, a2, ..., an. Hãy 1.
Tìm giá trị lớn nhất và giá trị nhỏ nhất của dãy số trên. Kiểm tra xem hiệu
giữa giá trị lớn nhất và nhỏ nhất tìm được có lớn hơn 10 không? 2.
Đếm xem trong dãy có bao nhiêu cặp 2 phần tử liên tiếp mà phần tử đứng
sau có giá trị lớn hơn phần tử đứng trước. 3.
Tính trung bình cộng các phần tử có giá trị tuyệt đối lớn hơn 25.00. 4.
Trong số các cặp 2 phần tử liên tiếp, hãy tìm một cặp có tích nhỏ nhất. 5.
Tìm một phần tử lẻ có giá trị nhỏ nhất trong dãy. 6.
In ra màn hình dãy vừa nhập trên một dòng.
Bài 16: Cho dãy n số thực a ,…., a 1,a2 n. Hãy: 1.
Nhập dãy số từ bàn phím. 2. In dãy vừa nhập 3.
Tính tổng các phần tử của dãy. 4.
Tính tích các phần tử lẻ và có giá trị nhỏ hơn n của dãy. 5.
Đếm xem trong dãy có bao nhiêu phần tử âm. 6.
Tìm giá trị lớn nhất của dãy và vị trí của phần tử ấy. 7.
Tìm giá trị nhỏ nhất trong các phần tử âm của dãy. 8.
Tìm giá trị dương nhỏ nhất của dãy. 9.
Tính trung bình cộng của tất cả các phần tử nằm ngoài đoạn [-15.0, 27.5]? 10.
Sắp xếp dãy theo chiều tăng dần rồi in ra dãy đã sắp xếp. 11.
Sắp xếp dãy theo chiều giảm dần rồi in ra dãy đã sắp xếp. 12. Đảo ngược dãy. TRANG 11
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương 13.
Cho số thực x được nhập từ bàn phím. Tìm xem trong dãy có phần tử này không ?
Tìm phần tử nhỏ nhất của dãy và tính S=Min-a[k]. Với k được nhập từ bàn phím.
Bài 17: Cho dãy n số thực a ,…., a 1,a2 n. Hãy: 1.
Nhập dãy số từ bàn phím. 2. In dãy vừa nhập 3.
Tìm 3 số lớn nhất của dãy.
Bài 18: Cho dãy n số nguyên a ,…., a 1,a2 n. Hãy: 1.
Nhập dãy số từ bàn phím. 2. In dãy vừa nhập 3.
Kiểm tra xem dãy có phải là dãy đối xứng không? ( dãy đối xứng là dãy có an = a1, an-1= a2....)
Bài 19: Cho dãy n số thực a ,…., a 1,a2 n. Hãy: 1.
Nhập dãy số từ bàn phím. 2. In dãy vừa nhập
Xác định xem dãy có phải là dãy giảm dần không? (dãy giảm dần là dãy có a1>a2>..>an).
Bài 20: Nhập tọa độ n điểm trên mặt phẳng tọa độ (xOy). Hãy
1. In ra màn hình tọa độ các điểm đã nhập trên một dòng theo dạng (x1,y1) (x2,y2)….. (xn,yn).
2. Tính độ dài đường gấp khúc đi qua n điểm trên theo thứ tự 1,2…,n-1,n
3. Nhập số thực L>0, đếm xem có bao nhiêu đoạn thẳng tạo từ n điểm trên có độ dài >L
Nhập số thực r từ bàn phím. Đếm xem có bao nhiêu điểm nằm trong đường tròn tâm O (0,0) bán kính r. TRANG 12
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương Gợi ý: #include #include int main() { int n, i, j;
double x[100], y[100]; // mảng lưu tọa độ các điểm printf("Nhap so diem n: "); scanf("%d", &n); // Nhập tọa độ for(i = 0; i < n; i++) {
printf("Nhap toa do diem thu %d (x y): ", i+1);
scanf("%lf %lf", &x[i], &y[i]); } // 1. In ra các điểm
printf("\nCac diem da nhap:\n"); for(i = 0; i < n; i++) {
printf("(%.2f, %.2f) ", x[i], y[i]); } printf("\n");
// 2. Tính độ dài đường gấp khúc double tong = 0.0;
for(i = 0; i < n-1; i++) { double dx = x[i+1] - x[i]; double dy = y[i+1] - y[i]; tong += sqrt(dx*dx + dy*dy); }
printf("\nDo dai duong gap khuc = %.4f\n", tong);
// 3. Đếm số đoạn thẳng > L double L; TRANG 13
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương printf("\nNhap L > 0: "); scanf("%lf", &L); int dem = 0;
for(i = 0; i < n-1; i++) {
for(j = i+1; j < n; j++) { double dx = x[j] - x[i]; double dy = y[j] - y[i];
double d = sqrt(dx*dx + dy*dy); if(d > L) dem++; } }
printf("So doan thang co do dai > %.2f la: %d\n", L, dem);
// 4. Đếm số điểm trong đường tròn tâm O bán kính r double r;
printf("\nNhap ban kinh r: "); scanf("%lf", &r); int demTrong = 0; for(i = 0; i < n; i++) {
if(x[i]*x[i] + y[i]*y[i] <= r*r) { demTrong++; } }
printf("So diem nam trong duong tron tam O, ban
kinh %.2f la: %d\n", r, demTrong); return 0; }
Bài 21
: Viết chương trình bằng ngôn ngữ C thực hiện yêu cầu sau:
Nhập số thực r và tọa độ của n điểm trên mặt phẳng xOy. Hãy: TRANG 14
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương 1.
Đếm số điểm nằm bên trong nửa đường tròn tâm O(0, 0) bán kính r và
nằm bên trên trục Ox của hệ tọa độ xOy. 2.
Đếm số điểm nằm ngoài đường tròn tâm O(0,0) bán kính r. Kiểm tra xem
số điểm tìm được có chia hết cho 6 không? 3.
In ra màn hình tọa độ các điểm đã nhập trên một dòng theo dạng (x1,y1) (x2,y2)….. (xn,yn).
Bài 22: Viết chương trình bằng ngôn ngữ C thực hiện yêu cầu sau:
Nhập tọa độ của n điểm trên mặt phẳng xOy. Hãy: 1.
Đếm số điểm không thuộc góc phần tư thứ nhất của hệ trục tọa độ xOy?
Kiểm tra xem số điểm tìm được có chia hết cho 5 không? 2.
Tìm tọa độ của một điểm thuộc góc phần tư thứ 4 của hệ trục tọa độ xOy
gần gốc tọa độ nhất. 3.
Tính độ dài đường gấp khúc đi qua n điểm theo thứ tự 1, 2, 3…n. 4.
Đếm xem có bao nhiêu đoạn thẳng tạo từ n điểm trên cắt trục Ox. 5.
Đếm xem có bao nhiêu điểm nằm trên (thuộc) đường thẳng y=ax+b. Với a,b nhập từ bàn phím. 6.
Đếm xem có bao nhiêu điểm nằm phía trên (không thuộc) trục Ox. 7.
In ra màn hình tọa độ các điểm vừa nhập.
Bài 23: Viết chương trình bằng ngôn ngữ C thực hiện yêu cầu sau:
Nhập tọa độ của n điểm trên mặt phẳng xOy. Hãy: 1.
Tính độ dài đường gấp khúc đi qua n điểm theo thứ tự 2, 3…n, 1. 2.
Xác định độ dài của một đoạn thẳng lớn nhất mà được tạo từ 2 trong n điểm trên. TRANG 15
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương 3.
In ra màn hình tọa độ các điểm vừa nhập.
Bài 24: Viết chương trình bằng ngôn ngữ C thực hiện yêu cầu sau:
Nhập tọa độ của n điểm trên mặt phẳng xOy. Hãy: 1.
Tìm diện tích đường tròn tâm O(0,0) nhỏ nhất chứa n điểm trên. 2.
In ra màn hình tọa độ các điểm vừa nhập. 3.
Tìm một điểm gần tâm O(0,0) nhất.
Bài 25: Viết chương trình bằng ngôn ngữ C thực hiện yêu cầu sau:
Nhập tọa độ của n điểm trên mặt phẳng xOy. Hãy:
1. Tìm diện tích hình chữ nhật nhỏ nhất chứa n điểm trên và có các cạnh xong
xong với các trục Ox, Oy.
2. In ra màn hình tọa độ các điểm vừa nhập.
3. Tìm tất cả các điểm gần điểm thứ 1 có tọa độ (x1,y1) III. BÀI TẬP NÂNG CAO
Bài 27:
Viết chương trình thực hiện các yêu cầu sau: nhập mảng n số nguyên từ bàn
phím sao cho khi nhập xong các phần tử trong mảng được sắp theo thứ tự tăng dần
Bài 28: Viết chương trình sắp xếp các số dương trong mảng các số thực tăng dần
các số âm giữ nguyên vị trí của chúng trong mảng.
Bài 29: Cho đa thức Pn(x)=a0 + a1x + a2x2 + a3x3+....+anxn.
1. Nhập các hệ số của đa thức trên, in các hệ số vừa nhập trên một dòng.
2. Đếm số hệ số nhỏ hơn 0
3. Tính giá trị của đa thức tại giá trị x0 với x0 được nhập từ bàn phím.
4. Tính đạo hàm cấp 1 của đa thức, và in ra các hệ số của đa thức sau khi tính đạo hàm. TRANG 16
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương
Gợi ý làm các ý a, b, c #include #include int main() { int n, i, count= 0; double a[100], x0, P = 0;
// 1. Nhập bậc n và hệ số đa thức
printf("Nhap bac cua da thuc n: "); scanf("%d", &n);
printf("Nhap cac he so a0, a1, ..., an:\n");
for (i = 0; i <= n; i++) { printf("a[%d] = ", i); scanf("%lf", &a[i]); }
// In ra hệ số vừa nhập
printf("\nHe so da thuc Pn(x): ");
for (i = 0; i <= n; i++) { printf("%.2f ", a[i]); } printf("\n");
// 2. Đếm số hệ số < 0
for (i = 0; i <= n; i++) { if (a[i] < 0) count++; }
printf("So he so < 0 la: %d\n", count); // 3. Tính giá trị P(x0) printf("Nhap gia tri x0: "); scanf("%lf", &x0);
for (i = 0; i <= n; i++) { P += a[i] * pow(x0, i); }
printf("Gia tri cua P(%g) = %.4f\n", x0, P); TRANG 17
Khoa CNTT-Trường ĐH GTVT Thực hành Tin học đại cương return 0; }
Bài 30: Cho đa thức Pn(x)= a0 + a1x + a2x2 + a3x3+....+anxn Và
Qm(x)= b0 + b1x + b2x2 + b3x3+....+bmxm
1. Nhập các hệ số của 2 đa thức trên
2. Tính đa thức tổng và in ra các hệ số của đa thức tổng.
Bài 31: Cho đa thức Pn(x)=a0 + a1x + a2x2 + a3x3+....+anxn
Và Qm(x)=b0 + b1x + b2x2 + b3x3+....+bmxm
a. Nhập các hệ số của 2 đa thức trên
b. In các hệ số của 2 đa thức trên một dòng
c. Tính đa thức hiệu và in ra các hệ số của đa thức hiệu.
d. Đếm xem có bao nhiêu hệ số âm trong đa thức.
e. Tính giá trị của 2 đa thức tại giá trị x0 với x0 được nhập từ bàn phím. Và tính
P (x ) Q (x ) S= n 0 m o TRANG 18