01/10/2018, 00:35
Giải thích về C
em có 1 bài tập về nhà như thế này, lúc đầu e nhập dc thằng x,y nhưng ko nhập được phép tính. Sau 1 hồi hỏi han mới bik là phải thêm %*c , Mấy bác cho e hỏi là tại sao phải thêm %*c không ạ
int x,y;
char pheptinh;
printf("nhap x,y: ");
scanf("%d%d",&x,&y);
printf("Nhap phep tinh: ");
scanf("%*c%c",&pheptinh);
switch(pheptinh)
{
case '+':
{
printf("%d + %d",x,y);
break;
}
case '-':
{
printf("%d - %d",x,y);
break;
}
case '*':
{
printf("%d * %d",x,y);
break;
}
case '/':
{
if(y==0)
{
printf("khong chia duoc");
}
else
{
printf("%d / %d",x,y);
}
break;
}
}
getch();
Bài liên quan
Dấu * có nghĩa là đọc từ buffer nhưng lờ nó đi.
-> %*c = đọc 1 ký tự và ko nhận ký tự đó.
Làm vậy để xóa đi ký tự enter vừa nhập ở phần nhập x, y mà ko cần fflush(stdin)
Cho mình góp ý là bạn nên chỉnh sửa chỗ nhập x,y vì giả sử nếu bạn nhập 123 thì compiler sẽ không hiểu là X là 1 và y là 23 hay x là 12 và y là 3 hay bla bla
Lúc đó chương trình sẽ coi 123 là 1 số và cho vào x trước.
Sau đó chờ tới khi nhập y thì nó sẽ lấy tiếp. Hầu hết các ký tự whitespace sẽ được bỏ qua cho tới khi y được nhận.
ok e hiểu rùi cảm ơn a nhiều nha ^^