30/09/2018, 16:02

Hàm nhập số nguyên

#include <stdio.h>
#include <stdlib.h>

void nhapSoNguyen(int &n)
{
    printf("nhap vao so nguyen: %d");
    scanf("%d", &n);
}

int tinhTong(int a, int b)
{
    return a + b;
}
int tinhHieu(int a, int b)
{
    return a - b;
}
int tinhTich (int a, int b)
{
    return a * b;
}
float tinhThuong (int a, int b)
{
    return (float)a/b;
}
int main()
{
    int a,b;
    int tong, hieu, tich;
    float thuong;

    nhapSoNguyen(a);
    nhapSoNguyen(b);

    tong = tinhTong(a,b);
    hieu = tinhHieu(a,b);
    tich = tinhTich(a,b);
    thuong = tinhThuong(a,b);

    printf("tong :%d
", tong);
    printf("hieu: %d
", hieu);
    printf("tich: %d
", tich);
    printf("thuong: %f
", thuong);

    return 0;
}

code bị lỗi gì vậy mọi người ? . Tại sao lại báo lỗi dòng 4 ?

Nguyễn Minh Dũng viết 18:14 ngày 30/09/2018

printf(“nhap vao so nguyen: %d”);

Sửa lại thành
printf(“nhap vao so nguyen:”);

Lê Đình Huy viết 18:15 ngày 30/09/2018

http://codepad.org/xw7fBo5I

đã sửa theo a nhưng code vẫn bị báo lỗi .

Nguyễn Minh Dũng viết 18:02 ngày 30/09/2018

void nhapSoNguyen(int &n)
thành
void nhapSoNguyen(int *n)

scanf("%d", &n);
thành
scanf("%d", n);

Lê Đình Huy viết 18:10 ngày 30/09/2018

em đã sửa theo a và chạy được, nhưng khi chạy chương trình, nó bảo nhập 2 số nguyên, sau khi nhập xong nó tắt chương trình chứ k tính tổng, hiệu, tích, thương của 2 số a,b . code này e coi trong clip. Người đó dùng “microsoft visual studio” còn e dùng codeblock . Phải chăng vì điều này mà code phát sinh lỗi ?
code chuẩn : http://codepad.org/pKL3sJw9

Nguyễn Minh Dũng viết 18:13 ngày 30/09/2018

Người đó dùng “microsoft visual studio” còn e dùng codeblock . Phải chăng vì điều này mà code phát sinh lỗi ?

Chính xác. Visual studio không hỗ trợ thuần C. Nên code đó là viết cho C++ nhưng sử dụng thư viện của C thôi. Thử tạo project C++ bên Codeblocks xem thử có lỗi không.

Trong C không có khái niệm reference.

void nhapSoNguyen(int &n)

Cái này là reference, chỉ có trong C++

Lê Đình Huy viết 18:17 ngày 30/09/2018

thì ra là vậy, e cảm ơn a nhiều . e đã tạo C++ và chạy tốt a nhé

Phương Lê viết 18:06 ngày 30/09/2018

int &num… trong C++ là địa chỉ khác số nguyên. Tham trị dùng bản photocopy, bản gốc không thay đổi, tham số thực sự a, b, c vẫn giữ nguyên giá trị trước khi gọi hàm, vì nó chỉ là tham trị
Chương trình bổ sung viết bằng C++

void nhapSoNguyen(int &num1, int &num2, int &num3) // Parameter - Loai tham tri
{
   printf("Nhap vao 3 so nguyen:\n");
   scanf("%d %d %d", &num1, &num2, &num3);
   printf("\nAddress of num1 : %d; num2 : %d; num3 : %d\n", &num1, &num2, &num3);
}
int tinhTong(int val1, int val2, int val3)
{
   int cong;
   cong = (val1 + val2 + val3);
   val1++;
   val2++;
   val3++;
   printf("\nValue of val1 : %d; val2 : %d; val3 : %d\n", val1, val2, val3);
   return cong;
 }
int main()
{
   int a, b, c, tong;
   nhapSoNguyen(a, b, c);
   tong = tinhTong(a, b, c); // Argument is passed - Doi so
   printf("\nTong : %d\n", tong);
   printf("\nValue of a : %d; b : %d; c : %d\n", a, b, c);
   return 0;
 }
Bài liên quan
0