Đấy là quy tắc của hàm scanf, mình yêu cầu nhập vào như thế nào thì mình phải nhập vào đúng như vậy.
Tương tự như hàm printf
printf("%d^",3);
Thì cũng sẽ in số 3 và ^
Còn trong trường hợp scanf thì mình xem phần format của scan ở đây
http://www.cplusplus.com/reference/cstdio/scanf/
Whitespace character: the function will read and ignore any whitespace characters encountered before the next non-whitespace character
Hàm scanf sẽ đọc và bỏ bất cứ ký tự khoảng trắng nào, bao gồm space và tab hoặc enter, cho tới khi gặp một ký tự khác với khoảng trắng.
Thế nên nếu ta code như sau:
#include <stdio.h>
int main()
{
int n;
scanf("%d ",&n);
printf("%d^", n);
}
Thì khi nhập vào có thể nhập
3a<enter>
Kết quả trả ra sẽ là
3^
Chữ a hoặc bất cứ ký tự nào khác khoảng trống đều bị bỏ đi.