30/09/2018, 18:25

Giải thích về" lệnh printf " trong hàm main

#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("
File %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("
");
    for (i = 1; i <= n; i++)
        printf("%4d", a[i]);
    Floyd();
    printf("
Day 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("
");
    system("pause");
}

printf("
Day 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("
");
Mai Anh Dũng viết 20:27 ngày 30/09/2018

Em muốn biết gì về hàm printf?

Có vẻ em chưa học qua lập trình? Sao em không thử học một khóa học chuyên nghiệp và miễn phí này nhỉ

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…
Nhuyngo Nhuyngo95 viết 20:37 ngày 30/09/2018

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);
Mai Anh Dũng viết 20:25 ngày 30/09/2018

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:

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.

Nhuyngo Nhuyngo95 viết 20:25 ngày 30/09/2018

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

Mai Anh Dũng viết 20:37 ngày 30/09/2018

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

C (ngôn ngữ lập trình)

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

Bài liên quan
0