Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Hỏi về hàm pow

  1. #1
    Ngày gia nhập
    12 2012
    Bài viết
    0

    Mặc định Hỏi về hàm pow

    Em đang tự học về C có bài này em làm theo cách 1 dùng hàm pow thì không được còn cách 2 thì được ai chỉ dùm em cách làm theo cách 1 cho đúng.Cảm ơn.
    Cách 1:
    #include <stdio.h>
    #include <conio.h>
    void main(void)
    {
    int a;
    printf("Nhap so a: ");
    scanf("%d",&a);
    printf("Gia tri binh phuong cua %d la %d ",a,pow(a,2));

    getch();}

    Cách 2:
    #include <stdio.h>
    #include <conio.h>
    void main(void)
    {
    int a;
    printf("Nhap so a: ");
    scanf("%d",&a);
    printf("Gia tri binh phuong cua %d la %d ",a,a*a);

    getch();}

  2. #2
    Ngày gia nhập
    12 2012
    Bài viết
    7

    Pow là một hàm bình phương một số (thực) theo một (double) số mũ nào đó. Giá trị đầu tiên là giá trị chúng ta cần bình phương. Giá trị thứ hai là giá trị số mũ (Lưu ý rằng số mũ có thể là thập phân, theo hướng tiện lợi)

    Ví dụ :
    Code:
    pow(5,3); //Tương đương 5 * 5 * 5 hoặc 5 mũ 3
    Hay :
    Code:
    pow(5,10.53); //Tương đương 5 mũ 10.53
    Nếu bạn cần giá trị bình phương, thì tốt nhất, nên sử dụng công thức a*=a; hay a = a * a; đó là đơn giản vừa nhanh chóng vừa hiệu quả. Còn nếu bạn muốn tính toán một cái gì phức tạp hơn, thì sử dụng pow.

  3. #3
    Ngày gia nhập
    12 2012
    Bài viết
    0

    Ý em hỏi là ở cách 1 em sử dụng hàm pow(a,2) nhưng khi in ra màn hình và nhập a vào thì kết quả ra =0,Còn ở cách 2 ra đúng kết quả =4 .Em hỏi cách 1 và cách 2 theo công thức thì giống nhau nhưng sao lại ra kết quả khác nhau

  4. #4
    Ngày gia nhập
    12 2012
    Bài viết
    7

    printf("Gia tri binh phuong cua %d la %d ",a,pow(a,2));
    pow trả về một giá trị double nên việc sử dụng "la %d" là không hợp lệ (Số nguyên khác số thực)
    Mã đúng của nó :
    C++ Code:
    1. printf("Gia tri binh phuong cua %d la %f ",a,pow(a,2)); //Chú ý

  5. #5
    Ngày gia nhập
    12 2012
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi codefighter Xem bài viết
    pow trả về một giá trị double nên việc sử dụng "la %d" là không hợp lệ (Số nguyên khác số thực)
    Mã đúng của nó :
    C++ Code:
    1. printf("Gia tri binh phuong cua %d la %f ",a,pow(a,2)); //Chú ý
    Mình thêm ý kiến cho bạn [codefighter] thôi :
    C++ Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h> // Phải thêm cái include này thì hàm pow mới chạy được
    4. int main()
    5. {
    6. int a;
    7. printf("Nhap so a: ");
    8. scanf("%d",&a);
    9. printf("Gia tri binh phuong cua %d la %0.f ",a,pow(a,2)); // Để %0.f tức là chỉ lấy phần nguyên của số cần in ra màn hình (không lấy số nào sau dấu phẩy)
    10. getch();
    11. }
    Hoặc bạn [huongxuan1994] có thể dùng cách này : Ép kiểu
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4. int main()
    5. {
    6. int a;
    7. printf("Nhap so a: ");
    8. scanf("%d",&a);
    9. printf("Gia tri binh phuong cua %d la %d ",a,(int)pow(a,2)); // Ép từ Float sang Int và khi in ra vẫn là int
    10. getch();
    11. }

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn