1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo bài thực hành số 1 học phần thực hành kỹ thuật lập trình

22 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 thực hành số 1
Tác giả Trần Xuân Bách
Người hướng dẫn Lê Thị Hoa
Trường học Đại học Bách Khoa Hà Nội
Chuyên ngành Thực hành kỹ thuật lập trình
Thể loại Báo cáo
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 22
Dung lượng 5,4 MB

Nội dung

Viết một chương trình C nhập vào 3 số nguyên.. Viết hàm trả về con trỏ trỏ tới giá trị lớn nhất của một mảng các số double.. Viết hàm đảo ngược một mảng các số nguyên theo hai cách: dùng

Trang 1

TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO BÀI THỰC HÀNH SỐ 1 HỌC PHẦN: THỰC HÀNH KỸ THUẬT LẬP TRÌNH

Giảng viên hướng dẫn: Lê Thị Hoa

Mssv: 20215528

Hà Nội , năm 2023

Trang 2

Bài thực hành số 1 – Tuần 7

Mục lục nội dung

Bài 1.1 Viết một chương trình C nhập vào 3 số nguyên Thiết lập một con trỏ

để lần lượt trỏ tới từng số nguyên và hiển thị kết quả giá trị tham chiếu ngược của con trỏ 4

Bài 1.2 Viết chương trình in ra địa chỉ của 5 phần tử đầu tiên trong mảng được

định nghĩa sau đây: int a[7]= {13, -355, 235, 47, 67, 943, 1222}; 6

Bài 1.3 Viết chương trình nhập giá trị cho 3 biến số nguyên x, y, z kiểu int Sau

đó sử dụng duy nhất một con trỏ để cộng giá trị của mỗi biến thêm 100 7

Bài 1.4 Viết hàm countEven(int*, int) nhận một mảng số nguyên và kích thước

của mảng, trả về số lượng số chẵn trong mảng??? 9

Bài 1.5 Viết hàm trả về con trỏ trỏ tới giá trị lớn nhất của một mảng các số

double Nếu mảng rỗng hãy trả về NULL 10

Bài 1.6 Viết hàm đảo ngược một mảng các số nguyên theo hai cách: dùng chỉ

số và dùng con trỏ 12

Bài 1.7 Viết chương trình nhập vào một mảng các số nguyên với số lượng các

phần tử nhập từ bàn phím Sau đó sắp xếp mảng theo thứ tự tăng dần Hiển thị danh sách mảng trước và sau khi sắp xếp 14

Bài 1.8 Viết chương trình nhập vào một ma trận 2 chiều kích thước m*n với m

và n nhập từ bàn phím Sau đó đưa ra tổng các phần tử chẵn của ma trận đó 17

Bài 1.9 Viết chương trình in ra tất cả các dãy con của một dãy cho trước Ví dụ

dãy 1 3 4 2 có các dãy con sau: 21

Bài 1.10 Viết chương trình nhập vào 2 ma trận vuông cùng kích thước n*n,

trong đó n nhập từ bàn phím Sau đó tính tổng và tích của hai ma trận đó và đưa kết quả ra màn hình 23

Trang 3

Mục lục hình ảnh

Ảnh 1: Mã nguồn bài 1.1 4

Ảnh 2: Kết quả bài 1.1 4

Ảnh 3: Mã nguồn và kết quả bài 1.2 6

Ảnh 4: Mã nguồn bài 1.3 7

Ảnh 5: Kết quả bài 1.3 7

Ảnh 6: Mã Nguồn Bài 1.4 9

Ảnh 7: Kêt quả bài 1.4 9

Ảnh 8: Mã nguồn bài 1.5 10

Ảnh 9: Kết quả bài 1.5 10

Ảnh 10: Mã nguồn bài 1.6 12

Ảnh 11: Kết quả bài 1.6 12

Ảnh 12: Mã nguồn bài 1.7 14

Ảnh 13: Kết quả bài 1.7 15

Ảnh 14: Mã nguồn bài 1.8 17

Ảnh 15: Mã nguồn bài 1.8 ( ếp) 18

Ảnh 16: Kết quả bài 1.8 18

Ảnh 17: Mã nguồn bài 1.9 21

Ảnh 18: Kết quả bài 1.9 21

Ảnh 19: Mã nguồn bài 1.10 23

Ảnh 20: Mã nguồn bài 1.10 ( ếp) 23

Ảnh 21: Mã nguồn bài 1.10 ( ếp) 24

Ảnh 22: Mã nguồn bài 1.10 ( ếp) 24

Ảnh 23: Kết quả bài 1.10 25

Trang 4

Bài 1.1 Viết một chương trình C nhập vào 3 số nguyên Thiết lập một con trỏ

để lần lượt trỏ tới từng số nguyên và hiển thị kết quả giá trị tham chiếu ngược của con trỏ

Ảnh 1: Mã nguồn bài 1.1

Ảnh 2: Kết quả bài 1.1

Trang 5

//Bai 1.1 Viet mot chuong trinh C nhap vao 3 so nguyen Thiet lap mot con tro de lan luot tro toi tung so nguyen va hien thi ket qua gia tri tham chieu nguoc cua con tro //

//Luu y: Phep toan & tra ve dia chi cua bien

# include <stdio.h>

int main(){

int x, y, z;

int* ptr;

printf("Enter three integers: ");

scanf("%d %d %d", &x, &y, &z);

printf("\nThe three integers are:\n");

ptr = &x; // gan dia chi cua bien x cho con tro ptr

printf("x = %d\n", *ptr);

//*****************

int* ptrY,*ptrZ; // khai bao 2 con tro

ptrY= &y; ptrZ= &z; // gan dia chi bien y va z lan luot cho con tro tuong ung printf("y = %d\nz = %d\n",*ptrY,*ptrZ);

//Tran Xuan Bach - 20215528

//*****************/

return 0;

}

Trang 6

Bài 1.2 Viết chương trình in ra địa chỉ của 5 phần tử đầu tiên trong mảng được

định nghĩa sau đây: int a[7]= {13, -355, 235, 47, 67, 943, 1222};

Lưu ý:

Để in địa chỉ con trỏ các bạn sử dụng ký tự định dạng %p

Để lấy địa chỉ của một biến ta có thể dùng phép toán &

Ảnh 3: Mã nguồn và kết quả bài 1.2

//bai 1.2 Viet chuong trinh in ra dia chi cua 5 phan tu dau tien trong mang duoc dinh

nghia sau day:

//int a[7]= {13, -355, 235, 47, 67, 943, 1222};

#include <stdio.h>

int main(){

int a[7]= {13, -355, 235, 47, 67, 943, 1222};

printf("address of first five elements in memory.\n");

for (int i=0; i<5;i++) printf("&a[%d] = %p\n",i,&a[i]); //in ra dia chi cua phan

tu tuong ung

//Tran Xuan Bach 20215528

return 0;

}

Trang 7

Bài 1.3 Viết chương trình yêu cầu nhập giá trị cho 3 biến số nguyên x, y, z kiểu

int Sau đó sử dụng duy nhất một con trỏ để cộng giá trị của mỗi biến thêm 100

Ảnh 4: Mã nguồn bài 1.3

Ảnh 5: Kết quả bài 1.3

//Bài 1.3 Viết chương trình yêu cầu nhập giá trị cho 3 biến số nguyên x, y, z kiểu int

Sau đó sử dụng duy nhất một con trỏ để cộng giá trị của mỗi biến thêm 100

scanf("%d %d %d", &x, &y, &z);

printf("Here are the values of x, y, and z:\n");

printf("%d %d %d\n", x, y, z);

// /*****************

// gan lan luot dia chi cua bien x, y, z cho con tro ptr sau do cong 100 cho cac

tham chieu nguoc tuong ung

Trang 9

Bài 1.4 Viết hàm countEven(int*, int) nhận một mảng số nguyên và kích thước

của mảng, trả về số lượng số chẵn trong mảng???

Ảnh 6: Mã Nguồn Bài 1.4

Ảnh 7: Kêt quả bài 1.4

/ / Bài 1.4 Vi ế t hàm countEven(int*, int) nh ậ n m ộ t m ả ng s ố nguyên và kích thư ớc c ủa m ả ng, trả về số lượng số chẵn trong mảng???

int counteven(int* arr, int size){

int count = 0;

// /*****************

for(int i=0;i<size;i++){ //vong lap duyet qua cac phan tu trong mang

if(!(*(arr+i)%2)) count++; // Neu phan tu dang duyet chia het cho hai thi

tang bien dem 1 dv

Trang 10

Bài 1.5 Viết hàm trả về con trỏ trỏ tới giá trị lớn nhất của một mảng các số

double Nếu mảng rỗng hãy trả về NULL

for(int i= 0; i< size; i++){ //vong lap duyet cac phan tu cua a

if(*(a+i)>*max) max=a+i; //neu phan tu dang duyet lon hon max thi

gan gia tri phan tu hien tai cho max

}

//Tran Xuan Bach - 20215528

Trang 11

// *****************/

return max;

}

Trang 12

Bài 1.6 Viết hàm đảo ngược một mảng các số nguyên theo hai cách: dùng chỉ

số và dùng con trỏ Ví dụ mảng đầu vào là [9, 1, 4, 5, 7] thì kết quả là [7, 5, 4,

Trang 13

Bài 1.7 Viết chương trình nhập vào một mảng các số nguyên với số lượng các

phần tử nhập từ bàn phím Sau đó sắp xếp mảng theo thứ tự tăng dần Hiển thị danh sách mảng trước và sau khi sắp xếp

Yêu cầu chỉ sử dụng con trỏ để truy cập mảng, không truy cập theo index mảng

Ảnh 12: Mã nguồn bài 1.7

Trang 14

Ảnh 13: Kết quả bài 1.7

//Bài 1.7 Viết chương trình nhập vào một mảng các số nguyên với

số lượng các phần tử nhập từ bàn phím Sau đó sắp xếp mảng theo

thứ tự tăng dần Hiển thị danh sách mảng trước và sau khi sắp xếp

//

//Yêu cầu chỉ sử dụng con trỏ để truy cập mảng, không truy cập theo index mảng

#include <stdio.h>

#include <new> // them thu vien <new> de su dung ham new[] va delete[] trong

viec cap phat va xoa bo nho dong cho mang

// selection sort : xet tung vi tri cua mang va xep phan tu be nhat trong

cac phan tu con lai vao vi tri dang xet

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

int *min= a +i;

Trang 16

Bài 1.8 Viết chương trình nhập vào một ma trận 2 chiều kích thước m*n với m

và n nhập từ bàn phím Sau đó đưa ra tổng các phần tử chẵn của ma trận đó

Ảnh 14: Mã nguồn bài 1.8

Trang 17

Ảnh 15: Mã nguồn bài 1.8 ( ếp)

Ảnh 16: Kết quả bài 1.8

//Bai 1.8 Viet chuong trinh nhap vao mot ma tran 2 chieu kich thuoc m*n voi m va n nhap

tu ban phim Sau do dua ra tong cac phan tu chan cua ma tran do

#include <stdio.h>

#include <new> // them thu vien <new> de dung ham cap bo nho dong

void allocate_mem(int ***mt, int m, int n){

//#Allocate memory for the matrix

// /*****************

Trang 18

Bài 1.9 Viết chương trình in ra tất cả các dãy con của một dãy cho trước Ví dụ

Ảnh 17: Mã nguồn bài 1.9

Ảnh 18: Kết quả bài 1.9

Trang 19

//Bai 1.9 Viet chuong trinh in ra tat ca cac day con cua mot day cho truoc Vi du day 1

3 4 2 co cac day con sau:

#include <stdio.h>

#define arrSize 4 //

void printChildArray(int arr[],int size){

for(int i = 0; i < size; i++) // vong lap voi i la phan tu dau cua day con for(int j = i; j < size; j++){ // vong lap voi j la phan tu cuoi cua day con

for(int k = i; k <= j ; k++) // vong lap in day con i -> j

int arr[arrSize]={1,3,4,2}; // arrsize = 4

printf("Day da cho la: ");

for(int i = 0; i < arrSize; i++)

Trang 20

Ảnh 21: Mã nguồn bài 1.10 ( ếp)

Ảnh 22: Mã nguồn bài 1.10 ( ếp)

Trang 21

Ảnh 23: Kết quả bài 1.10

//Bai 1.10 Viet chuong trinh nhap vao 2 ma tran vuong cung kich thuoc n*n, trong do n

nhap tu ban phim Sau do tinh tong va tich cua hai ma tran do va dua ket qua ra man

hinh

//Yeu cau su dung cap phat dong de cap phat bo nho cho cac ma tran

#include <stdio.h>

#include <new> // them thu vien <new> de dung ham cap bo nho dong

void allocate_mem(int ***mt, int n){

//#Allocate memory for the matrix

*mt = new int*[n]; // cap phat bo nho cho mang mt chua n con tro cua con

tro

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

(*mt)[i] = new int[n]; // cap phat bo nho cho moi con tro n[i] chua n so

nguyen

}

void input(int **mt, int n,char name){

//#Input elements of the matrix

//nhap cac phan tu cua mang

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

void output(int **mt, int n){

//# Print all elements of the matrix

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

Trang 22

int** addMatrix(int **A,int **B, int n){ // ham cong ma tran

int **result; // tao ma tran moi chua ket qua

allocate_mem(&result, n); // cap phat bo nho

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

for(int j=0;j<n;j++)

result[i][j]= A[i][j]+B[i][j]; // thuc hien phep cong ma tran

return result; // tra lai con tro de co the giai phong bo nho , tranh memory leak

}

int** timesMatrix(int **A,int **B, int n){ // ham nhan ma tran

int **result; // tao ma tran moi chua ket qua

allocate_mem(&result, n); // cap phat bo nho

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

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

delete [] mt[i]; // giai phong cac hang

delete [] mt; //giai phong mt

Ngày đăng: 11/06/2024, 17:41

w