Một số bài tập lập trình C căn bản

Chia sẻ: thienthanh_sbe

Bài toán số 2.1: Viết chương tŕnh chuyển đổi số tự nhiên N cho trước sang hệ cơ số 2 bằng việc xây dựng hàm chuyển đổi. Hướng dẫn: - Xây dựng hàm Dec2Bin( ) chuyển đổi từ số tự nhiên sang số nhị phân. o Sử dụng biến S để lưu giá trị số nhị phân của N. Khởi gán bằng 0. o Tiến hành lặp chuyển đổi cơ số: Lặp trong khi mà N 0 SoDu = số dư của N chia cho 2. N = N chia cho 2. Bổ sung chữ số SoDu vào số S thành một chữ số o Trả về...

Nội dung Text: Một số bài tập lập trình C căn bản

Một số bài tập lập trnh C căn bản
́
Created by NgoHung

Vấn đề 2: Chương trnh con
́

Bài toán số 2.1: Viết chương trnh chuyển đổi số tự nhiên N cho trước sang hệ cơ số 2
́
bằng việc xây dựng hàm chuyển đổi.
Hướng dẫn:
- Xây dựng hàm Dec2Bin( ) chuyển đổi từ số tự nhiên sang số nhị
phân.
o Sử dụng biến S để lưu giá trị số nhị phân của N. Khởi gán bằng 0.
o Tiến hành lặp chuyển đổi cơ số: Lặp trong khi mà N > 0
 SoDu = số dư của N chia cho 2.
 N = N chia cho 2.
 Bổ sung chữ số SoDu vào số S thành một chữ số
o Trả về kết quả cuối cùng của S.
- Viết hàm void main ( ) với nội dung dùng để kiểm tra kết quả thực
hiện của hàm.
o Khai báo biến N, M
o Thông báo nhập, nhập giá trị cho biến N
o Gán giá trị M bằng kết quả trả về của hàm Dec2Bin( N )
o In thông báo về kết quả số nhị phân chuyển đổi được (giá trị của M)
o Gọi hàm getch( ) trước khi kết thúc hàm main ( ).
Chương trnh:́
/* thu tuc chuyen so tu nhien n cho truoc sang ket qua tra ve he co so 2 */
int Dec2Bin ( int n )
{
int S = 0 , So = n ;
while ( So > 0)
{
int Du = So % 2 ;
So = So / 2 ;
S = S * 10 + Du;
}
return S ;
}

/* chuong trinh chinh dap ung yeu cau bai toan */
void main( )
{
int N;
printf( “Nhap so N =” ); scanf( “%d”, &N );
printf( “Dang nhi phan cua N la %d”, Dec2Bin(N) );
getch( );
}
Bài toán số 2.2: Viết các hàm USCLN(a, b) và BSCNN(a, b).
Hướng dẫn: Khai báo hàm USCLN có:
Tên hàm: USCLN
Kiểu dữ liệu trả về: long
Tham số: 2 tham trị là int a, int b
Giá trị trả về: chính là giá trị ước số chung lớn nhất của a và b.
Xử lư tm USCLN, BSCNN: Dựa trên ví dụ đă có ở phần trước.
́
Nội dung hàm:
long USCLN( int a, int b)
{
for (int k = a; k >= 1; k--) // Lap voi moi i co gia tri tu a den 1
if (a%k == 0 && b%k == 0) // Kiem tra a, b co’ dong thoi chia het cho k
khong
break; // break de thoat, luu giu lai gia tri cua k.
return k;
}
Tương tự để viết hàm long BSCNN( int a, int b )
long BSCNN( int a, int b)
{
for (int k = a; k a)
return 1;
else
return 0;
}
- Tính diện tích có thể thực hiện thông qua chu vi của nó



với .
float DienTichTamGiac( long a, long b, long c)
{
float p = (a+b+c)/2.0;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
- Xây dựng hàm main với mục đích, sử dụng các hàm trên để tính diện tích tam
giác nhập vào nếu thông số nhập thỏa măn.
void main()
{
long a, b, c;
NhapTamGiac( a, b, c );
if ( KtraTamGiac( a, b, c) )
printf( “Dien tich tam giac: %f \n”, DienTichTamGiac( a, b, c ));
else
printf( “Khong lap thanh duoc tam giac.\n”);
getch( );
}
Bài toán số 2.5: Viết chương trnh hoàn chỉnh thực hiện phân tích ra N ra thành các
́
thừa số nguyên tố.
Ví dụ: N = 1260 = 2 . 2 . 3 . 3 . 5 . 7
Hướng dẫn:
- Viết hàm nhập số N. Lưu ư, hàm nhập cần truyền tham số N theo
dạng tham biến để lưu lại giá trị đă nhập vào.
- Viết hàm phân tích số N ra các thừa số nguyên tố và in các thừa số
đó ra màn hnh với ư tưởng thuật toán:
́
o Chia N cho số nguyên tố u (nhỏ nhất là 2).
o Trong khi N cn chia hết cho u th́ tiến hành phân tích N với u là thừa số.
̣
Giảm N đi u lần.
o Nếu N không chia hết cho u, thi tăng u lên 1.
o Quá trnh lặp lại với
́
 u từng bước tăng lên 1 nếu N không chia hết cho u.
 N từng bước giảm xuống u lần nếu N chia hết cho u.
o Quá trnh lặp lại đến một mức u tăng lên và N giảm xuống để N = u,
́
khi đó giá trị mới của N sẽ là 1.
Chương trnh:
́
void NhapSoN( long &NN )
{
NN = 0; //Gan khoi dau bang 0 de vao vong lap, vong lap dung khi nhap
khac 0
while ( N == 0 )
{
printf( “Nhap N=” ); scanf( “%d”, &NN );
}
}
/*================================*/
void PhantichSoN ( long N1 )
{
if ( N1 > 1 )
{
int u = 2, dem = 0;
while ( N1 > 1 )
if ( N1 % u = 0 )
{
dem++;
printf( “%d ”, u);
N1 = N1 / u;
}
else
u++;
}
else
printf( “Khong the phan tich duoc” );
}
/*==============================*/
void main( ) /* Ham xu ly chinh cua chuong trinh */
{
clrscr( );
printf( “Phan tich so N thanh tich cua cac so nguyen to :\n” );
NhapSoN( N );
PhantichSoN( N );
printf ( “Nhan Enter de ket thuc ...” );
getch( );
}
Đề thi vào lớp 10 môn Toán |  Đáp án đề thi tốt nghiệp |  Đề thi Đại học |  Đề thi thử đại học môn Hóa |  Mẫu đơn xin việc |  Bài tiểu luận mẫu |  Ôn thi cao học 2014 |  Nghiên cứu khoa học |  Lập kế hoạch kinh doanh |  Bảng cân đối kế toán |  Đề thi chứng chỉ Tin học |  Tư tưởng Hồ Chí Minh |  Đề thi chứng chỉ Tiếng anh
Theo dõi chúng tôi
Đồng bộ tài khoản