Danh mục tài liệu

Bài giảng C Programming introduction: Tuần 14 - Cấu trúc

Số trang: 34      Loại file: pdf      Dung lượng: 1.35 MB      Lượt xem: 15      Lượt tải: 0    
Xem trước 4 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng "C Programming introduction: Tuần 14 - Cấu trúc" trình bày những nội dung chính sau đây: Khai báo cấu trúc; Sử dụng typedef; Truy cập vào các trường; Bài tập thực hành;... Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài giảng C Programming introduction: Tuần 14 - Cấu trúcNội dung• Cấu trúc – Ôn tập • Khai báo cấu trúc • Sử dụng typedef • Truy cập vào các trường – Thực hànhCấu trúc• Cấu trúc trong C là một tập hợp các phần tử có kiểu khác nhau.Định nghĩa struct trong Cstruct struct-name{ field-type1 field-name1; field-type2 field-name2; field-type3 field-name3;...};VD• Định nghĩa struct sinh viên có các thông tin tên, tuổi, và điểmstruct student { char name[20]; int age; float grade; };VD• Định nghĩa cấu trúc car chứa các thông tin tên, model, và năm sản xuất struct car { char* make; char* model; int year; };Khai báo và khởi tạo biến• Sử dụng từ khóa struct khi khai báo biếnstruct student s1;struct car mycar;struct student s1 = (“Nguyen Le”, 19, 8.0);struct car mycar = (“Fiat”, Punto, 2004);Định nghĩa cấu trúc với typedeftypedef struct student { char name[20]; int age; float grade; } student_t; Chương trình có các kiểu mới student_ttypedef struct car { và car_t char* make; char* model; int year; }car_t;Khai báo biến• Với typedef, không cần sử dụng từ khóa struct khi khai báo biến• VD: car_t mycar; student_t excellentP;Truy cập vào thành viên củastruct• Sử dụng toán tử ‘.’ car_t mycar; mycar.year = 2004; student_t excellentp; excellentp.age = 18; excellentp.grade = 7.8;Bài tập 14.1a) Tạo ra cấu trúc Date chứa các trường ngày, tháng, nămb) Viết hàm nhập dữ liệu cho cấu trúc có kiểm tra tính hợp lệ của dữ liệuc) Viết hàm datecmp để so sánh hai ngày date_1 và date_2 -1 nếu date_1 < date_2 0 nếu date_1 = date_2 1 nếu date_1 > date_2d) Viết chương trình yêu cầu người dùng nhập vào hai ngày và in ra kết quả so sánh VD: 2/10/1997 > 23/8/1997Lời giải#include typedef struct date{ unsigned char day; unsigned char month; int nam;}date_t;Lời giảidate input_date(){ date tmp; do { printf(The day (between 1 and 31):); scanf(%u,&tmp.day); } while ((tmp.day 31)) do { printf(The month (between 1 and 12):); scanf(%u,&tmp.month); } while ((tmp.day 12)) do { printf(The year (between 1 and 10000):); scanf(%d,&tmp.year); } while ((tmp.day 1000)) return tmp;}Lời giảiint datecmp(date d1, date d2){ if (d1.year < d2.year) return -1; else if (d1.year > d2.year) return 1; else { if (d1.month < d2.month) return -1; else if (d1.month > d2.month) return 1; else { if (d1.day < d2.day) return -1; else if (d1.day > d2.day) return 1; else return 0; } }}Lời giảiint main(){ date date1, date2; int m; printf(Enter the first date. ); date1= input_date(); printf(Enter the second date. ); date2= input_date(); m = datecmp(date1, date2); if (m==0) printf(Two date are identical. ); else if (mBài tập 14.2• Viết chương trình sử dụng cấu trúc để lưu thông tin thời tiết trong tháng – Tổng lượng mưa – Nhiệt độ cao nhất – Nhiệt độ thấp nhất – Nhiệt độ trung bình• Chương trình sử dụng mảng 12 phần tử để lưu thông tin thời tiết các tháng trong năm. Chương trình yêu cầu người dùng nhập thông tin từng tháng, tính toán và in ra lượng mưa trung bình, tổng lượng mưa, nhiệt độ cao nhất và nhiệt độ thấp nhất trong năm.• Kiểm tra dữ liệu: Nhiệt độ nằm trong khoảng -40 đến 50 độ Celcius.Lời giải#include typedef struct wt{ int total_rain; // in mm int high_temp; // in celcius int low_temp;}wearther;const int MONTHS = 12;Lời giảiint main() { weather data[MONTHS]; int i; char months[MONTHS][10]={January, February, March, April}; int total_rain = 0; int max_temp = -100; int max_month = 0; int min_temp = 100; int min_month = 0;// read input data for each month for (i = 0; i < MONTHS; i++) { printf(Weather Data for %d: , months[i]); printf( Total Rainfall (mm): ); scanf(%d,&data[i].total_rain); printf( High Temperature (C): ); scanf(%d,&data[i].high_temp); printf( Low Temperature (C): ); scanf(%d,&data[i].low_temp); }Lời giải // find min, max temperature for (i = 0; i < MONTHS; i++) { total_rain += data[i].total_rain; if (max_temp < data[i].high_temp) { max_temp = data[i].high_temp; max_month = i; } if (min_temp > data[i].low_temp) { min_temp = data[i].low_temp; min_month = i; } } printf ( Weather Statistic for the Year: ; printf ( Total Rainfall: %d mm , total_rain); printf ( Monthly Rainfall: %2.3f mm , double(total_rain)/MONTHS ); printf ( Highest Temperature: : %d °C in %s , max_temp, months[max_month]); printf ( Lowest Temperature: : %d °C in %s , min_temp, months[min_month]); return 0;}Bài tập 14.3 • Viết chương trình quản ...

Tài liệu được xem nhiều:

Tài liệu có liên quan: