Printf c++ là gì

Đối với lập trình viên, việc tương tác với máy tính và kiểm soát đầu vào và đầu ra của dữ liệu là vô cùng quan trọng. Khác với các ngôn ngữ lập thường gặp hiện nay như Java, C#... hay các ngôn ngữ mới đã được hỗ trợ nhiều thư viện xử lý dữ liệu, C/C++  lại rất tường minh trong việc nhập xuất dữ liệu ngay từ những dòng code đầu tiên. Điều này gây không ít khó khăn cho người mới bắt đầu với ngôn ngữ lập trình C/C++. 

Tổng quan

Đối với tất cả ngôn ngữ lập trình, việc kiểm soát tiêu chuẩn đầu vào, đầu ra của dữ liệu là vô cùng quan trọng. Khi làm việc với ngôn ngữ C/C++, đầu tiên phải nói đến thư viện <stdio.h> - C chuẩn (<iostream> - C++ chuẩn).

stdio.h cung cấp 2 hàm hỗ trợ nhập xuất cơ bản là printf() và scanf().

printf và scanf

printf() viết tắt của "print formatted" nghĩa là hàm in có định dạng. Làm nhiệm vụ xuất dữ liệu ra màn hình.

Cấu trúc printf(<"chuỗi định dạng">, <danh sách tham số>). Trong đó:

  • Chuỗi định dạng "format string" làm nhiệm vụ định dạng dữ liệu xuất ra màn hình.
  • Danh sách tham số có thể bao gồm nhiều biến, hằng số, biểu thức và hàm... được phân cách bằng dấu "," .

scanf() viết tắt của "scan formatted"  nghĩa là hàm quét có định dạng. Làm nhiệm vụ quét dữ liệu đầu vào.

Cấu trúc scanf(<định dạng kỹ thuật>, <danh sách tham chiếu>). Trong đó:

  • Định dạng kỹ thuật làm nhiệm vụ định dạng dữ liệu đầu vào.
  • Danh sách tham chiếu bao gồm các dữ liệu được truyền với dạng tham chiếu có cấu trúc được quy định là &<tên biến> dành cho các kiểu dữ liệu cơ bản "primitive data type", còn đối với các kiểu dữ liệu dẫn xuất như chuỗi ký tự thì tham chiếu đơn giản là <tên biến>.

Chuỗi định dạng

Chuỗi định dạng trong print() được đặt trong dấu " " cho phép nhiều thành phần cùng tồn tại như:

  • Ký tự văn bản "Text characters": là những ký tự in được, bao gồm các chữ cái, chữ số và các ký tự đặc biệt trong bảng mã ASCII.
  • Ký tự điều khiển: bao gồm một số ký tự điều khiển như tab \t, xuống dòng \n, khoảng trắng  , … khoảng trắng thường được sử dụng để phân cách các trường "field" dữ liệu được xuất ra.
  • Định dạng kỹ thuật: quy định kiểu dữ liệu được xuất ra màn hình.

Ký tự điều khiển thường dùng

\n Nhảy xuống dòng kế tiếp
\t Tab khoảng cách ngang 
\r Nhảy về đầu hàng
\a Tiếng kêu bip
\\ In ký tự  \
\" In ký tự  "
\' In ký tự '
%% In ký tự % 

Định dạng kỹ thuật thường dùng 

%d int định dạng kiểu số nguyên và tham chiếu dữ liệu hệ thập phân 
%i  int định dạng kiểu số nguyên và tham chiếu dữ liệu hệ thập lục phân 
%f float định dạng kiểu số thực 
%c  char định dạng kiểu ký tự 
%s character string  định dạng chuỗi ký tự 
%lf double định dạng kiểu số thực double 
%ld long định dạng cho một số kiểu long 
%Lf long double định dạng cho một số kiểu long double 

Ví dụ

Hiện thực các ví dụ bên dưới để hiểu rõ hơn về nhập xuất trong C/C++.

Ví dụ cho việc hiển thị thông tin

#include <stdio.h> #define _CRT_SECURE_NO_WARNINGS int main() { printf("Hello! \n"); printf("Your name \n"); printf("%% \t \\ \t / \t %% \n"); return 0; }

Ví dụ về việc tính toán

#include <stdio.h> #define _CRT_SECURE_NO_WARNINGS int main() { int a; // khai bao bien a kieu so nguyen float c, d; // khai bao 2 bien kieu so thuc a = 0; // truyen vao bien a gia tri 0 int b = 2; // khai bao bien b va truyen gia tri 2 vao bien b c = 3.1416f; // truyen gia tri vao bien c kieu so thuc d = 0.12f; // truyen gia tri vao bien d kieu so thuc printf("a = %d; b = %d\n", a, b); printf("c = %f; d = %f\n", c, d); printf("a + b = %d", a+b); return 0; }

Ví dụ về nhập xuất dữ liệu

#include <stdio.h> #define _CRT_SECURE_NO_WARNINGS int main() { char name[32]; printf("Nhap ten của ban: "); scanf("%s", name); printf("Ten ban la: %s \n", name); return 0; }

Khác nhau giữa %i và %d vì cả hai định dạng giống và khác nhau một số trường hợp. Thực hiện ví dụ tổng hợp để phân biệt sự khác nhau giữa %d và %i khi chúng ta cùng nhập một giá trị 020 hai lần với hai định dạnh %d và %i.

#include <stdio.h> #define _CRT_SECURE_NO_WARNINGS int main() { int number1, number2; // 020 020   printf("Thuc hien nhap hai so giong nhau voi %%d va %%i "); scanf("%d%i", &number1, &number2); printf("%d\t%d \n", number1, number2); return 0; }

Một trong những cảnh báo thường gặp khi thao tác với các hàm có liên quan tới thư viện CRT của Visual Studio từ phiên bản 2012 trở đi là Compiler warning C4996 yêu cầu sử dụng printf_s, scanf_s, fopen_s, … tham khảo bài viết Compiler Warning C4996 Và C Run-time Library Hay _CRT _SECURE_NO_WARNINGS (CRT) để hiểu và giải quyết vấn đề này.

#include <stdio.h> #include <conio.h> #include <stdlib.h> int s = 1;//tim kc nn tu s den tat ca cac dinh int const max = 20; int a[max];//day so cho truoc int mtk[max][max], n; int d[max][max];//d[i][j]:kcnho nhât tu ai den aj int p[max][max];//p[i][j]:dinh truoc dinh j tren duong nn tu i den j int const avc = -100; //am vo cuc void DocFile() { int x; FILE *f = fopen("E:\\daytang.txt", "r");// ta mở tập tin daytang.txt"kiểm tra xem nếu tập tin bằng null thì if (f == NULL) { //file ko tồn tại còn ngược lại trả về EOF(-1) printf("\nFile %s khong co"); } n = 0; while (fscanf(f, "%d", &x) != EOF) // a[++n] = x; fclose(f); } void matranke() { int i,j; for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) if (i == j) mtk[i][j] = 0; else mtk[i][j] = avc; for (i = 1; i<n; i++) for (j = i + 1; j <= n; j++) if (a[i] <= a[j]) mtk[i][j] = 1; else mtk[i][j] = -1; } void Floyd() { //đường đi ngắn nhất int i, j, k; for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) { d[i][j] = mtk[i][j]; p[i][j] = i; } for (k = 1; k <= n; k++) for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) if (d[i][j]<d[i][k] + d[k][j]) { d[i][j] = d[i][k] + d[k][j]; p[i][j] = p[k][j]; } } void main() { int i, j, k, i0, j0; DocFile(); matranke(); for (i = 1; i <= n; i++) printf("%3c%d", 'a', i); printf("\n"); for (i = 1; i <= n; i++) printf("%4d", a[i]); Floyd(); printf("\nDay con khong giam dai nhat: "); k = avc; for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) if (d[i][j]>k) { k = d[i][j]; i0 = i; j0 = j; } k = j0; while (k != i0) { printf("a%d-->",k); k = p[i0][k]; } printf("a%d: chieu dai=%d", i0, d[i0][j0] + 1); printf("\n"); system("pause"); }

printf("\nDay con khong giam dai nhat: "); k = avc; for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) if (d[i][j]>k) { k = d[i][j]; i0 = i; j0 = j; } k = j0; while (k != i0) { printf("a%d-->",k); k = p[i0][k]; } printf("a%d: chieu dai=%d", i0, d[i0][j0] + 1); printf("\n");

bài này em đang cần à
anh có thể giải thích

printf("a%d-->",k); k = p[i0][k]; } printf("a%d: chieu dai=%d", i0, d[i0][j0] + 1);

Nhìn cách em copy code có vẻ như em không biết lập trình?

Hàm printf là hàm dùng để in text ra ngoài thiết bị out, có thể là màn hình máy tính, máy in, file, …

Hàm printf có cấu trúc để có thể truyền giá trị từ biến vào chuỗi để tạo thành một chuỗi hoàn chỉnh, nội dung thay đổi tùy thuộc vào giá trị mà biến truyền vào

printf("a%d: chieu dai=%d", i0, d[i0][j0] + 1);

Với lệnh trên thì format của lệnh printf là đoạn

"a%d: chieu dai=%d"

Trong đó:

%d: sẽ được thay thế bởi một số

Ở đây ta có 2 chỗ có %d, 2 vị trí này sẽ được thay bằng hai biến hoặc giá trị hoặc kết quả của một phép toán. Phần tiếp theo của lệnh printf sẽ thay vào 2 vị trí đấy

i0, d[i0][j0] + 1

Ở đây giá trị của i0 sẽ thay vào %d thứ nhất
Và giá trị của d[i0][j0] + 1 sẽ thay vào %d thứ hai.

Tới đây là xong phần giải thích và anh rất mong em sẽ học lập trình từ đầu. Bắt đầu bằng cơ bản, không nên đặt những câu hỏi thế này vì nó sẽ không giúp ích gì nhiều cho em đâu.

Em có thể học từ chương trình mà anh biên soạn ở đây:

Printf c++ là gì
Tổng hợp các video hướng dẫn lập trình C của Lê Trần Đạt videos

Ngôn Ngữ C - 01 - Giới Thiệu Ngôn Ngữ Ngôn Ngữ C - 02 - Sử dụng CodeBlocks để tạo Project C Ngôn Ngữ C - 03 - Viết Chương Trình C Đầu Tiên Ngôn Ngữ C - 04 - Thư viện stdio.h là gì? Ngôn Ngữ C - 05 - Cách ghi chú lúc lập trình C Ngôn Ngữ C - 06 - Hàm printf hoạt động như thế nào? Ngôn Ngữ C - 07 - Biến là gì? Có ăn được không? Ngôn Ngữ C - 08 - Kiểu dữ liệu: Số Tự Nhiên (int) Ngôn Ngữ C - 09 - Mảng số tự nhiên Ngôn Ngữ C - 10 - Mảng ký tự hay còn được gọi là chuỗi Ngôn Ngữ C - 11 - Lệnh và khối l…

Chúc em học tốt.

3 Likes

em chỉ học C++ thui a nhưng hình như 2 cái đó có liên wan hả a

Có liên quan một tí. Ban đầu C được tạo ra trước, sau đó Bjarne Stroustrup mới thêm hướng đối tượng vào để tạo ra C++ và bây giờ thì C++ đã thêm rất nhiều thứ vào đấy và đã khác C khá nhiều rồi.

Em đọc thêm ở đây:

vi.wikipedia.org

Printf c++ là gì

Ngôn ngữ lập trình C là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều hệ điều hành khác và trở thành một những ngôn ngữ phổ dụng nhất. C là ngôn ngữ rất có hiệu quả và được ưa chuộng nhất để viết các phần mềm hệ thống, mặc dù nó cũng được dùng cho việc viết các ứng dụng. Ngoài ra, C cũng thường được dùng làm phương tiện giảng dạy trong khoa học máy tính mặc dù ngôn ngữ này không được thiết ...

Topic này đã giải quyết xong câu hỏi về printf tiếp tục trả lời các vấn đề khác là off-topic

1 Like

Home Categories FAQ/Guidelines Terms of Service Privacy Policy