1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Một số bài tập lập trình C căn bản pdf

6 1,3K 27

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 60 KB

Nội dung

Một số bài tập lập tŕnh C căn bảnCreated by NgoHung Vấn đề 2: Chương tŕnh con 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

Trang 1

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

Created by NgoHung

Vấn đề 2: Chương tŕnh con

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ề 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 tŕnh:

/* 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( );

Trang 2

}

Trang 3

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ư t́m 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*b; k++) // Lap voi moi i co gia tri tu a den 1

if (k%a == 0 && k%b == 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;

}

Hoặc sử dụng hàm đă xây dựng:

long BSCNN( int a, int b)

{

return a*b/USCLN( a, b );

}

Trang 4

Bài toán số 2.3: Viết hàm kiểm tra số N có phải là số nguyên tố hat không?

Hướng dẫn: Khai báo hàm kiểm tra số nguyên tố có:

Tên hàm: KiemtraSNT

Dữ liệu trả về: int, ( 0 nếu không phải là số nguyên tố, là 1 nếu là số nguyên tố )

Tham số: tham trị là int N, số cần kiểm tra

Xử lư kiểm tra: Dựa trên ví dụ đă có ở phần trước

Nội dung hàm:

int KiemtraSNT( int N )

{

int ktrSNT = 1; // Khoi gan gia tri dung cho ktrSNT

for ( int i = 2; i <= N-1; i++ ) // Lap voi moi i co gia tri tu 2 den N-1

if ( N % i == 0 ) // Kiem tra xem N co’ chia het cho i hay khong

ktrSNT = 0; // Neu dung thi khong con la so nguyen to nua

return ktrSNT;

}

Cải tiến, không sử dụng biến phụ:

int KiemtraSNT( int N )

{

for ( int i = 2; i <= N-1; i++ ) // Lap voi moi i co gia tri tu 2 den N-1

if ( N % i == 0 ) // Kiem tra xem N co’ chia het cho i hay khong

return 0; // Neu dung thi khong con la so nguyen to nua

return 1; // Khong co gia tri tu 2 den N-1 ma N chia het

Bài toán số 2.4: Viết chương tŕnh thực hiện lần lượt các công việc sau:

- Lập thủ tục nhập ba số thực dương a , b , c từ bàn phím

- Lập thủ tục kiểm tra xem ba số trên có lập thành ba cạnh của tam giác hay không ?

- Viết hàm tính diện tích của tam giác

- Viết hoàn thiện chương tŕnh chính

Hướng dẫn:

- Thao tác nhập đơn giản:

void NhapTamGiac( long &a, long &b, long &c)

{

printf( “Nhap A=” ); scanf( “%d”, &a );

printf( “Nhap B=” ); scanf( “%d”, &b );

printf( “Nhap C=” ); scanf( “%d”, &c );

}

- Kiểm tra a, b, c lập thành ba cạnh của tam giác nếu tổng 2 cạnh luôn lớn hơn một cạnh

Trang 5

int KtraTamGiac( long a, long b, long c)

{

if (a+b > c && a+c > b && b+c > 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ó

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 tŕnh 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 h́nh 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 c ̣n 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á tŕnh 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á tŕnh 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 tŕnh:

Trang 6

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( );

}

Ngày đăng: 25/01/2014, 18:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w