Một số bài tập lập trình C căn bản
Số trang: 6
Loại file: doc
Dung lượng: 60.00 KB
Lượt xem: 32
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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 trích xuất từ tài liệu:
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 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 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ó 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 ) { ...
Nội dung trích xuất từ tài liệu:
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 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 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ó 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 ) { ...
Tìm kiếm theo từ khóa liên quan:
công nghệ thông tin kỹ thuật lập trình lập trình C căn bản quản trị mạngGợi ý tài liệu liên quan:
-
52 trang 425 1 0
-
24 trang 351 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 308 0 0 -
74 trang 291 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 288 0 0 -
96 trang 288 0 0
-
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 276 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 269 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 269 1 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 259 0 0