Viết chương trình C để chuyển đổi một số nguyên [theo ngày] thành năm, tháng và ngày, giả sử rằng tất cả các tháng có 30 ngày và tất cả các năm có 365 ngày
Mã C
#include
int main[] {
int ndays, y, m, d;
printf["Input no. of days: "];
scanf["%d", &ndays];
y = [int] ndays/365;
ndays = ndays-[365*y];
m = [int]ndays/30;
d = [int]ndays-[m*30];
printf[" %d Year[s] \n %d Month[s] \n %d Day[s]", y, m, d];
return 0;
}
Đầu ra mẫu
Input no. of days: 2535 6 Year[s] 11 Month[s] 15 Day[s]
Sơ đồ
Trình chỉnh sửa mã lập trình C
Đóng góp mã và nhận xét của bạn thông qua Disqus
Trước. Viết chương trình C để chuyển đổi một số nguyên đã cho [tính bằng giây] thành giờ, phút và giây.
Tiếp theo. Viết chương trình C nhận 4 số nguyên p, q, r, s từ người dùng trong đó q, r và s là số dương và p là số chẵn. Nếu q lớn hơn r và s lớn hơn p và nếu tổng của r và s lớn hơn tổng của p và q in ra "Giá trị đúng", ngược lại in ra "Giá trị sai".
Mức độ khó của bài tập này là gì?
Dễ dàng trung bình khóKiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource
Chia sẻ Hướng dẫn / Bài tập này trên. Facebook và Twitter
Lập trình C. Lời khuyên trong ngày
Đâu là sự khác biệt giữa forkvà thread?
Một ngã ba cung cấp cho bạn một quy trình hoàn toàn mới, là bản sao của quy trình hiện tại, với cùng các đoạn mã. Khi hình ảnh bộ nhớ thay đổi [thông thường, điều này là do hành vi khác nhau của hai quy trình], bạn sẽ có một sự tách biệt giữa các hình ảnh bộ nhớ [Sao chép khi ghi], tuy nhiên mã thực thi vẫn giữ nguyên. Các tác vụ không chia sẻ bộ nhớ trừ khi chúng sử dụng một số nguyên mẫu Giao tiếp giữa các quá trình [IPC]
Một tiến trình có thể có nhiều luồng, mỗi luồng thực thi song song trong cùng ngữ cảnh của tiến trình. Bộ nhớ và các tài nguyên khác được chia sẻ giữa các luồng, do đó dữ liệu được chia sẻ phải được truy cập thông qua một số đối tượng nguyên thủy và đồng bộ hóa cho phép bạn tránh hỏng dữ liệu
Nhưng nó không phải là tệp thực thi hoàn chỉnh vì nó không có 'C' và các chức năng khác đi kèm
Liên kết các chương trình
'Trình liên kết' tập hợp các hàm I/O, một số hàm thư viện và các hàm là một phần của chương trình nguồn thành chương trình thực thi cuối cùng
Thực thi chương trình
‘Loader’ là phần mềm đã sẵn sàng để thực thi chương trình vào bộ nhớ
Trong quá trình thực thi, chương trình đọc dữ liệu từ người dùng, xử lý dữ liệu và chuẩn bị đầu ra
Trong lập trình C, chúng ta có thể chuyển đổi giá trị của một kiểu dữ liệu [
5#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }
6,#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }
7, v.v. ] sang người khác. Quá trình này được gọi là chuyển đổi loại. Hãy xem một ví dụ,#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }#include int main[] { printf["%d", number]; return 0; } // Output: 34
Ở đây, chúng tôi đang gán giá trị kép 34. 78 đến biến số nguyên. Trong trường hợp này, giá trị kép được tự động chuyển thành giá trị nguyên 34
Kiểu chuyển đổi này được gọi là chuyển đổi kiểu ẩn. Trong C, có hai loại chuyển đổi kiểu
- Chuyển đổi ngầm định
- Chuyển đổi rõ ràng
Chuyển đổi kiểu ngầm định trong C
Như đã đề cập trước đó, trong chuyển đổi kiểu ẩn, giá trị của một loại được tự động chuyển thành giá trị của loại khác. Ví dụ,
#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
đầu ra
Double Value: 4150.12 Integer Value: 4150
Ví dụ trên có một biến kép có giá trị 4150. 12. Lưu ý rằng chúng tôi đã gán giá trị kép cho một biến số nguyên
________số 8Tại đây, trình biên dịch C sẽ tự động chuyển đổi giá trị kép 4150. 12 đến giá trị số nguyên 4150
Vì quá trình chuyển đổi diễn ra tự động nên loại chuyển đổi này được gọi là chuyển đổi kiểu ẩn
Thí dụ. Chuyển đổi loại ngầm định
#include int main[] { // character variable char alphabet = 'a'; printf["Character Value: %c\n", alphabet];
// assign character value to integer variable int number = alphabet;
printf["Integer Value: %d", number]; return 0; }đầu ra
Input no. of days: 2535 6 Year[s] 11 Month[s] 15 Day[s]
0Đoạn mã trên đã tạo một biến ký tự alphabet có giá trị
8. Lưu ý rằng chúng tôi đang gán bảng chữ cái cho một biến số nguyên#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }Input no. of days: 2535 6 Year[s] 11 Month[s] 15 Day[s]
2Tại đây, trình biên dịch C sẽ tự động chuyển đổi ký tự
8 thành số nguyên 97. Điều này là do, trong lập trình C, các ký tự được lưu trữ bên trong dưới dạng các giá trị số nguyên được gọi là Giá trị ASCII#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }ASCII định nghĩa một bộ ký tự để mã hóa văn bản trong máy tính. Trong bảng mã ASCII, ký tự
8 có giá trị nguyên là 97, đó là lý do tại sao ký tự#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }
8 được tự động chuyển đổi thành số nguyên 97#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }Nếu bạn muốn tìm hiểu thêm về cách tìm giá trị ASCII, hãy truy cập tìm giá trị ASCII của ký tự trong C
Chuyển đổi loại rõ ràng trong C
Trong chuyển đổi loại rõ ràng, chúng tôi chuyển đổi thủ công các giá trị của một loại dữ liệu sang loại khác. Ví dụ,
Input no. of days: 2535 6 Year[s] 11 Month[s] 15 Day[s]
6đầu ra
Input no. of days: 2535 6 Year[s] 11 Month[s] 15 Day[s]
7Chúng ta đã tạo một biến số nguyên có tên là number với giá trị 35 trong chương trình trên. Chú ý mã,
Input no. of days: 2535 6 Year[s] 11 Month[s] 15 Day[s]
8Nơi đây,
Double Value: 4150.12 Integer Value: 4150
2 - đại diện cho loại dữ liệu mà số sẽ được chuyển đổiDouble Value: 4150.12 Integer Value: 4150
3 - giá trị sẽ được chuyển đổi thành loại
7#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }
Thí dụ. Chuyển đổi loại rõ ràng
0#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }đầu ra
1#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }Chúng tôi đã tạo một biến
Double Value: 4150.12 Integer Value: 4150
3 với giá trị 97 trong đoạn mã trên. Lưu ý rằng chúng tôi đang chuyển đổi số nguyên này thành ký tự
2#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }Nơi đây,
Double Value: 4150.12 Integer Value: 4150
6 - chuyển đổi rõ ràng số thành ký tựDouble Value: 4150.12 Integer Value: 4150
3 - giá trị sẽ được chuyển đổi thành loạiDouble Value: 4150.12 Integer Value: 4150
8
Mất dữ liệu khi chuyển đổi loại
Trong các ví dụ trước của chúng tôi, khi chúng tôi chuyển đổi một giá trị kiểu kép thành kiểu số nguyên, dữ liệu sau số thập phân sẽ bị mất
3#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }đầu ra
4#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }Đây, dữ liệu 4150. 12 được chuyển thành 4150. Trong chuyển đổi này, dữ liệu sau dấu thập phân,. 12 bị mất
Điều này là do
7 là loại dữ liệu lớn hơn [8 byte] so với#include int main[] { // create a double variable double value = 4150.12; printf["Double Value: %.2lf\n", value];
// convert double value to integer int number = value;
printf["Integer Value: %d", number]; return 0; }
0 [4 byte] và khi chúng tôi chuyển đổi dữ liệu từ loại lớn hơn sang nhỏ hơn, sẽ xảy ra tình trạng mất dữ liệuint number = value;
Tương tự, có một hệ thống phân cấp các kiểu dữ liệu trong lập trình C. Dựa trên cấu trúc phân cấp, nếu loại dữ liệu cao hơn được chuyển đổi thành loại thấp hơn thì dữ liệu sẽ bị mất và nếu loại dữ liệu thấp hơn được chuyển đổi thành loại cao hơn thì không có dữ liệu nào bị mất