1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài tập hướng dẫn thực hành

11 9 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Tập Hướng Dẫn Thực Hành
Thể loại bài tập
Định dạng
Số trang 11
Dung lượng 68,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BÀI TẬP HƯỚNG DẪN THỰC HÀNH Bài 1: Làm quen với ngôn ngữ lập trình C a. Viết chương trình tính chu vi diện tích hình vuông cạnh a, với a nhập từ bàn phím. b. Viết chương trình tính chu vi diện tích hình chữ nhật có 2 cạnh a, b nhập từ bàn phím. c. Viết chương trình tính tổng điểm, ĐTB của 3 môn thi toán, lý, hóa. d. Viết chương trình biện luận và tìm nghiệm x của phương trình bậc 1 ax+b=0, với a,b nhập từ bàn phím. e. Viết chương trình biện luận và tìm nghiệm x của phương trình bậc 2 ax2+bx+c=0, với a,b,c nhập từ bàn phím. f. Nhập vào một số từ 1 đến 10, in ra chữ tương ứng (1:”Một”, 2:”Hai”,…,10:”Mười”) Gợi ý giải bài: a. Chu vi= 4a , diện tích=aa b. Chu vi= 2(a+b), diện tích=ab c. Tổng điểm=toán+lý+hóa, dtb=(toán+lý+hóa)3 d. Nếu a=0, • b=0 =>Phương trình có vô số nghiệm • b=0 =>Phương trình vô nghiệm Nếu a=0 thì nghiệm x=ba; e. Nếu a=0, delta=bb4ac Nếu delta>0, phương trình có 2 nghiệm x1=(b+sqrt(delta))(2a); x2=(bsqrt(delta))(2a) Nếu delta=0, phương trình có nghiệm kép x=b(2a) Nếu deltagiải phương trình bậc nhất f. Dùng hàm switch (expression) { case constantexpression : statement(s); break; optional case constantexpression : statement(s); break; optional default : Optional statement(s); } g. Ví dụ bài giải câu b) include stdio.h include conio.h void main () { float Dai,Rong,Chuvi,Dientich; printf(Chieu dai =); scanf(%f,Dai); printf(Chieu rong =); scanf(%f,Rong); Chuvi=(Dai+Rong)2;

Trang 1

BÀI TẬP HƯỚNG DẪN THỰC HÀNH

Bài 1: Làm quen với ngôn ngữ lập trình C

a Viết chương trình tính chu vi / diện tích hình vuông cạnh a, với a nhập từ bàn phím

b Viết chương trình tính chu vi / diện tích hình chữ nhật có 2 cạnh a, b nhập từ bàn phím

c Viết chương trình tính tổng điểm, ĐTB của 3 môn thi toán, lý, hóa

d Viết chương trình biện luận và tìm nghiệm x của phương trình bậc 1 ax+b=0, với a,b nhập từ bàn phím

e Viết chương trình biện luận và tìm nghiệm x của phương trình bậc 2 ax2+bx+c=0, với a,b,c nhập từ bàn phím

f Nhập vào một số từ 1 đến 10, in ra chữ tương ứng (1:”Một”, 2:”Hai”,…,10:”Mười”)

Gợi ý giải bài:

a Chu vi= 4*a , diện tích=a*a

b Chu vi= 2*(a+b), diện tích=a*b

c Tổng điểm=toán+lý+hóa, dtb=(toán+lý+hóa)/3

d - Nếu a=0,

 b=0 =>Phương trình có vô số nghiệm

 b!=0 =>Phương trình vô nghiệm

- Nếu a!=0 thì nghiệm x=-b/a;

e Nếu a!=0, delta=b*b-4*a*c

- Nếu delta>0, phương trình có 2 nghiệm x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a)

- Nếu delta=0, phương trình có nghiệm kép x=-b/(2*a)

- Nếu delta<0, phương trình vô nghiệm

Nếu a=0,=>giải phương trình bậc nhất

f Dùng hàm switch (expression) {

case constant-expression : statement(s);

break; /* optional */

case constant-expression : statement(s);

break; /* optional */

default : /* Optional */ statement(s);

}

g Ví dụ bài giải câu b)

#include "stdio.h"

#include "conio.h"

void main ()

{

float Dai,Rong,Chuvi,Dientich;

printf("Chieu dai =");

scanf("%f",&Dai);

printf("Chieu rong =");

scanf("%f",&Rong);

Chuvi=(Dai+Rong)*2;

Dientich=Dai*Rong;

Trang 2

printf("Chu vi HCN = %0.2f",Chuvi);

printf("Dien tich HCN = %0.2f",Dientich);

getch();

//Return 0;

}

h Ví dụ bài giải câu d)

#include "stdio.h"

#include "conio.h"

void main ()

{

float a,b,x;

printf("Chuong trinh bien luan phuong trinh bac nhat ax+b=0\n"); printf("Nhap HS a =");

scanf("%f",&a);

printf("Nhap HS b =");

scanf("%f",&b);

if (a==0)

{

if (b==0) printf("Phuong trinh co vo so nghiem\n”);

else printf("Phuong trinh vo nghiem\n”);

}

else

{

x=-b/a;

printf("Phuong trinh co nghiem duy nhat x = %0.2f",x);

}

getch();

}

i Ví dụ bài giải câu e)

#include "stdio.h"

#include "conio.h"

#include "math.h"

void main ()

{

float a,b,c,x,x1,x2,delta;

printf("Chuong trinh bien luan phuong trinh bac hai ax2+bx+c=0\n"); printf("Nhap HS a =");

scanf("%f",&a);

printf("Nhap HS b =");

scanf("%f",&b);

printf("Nhap HS c =");

scanf("%f",&c);

Trang 3

if (a==0)

{

printf("Phuong trinh tro thanh phuong trinh bac nhat\n”); }

else

{

delta=b*b-4*a*c;

if(delta<0) printf("Phuong trinh vo nghiem“);

else if (delta=0)

{

printf("Phuong trinh co nghiem duy nhat \n“); x=-b/(2*a);

printf("x = %0.2f",x);

}

else

{

printf("Phuong trinh co 2 nghiem phan biet:\n “); x1=(-b+sqrt(delta))/(2*a);

x2=(-b-sqrt(delta))/(2*a);

printf("x1 = %0.2f\n",x1);

printf("x2 = %0.2f\n",x2);

}

}

getch();

}

j Ví dụ bài giải câu f)

#include "stdio.h"

#include "conio.h"

void main ()

{

int n=0;

do

{

printf("Nhap vao so:");

scanf("%d",&n);

switch(n){

case 0 : printf("Khong\n");

break;

case 1 : printf("Mot\n");

break;

case 2 : printf("Hai\n");

break;

case 3 : printf("Ba\n");

Trang 4

case 4 : printf("Bon\n");

break;

case 5 : printf("Nam\n");

break;

case 6 : printf("Sau\n");

break;

case 7 : printf("Bay\n");

break;

case 8 : printf("Tam\n");

break;

case 9 : printf("Chin\n");

break;

default: printf("So khong hop le\n");

}

}while (n>=0 & n<10);

//getch();

}

Viết chương trình tính tổng

S=1+2+…+n

#include "stdio.h"

#include "conio.h"

void main()

{

int n,i;

long s=0;

printf("Nhap n=");

scanf("%d",&n);

for (i=1;i<=n;i++)

s=s+i;

printf("Tong=%d",s);

getch();

}

Bài 2: Một số bài tập về đệ qui

a Viết chương trình n!

Hướng dẫn giải:

Viết chương trình không dùng đệ qui

#include<stdio.h>

#include "stdio.h"

#include "conio.h"

void main() {

int n,i;

long s=0;

printf("Nhap N=");

scanf("%d",&n);

i=1;

while(i<=n) {

s=s+i;

i++;

} printf("Tong=%d",s);

getch();

}

Dùng đệ qui

#include<stdio.h>

#include<conio.h>

long giaithua(int x);

main() {

int n;

printf("\Nhap so can tinh giai thua: "); scanf("%d", &n);

kq=giaithua(n);

printf("\n %d! = %ld", n, kq);

getch();

} long giaithua(int x) //Hàm sử dụng đệ qui {

if(x==0) return 1;

else return x*giaithua(x-1);

}

Trang 5

#include<conio.h>

long giaithua(int x);

main()

{

int n;

printf("\Nhap so can tinh giai thua: "); scanf("%d", &n);

kq=giaithua(n);

printf("\n %d! = %ld", n, kq);

getch();

}

long giaithua(int x) //Hàm không sử dụng đệ qui {

int i;

long g=1;

for(i=1;i<=x;i++)

return g;

}

b Viết chương trình tính S=1+2+…+n

#include<stdio.h>

#include<conio.h>

long Tong(int x);

main()

{

int n;

long kq;

printf("\Nhap so can tinh tong: "); scanf("%d", &n);

kq=Tong(n);

printf("\n %d! = %ld", n, kq);

getch();

}

long Tong(int x) //Hàm sử dụng đệ qui

{

if(x==0) return 0;

else return x+Tong(x-1);

}

c Viết chương trình di chuyển tháp Hà Nội

#include<stdio.h>

#include<conio.h>

void HaNoi(int n, char A, char B, char C);

Trang 6

void main()

{

int n;

long kq;

printf("\Nhap so dia can chuyen: ");

scanf("%d", &n);

HaNoi(n,'A','B','C');

getch();

}

void HaNoi(int n, char A, char B, char C){

if (n==1)

printf("Chuyen dia tu cot %c sang cot %c\n",A,C); else{

HaNoi(n -1, A, C, B);

HaNoi(1, A, B, C);

HaNoi(n -1, B, A, C);

} }

Bài 3.1: Viết chương trình chính xuất menu cho phép chọn các chức năng:

1 Nhập vào một mảng từ bàn phím

2 In danh sách ra màn hình

3 Kiểm tra xem mảng có được sắp xếp theo thứ tự tăng dần hay không

4 Chèn một phần tử vào cuối mảng

5 Chèn một phần tử và đầu mảng

6 Sắp xếp mảng theo thứ tự tăng dần

7 Xóa phần tử cuối của mảng

8 Đếm số phần tử của mảng

9 Chèn một phần tử vào vị trí thứ n (n nhập từ bàn phím) của mảng

10 Xóa phần tử ở vị trí thứ n (n nhập từ bàn phím) của mảng

#include "stdio.h"

#include "conio.h"

#include "stdlib.h"

void main ()

{

int chon;

printf("1 Nhap mang\n");

printf("2 In mang\n");

printf("3 Kiem tra mang tang dan\n");

printf("4 Chen cuoi mang\n");

printf("5 Chen phan tu vao dau mang\n");

printf("6 Sap xep mang tang dan\n");

printf("7 Xoa phan tu vao cuoi mang\n");

Trang 7

printf("8 Dem so phan tu trong mang\n");

printf("9 Chen phan tu vao mot vi tri trong mang\n");

printf("10 Xoa phan tu tai mot vi tri trong mang\n");

printf("0 Thoat\n");

do

{

scanf("%d",&chon);

switch(chon){

case 0 : exit(0);

case 1 : printf("Ban chon nhap mang\n");

break;

case 2 : printf("Ban chon In mang\n");

break;

case 3 : printf("Ban chon Kiem tra mang\n");

break;

case 4 : printf("Ban chon Chen cuoi mang\n");

break;

case 5 : printf("Ban chon Chen dau mang\n");

break;

case 6 : printf("Ban chon Sap xep mang tang\n");

break;

case 7 : printf("Ban chon Xoa phan tu cuoi\n");

break;

case 8 : printf("Ban chon Dem so phan tu trong mang\n");

break;

case 9 : printf("Ban chon Chen phan tu vao mot vi tri\n");

break;

case 10 : printf("Ban chon Xoa phan tu tai mot vi tri\n");

break;

default: printf("Chon khong hop le\n");

}

}while (chon!=0 );

}

Bài 3.2: Viết các chương trình con để thực hiện các chức năng trên

1 Nhập vào một mảng từ bàn phím

2 In danh sách ra màn hình

3 Kiểm tra xem mảng có được sắp xếp theo thứ tự tăng dần hay không

4 Chèn một phần tử vào cuối mảng

5 Chèn một phần tử và đầu mảng

6 Sắp xếp mảng theo thứ tự tăng dần

Trang 8

7 Xóa phần tử cuối của mảng

8 Đếm số phần tử của mảng

9 Chèn một phần tử vào vị trí thứ n (n nhập từ bàn phím) của mảng

10 Xóa phần tử ở vị trí thứ n (n nhập từ bàn phím) của mảng

Viết các chương trình con để thực hiện các chức năng trên

1 Hàm nhập mảng a, n phần tử

void nhapmang(int a[], int n)

{

int i;

for( i=0;i<n;i++)

{

printf("a[%d]=",i);

scanf("%d",&a[i]);

}

}

2 Hàm In mảng a, n phần tử

void inmang(int a[], int n)

{

int i;

for( i=0;i<n;i++)

printf("[%d] ",a[i]);

}

3 Hàm kiểm tra mảng a có đước sắp xếp không, n phần tử

int kiemtramang(int a[], int n)

{

int i;

for( i=0;i<n-1;i++)

{

if(a[i]>a[i+1]) return -1;

}

return 1;

}

4 Chèn phần tử vào cuối mảng

void chencuoimang(int a[], int &n, int x)

{

a[n]=x;

n++;

}

5 Chèn phần tử vào đầu mảng

void chendaumang(int a[], int &n, int x)

Trang 9

int i;

for(i = n;i>0;i )

a[0]=x;

n++;

}

6 Sắp xếp mảng tăng dần

void sapxepmang(int a[], int n)

{

int I,j,tam;

for(i = 0;i<n;i++)

for(j = i+1;j<n;j++) if(a[i]>a[j])

Hoanvi(a[i],a[j]) }

void Hoanvi(int &a, int &b)

{

int t=a; a=b; b=t;

}

7 Xóa phần tử cuối mảng

void xoacuoimang(int a[],int &n);

{

a[n-1]=NULL;

n ;

}

8 Đếm số phần tử trong mảng

int demphantu(int a[])

{ int i=0;

while (a[i]!=NULL) i++;

return i;

}

9 Chèn phần tử vào vị trí k

void chen1vitri(int a[], int &n, int x, int k)

{

int i;

if(k<0 ||k>=n) printf(“Vi tri chen khong hop le”); else

{

Trang 10

for(i = n;i>k;i )

n++;

}

}

10 Xoa phan tu tai vi tri k

void xoa1vtri(int a[], int &n, int k)

{

int i;

if(k<0 ||k>=n) printf(“Vi tri chen khong hop le”);

else

{

for(i = k;i<n-1;i++)

n ;

}

}

Bài tập phần danh sách

Bài 4: Cho một danh sách chứa các số nguyên Viết các chương trình con để:

1 Nhập các phần tử của danh sách từ bàn phím

2 In danh sách ra màn hình

3 Kiểm tra xem danh sách có được sắp xếp theo thứ tự tăng dần hay không

4 Chèn một phần tử vào cuối danh sách

5 Chèn một phần tử và đầu danh sách

6 Sắp xếp danh sách theo thứ tự tăng dần

7 Xóa phần tử cuối của danh sách

8 Đếm số phần tử của danh sách

9 Chèn một phần tử vào vị trí thứ n (n nhập từ bàn phím) của danh sách

10 Xóa phần tử ở vị trí thứ n (n nhập từ bàn phím) của danh sách

Bài tập phần sắp xếp

Bài 5: Viết chương trình chính với menu cho phép chọn các chức năng tương ứng:

1 Nhập vào mảng n phần tử

Trang 11

2 Sắp xếp mảng theo giải thuật

a Phương pháp chọn (Selection sort)

b Phương pháp chèn (Insertion sort)

c Phương pháp đổi chỗ (Interchange sort)

d Phương pháp nổi bọt (Bubble sort)

e Phương pháp sắp xếp nhanh (Quicksort )

Ngày đăng: 21/01/2024, 17:41

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w