30/09/2018, 20:26

Đổi tiền USD sang VNĐ và ngược lại?

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

int main()
{
    char USD = 1, VND = 0;
    float vnd1,usd1,luachon,soTienDoi;
    printf("=== Lua chon tien te can doi === 

");
    printf("Ban chon loai tien USD hay VND (USD/VND): 

");
    scanf("%s",&luachon);
    if (luachon)
    {
        printf("Nhap so tien USD can doi ra VND: 
");
        scanf("%f",&usd1);
        soTienDoi = usd1 * 22000;
    }
    else
    {
        printf("Nhap so tien VND can doi ra USD: 
");
        scanf("%f",&vnd1);
        soTienDoi = vnd1 / 22000;
    }

    if (luachon)
        printf("So tien doi duoc la: %f VND 
",soTienDoi);
    else
        printf("So tien doi duoc la: $%.2f",soTienDoi);


    return 0;
}

Khi mình gõ VND thì nó ko xuất hiện điều kiện “else”
Theo Boolean đáng nhẽ:
if (0) thì sẽ bỏ qua điều kiện đầu tiên và chạy xuống điều kiện “else”
Mà mình đặt VND = 0.
Thì đáng nhẽ nó phải in ra màn hình:

Nhap so tien VND can doi ra USD:

Khi mình F9 chạy chương trình xong và thoát khỏi file .exe thì ở dưới có 3 thông báo “warning”:

D:CProject1Project 18main.c|12|warning: format '%s' expects argument of type 'char *', but argument 2 has type 'int *' [-Wformat=]|

D:CProject1Project 18main.c|8|warning: unused variable 'VND' [-Wunused-variable]|

D:CProject1Project 18main.c|8|warning: unused variable 'USD' [-Wunused-variable]|

Nó báo lỗi gì vậy nhỉ

Khôi Trần viết 22:41 ngày 30/09/2018

chết chết sai cơ bản thế này, bạn nhập VND nó là string cơ mà lại đi scanf cho int đương nhiên scanf cho int thì nó là 1 số khác 0 nên làm điều kiện 1 thôi

Jobs Apple Steve viết 22:27 ngày 30/09/2018

minh nghi ban nen tao mot menu lua chon voi switch thi hon

printf("1.doi tu vnd sang do la'");
printf("1.doi tu vnd sang do la'");
scanf("%d",&luachon);
switch(luachon)
{
case 1:
case 2:
}
loi viết 22:28 ngày 30/09/2018

Vậy có cách nào để gõ sự lựa chọn là chữ (USD hoặc VND).
Thay vì phải gõ 1/0 hay swtich 1,2,3,4 … trong hàm Scanf

Jobs Apple Steve viết 22:29 ngày 30/09/2018

co day ban a va day lacach nha nhung minh thay kieunay cu chuoi bo xu y
``
char luachon[3]
switch(luachon)
case ‘usd’
case ‘vnd’

loi viết 22:34 ngày 30/09/2018

Hihi. Cảm ơn bạn. Mình muốn đổi kiểu lựa chọn sang chữ đó mà

Jobs Apple Steve viết 22:34 ngày 30/09/2018

cach nay cu chuoi bo xu ban nen dung ky tu thoi ban a

Trịnh Minh Cường viết 22:36 ngày 30/09/2018

đối với string thì mình nghĩ nên dùng if, else vì thằng switch hình như không dùng kiểu chuỗi được, còn nếu nhiều quá thì tạo lựa chọn 1,2,3,4 rồi cho người dùng nhập theo bằng số (cái này dễ bắt ngoại lệ hơn với lại tiện hơn cho người dùng nữa )

Jobs Apple Steve viết 22:30 ngày 30/09/2018

dung dung chuoi trong kieu nay no cu cu chuoi kieu gi ay

loi viết 22:35 ngày 30/09/2018

Tiện thể hỏi cái này luôn, tìm số lớn nhất với 2 số nguyên

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

int main()
{
    int a, b, soLonNhat;
    printf("Nhap so a: \n");
    scanf("%d",&a);
    printf("Nhap so b: \n");
    scanf("%d",&b);

    if (a>b)
        a = soLonNhat;
    else
        b = soLonNhat;

    printf("So lon nhat can tim la :%d\n",soLonNhat);

    return 0;
}

Mình bị sai chỗ nào à

Trịnh Minh Cường viết 22:31 ngày 30/09/2018
if (a&gt;b)
        a = soLonNhat;
    else
        b = soLonNhat;

đây là lỗi sai của bạn, nếu bạn viết a = SoLonNhat; tức là khi này bạn gán giá trị của SoLonNhat cho a (và khi này thì SoLonNhat chẳng có giá trị nào cả), bên dưới cũng tương tự vậy
sửa lỗi: Bạn hãy làm ngược lại SoLonNhat = a; và tương tự với b

à mà nếu sau này bạn có muốn hỏi thêm 1 câu hỏi nữa thì bạn hãy lập 1 topic khác nhé , vì mỗi topic chỉ nên có duy nhất 1 câu hỏi mà thôi.

loi viết 22:39 ngày 30/09/2018

Mình cứ tưởng a = soLonNhat và soLonNhat = a tương đương nhau .
Mình sẽ rút kinh nghiệm 1 bài hỏi 1 topic

Bài liên quan
0