Bài tập thực hành 2 (Từ Trung Hiếu, jan-24-2008)
Phần 1, Các bài toán nhập và in Các bài toán trong phần này chỉ đơn giản là nhập số liệu vào bằng scanf, sau đó tính toán các giá trị, và cuối cùng in kết quả bằng printf.
1) Phương trình bậc hai Phiên bản này của chương trình chỉ gồm nhập, tính toán, và in, không bao gồm việc kiểm tra tính đúng đắn của dữ liệu như a khác 0 hay delta dương. Chúng ta thử nhập dữ liệu không đúng và xem kết quả in ra màn hình #include <stdio.h> #include <math.h> void main() { double a, b, printf("Nhap printf("Nhap printf("Nhap
c, d, a:"); b:"); c:");
x1, x2; scanf("%lf", &a); scanf("%lf", &b); scanf("%lf", &c);
d = b*b - 4*a*c; x1 = (-b + sqrt(d)) / (2*a); x2 = (-b + sqrt(d)) / (2*a); printf("x1=%lf\nx2=%lf\n", x1, x2); }
2) Hệ tuyến tính Viết chương trình cho phép nhập vào các số a, b, c, m, n, p tương ứng với các hệ số của hệ tuyến tính hai ẩn ax + by = c mx + ny = p Biết rằng hai nghiệm x và y của hệ tuyến được tính bằng công thức Craimer như sau c b a c dx p n cn − bp dy m p ap − cm x= = = và y = = = a b an − bm a b an − bm d d m n m n 1
3) Diện tích tam giác Viết chương trình cho phép nhập ba số a, b, c và in ra diện tích của tam giác có cạnh là ba số a, b, c vừa nhập. Biết công thức tính diện tích tam giác
s=
p.( p − a).( p − b).( p − c)
biết rằng p =
a+b+c 2
4) Điện trở tương đương Viết chương trình cho phép nhập số liệu cho các biến R1 và R2 rồi tính điện trở tương đương theo công thức bên dưới. Chúng ta phải biến đổi công thức để có được công thức tính trực tiếp R
1 1 1 = + R R1 R2 5) Lãi suất Chương trình sau đây sẽ cho phép người dùng nhập số liệu, sau đó tính toán, và đưa ra kết quả. Công thức toán tương ứng là n
I = S (1 + r )
#include "stdio.h" #include "math.h" void main() { double S, r; int n; double I; //--------------Nhap so lieu printf("Nhap S:"); scanf("%lf", &S); printf("Nhap r:"); scanf("%lf", &r); printf("Nhap n:"); scanf("%d", &n); //--------------Tinh toan I = S * pow(1+r, n);
}
//--------------In ket qua printf("Lai suat la %lf\n", I);
2
Phần 2, Các bài toán kết nhập Các bài toán kết nhập (aggregation) là bài toán nhập vào nhiều giá trị và cho ra một hoặc hai giá trị dựa trên các giá trị nhập vào. Các bài toán như tìm min, tìm max, đếm số phần tử, tính tổng, tính trung bình thuộc dạng các bài toán kết nhập.
6) Tổng các số Chương trình sau đây tính tổng các số từ x1, x2, x3, x4 mà chỉ cần dùng tới hai biến là x và s. Trong đó các số x1, x2, x3, x4 được nhập từ bàn phím #include <stdio.h> void main() { double s = 0, x; printf("Nhap printf("Nhap printf("Nhap printf("Nhap
so so so so
thu thu thu thu
1:"); 2:"); 3:"); 4:");
scanf("%lf", scanf("%lf", scanf("%lf", scanf("%lf",
&x); &x); &x); &x);
s s s s
= = = =
s s s s
+ + + +
x; x; x; x;
printf("Tong la %lf\n", s); }
7) Trung bình các số Viết chương trình cho phép nhập năm số thực và in ra trung bình của năm số thực đó. Chương trình chỉ được phép dùng hai biến.
x + x + x3 + x4 + x5 1 5 A = ∑ xi = 1 2 5 i =1 5
8) Tìm giá trị lớn nhất Viết chương trình cho phép nhập vào 5 số thực và in ra số lớn nhất trong năm số thực đó. Sử dụng toán tử ba ngôi để tìm giá trị lớn nhất m = (a > b ? a : b)
M = max( x1 , x2 , x3 , x4 , x5 )
3
9) Tìm giá trị dương lớn nhất Viết chương trình cho phép nhập vào 5 số thực và in ra số lớn dương nhất trong năm số thực đó. Khi không có số thực dương nào, ta chấp nhận in ra giá trị -1 để báo rằng không có số thực dương. Sử dụng toán tử ba ngôi để tìm giá trị lớn nhất m = (a > b ? a : b)
M = max( x1 , x2 , x3 , x4 , x5 ) xi >0
10) Đếm số các số dương Viết chương trình cho phép nhập vào 5 số thực và in ra số các số dương có trong danh sách vừa nhập. Sử dụng toán tử ba ngôi để đếm các số dương
C = count( x1 , x2 , x3 , x4 , x5 ) xi >0
11) Đếm số các số chẵn Viết chương trình cho phép nhập vào 5 số thực và in ra số các số dương có trong danh sách vừa nhập. Sử dụng toán tử ba ngôi để đếm các số dương
C = count ( x1 , x2 , x3 , x4 , x5 ) xi M 2
4