Bài tập c tính thành tiền của sản phẩm

đề: viết chương trình nhập tên sản phẩm,đơn giá,số lượng và thành tiền của 1 cửa hàng.
tính: thành tiền của sản phẩm = số lượng * đơn giá
thuế = 10%tiền

Nhưng sau khi e chạy thì chỉ nhập đc tên mặt hàng.ko biết sai chỗ nào

trong cái prinf bỏ hết cái ,a ,b ,c gì đấy đi. Cái đấy chỉ nhập khi gán xong giá trị mà thôi

Có đc đâu ạ. E bỏ rồi mà vẫn ko được

À bạn khai báo a là kiểu kí tự chỉ nhập được 1 kí tự thôi. Nếu bạn muốn nhâp một xâu thì ghi là char a[10] 10 là độ dài xâu. Sửa ở dưới scanf("%c",&a) thành gets(a) nha :smiley:

2 Likes

bạn sửa lại chỗ khai báo tên mặt hàng từ 1 ký tự thành 1 xâu nhé!

char a[50];
printf("nhap ten mat hang :");
gets(a);

mình tiện nên gõ sourde code luôn bạn thông cảm

2 Likes

Code của bạn sai khá nhiều. Bạn có thể xem đoạn mình code sau đây và đối chiếu lại:

#include <stdio.h>
int main(){
char a[68];
long b,c;
printf("Nhap ten mat hang: ");
gets(a);
printf("Nhap so luong mat hang: ");
scanf("%ld", &b);
printf("Nhap gia mat hang: ");
scanf("%ld", &c);
}
2 Likes

sao lại phải là gets ? mà ko phải là scanf? e ko hiểu lắm

dạ ddc rồi. cơ mà sao phải là gets mà ko phải là scanf ạ?

10% mà nhân cho 1 số thì phải viết làm sao ạ?

gets để giúp bạn nhận một chỗi được nhập từ terminal hay console,

char chr[100]; // khởi tạo một mảng char, bạn nhập vào hello thì hello sẽ được lưu vào trong này. 
// tối đa biến chr lưu được là 99 ký tự (1 ký tự dùng để báo hết chuỗi)

gets(chr) sẽ giúp bạn nhận chuỗi vừa nhập.

Hoặc bạn có thể dùng scanf("%s",chr); để nhận chuỗi, %s chỉ ra rằng dữ liệu cần nhập là chuỗi.

Vậy. scanf hay gets cũng chỉ là các hàm để nhập dữ liệu được người nào đó viết sẵng mà thôi…

2 Likes
float fData = 0.0;
fData = fData * 10 / 100; // một số nhân cho 10%

:smiley:

2 Likes

Mình không đồng ý với bạn về điều này.
Scanf khi sẽ thoát ra khi gặp khoảng trắng còn gets thì không.
Bạn có thể tham khảo thêm ở đây:

2 Likes

Mình có đoạn code muốn chia sẻ, mặc dù bài viết đã lâu rồi nhưng mà cũng bình luận lên đóng góp tí, ai muốn thì tham khảo ạ ^^

#include"stdio.h"
int main(){
            char tenSanPham; 
            float thue, tongTien,soLuong, donGia, tien;
    printf("nhap ten san pham can mua: ");
    scanf("%s",&tenSanPham);
    printf("Nhap vao so luong va don gia ban da mua:\n");
    scanf("%f%f",&soLuong,&donGia);
        tien=soLuong * donGia;
        thue=tien * 0.1;
        tongTien=tien+thue;
    printf("So tien chua tinh thue la: %0.1f\n",tien);
    printf("So tien thue la: %0.1f\n",thue);
    printf("Tong so tien ban phai tra la: %0.1f",tongTien);
 return 1;
}
3 Likes

Bạn ơi cho mình hỏi sao dòng thứ 12,13,14 là %0,1f ạ?
Chỗ này mình chưa hiểu lắm ạ.
Mình cảm ơn

Xem tài liệu về printf() phần .precision: https://www.cplusplus.com/reference/cstdio/printf/

Phần .1 đối với float nghĩa là in ra 1 số sau phần thập phân.
Vd:

1234.5678 -> 1234.6
123.44444 -> 123.4
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?