01/10/2018, 00:43

Giúp về vòng lặp ạ!

Đề là thế này: Viết chương trình lặp lại nhiều lần công việc nhập 1 ký tự và in ra mã ASCII của ký tự đó, khi nào nhập số 0 thì dừng.

Code của mình:

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

void main()
{
    char kiTu;

    printf("
Nhap ki tu: ");
    scanf("%c", &kiTu);
    while(kiTu!='0'){
        printf("ASCII: %d", kiTu);
        scanf("%c", &kiTu);
    }
}

Mọi người xem dùm ạ!

Gió viết 02:46 ngày 01/10/2018

Dùng getche() sẽ đọc một kí tự từ bàn phím mà không cần ấn enter. hàm này đồng thời cũng in kí tự vừa đọc ra màn hình. Còn nếu đọc một kí tự mà không in ra thì dùng getch().

Đọc và in 1 kí tự ra màn hình cho đến khi phím 0 được ấn

while(getche()!='0'); 
X viết 02:50 ngày 01/10/2018

Kết quả hiện tại của bạn là gì? và kết quả bạn mong muốn là gì?

Nguyễn Quốc Cường viết 02:44 ngày 01/10/2018

kết quả của mình thế này

nó ra mã ASCII = 65 là đúng rồi nhưng nó có thêm dòng ASCII: 10 nữa

Mình thử mọi cách mình biết rồi mà cách nào nó cũng có xuất hiện cái dòng đó cả

anon51853234 viết 02:52 ngày 01/10/2018
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()
{
    char kiTu;
    while(kiTu!='0'){
	    printf("\nNhap ki tu: ");
	    scanf(" %c", &kiTu);// thêm khoảng trắng trước %c hoặc thêm \n trước %c là ok nhé
	    printf("ASCII: %d", kiTu);

    }
}

nguyên nhân

scanf(" %c", &newChar);
    /* ^ <-- Makes `scanf` eat the newline. */

mã ascii =10 là line feed , hình như nó là khoảng trắng

Nguyễn Quốc Cường viết 02:57 ngày 01/10/2018

Có thể giải rõ hơn về cái lỗi đó được không ạ?

anon51853234 viết 02:45 ngày 01/10/2018

google đi rất nhiều đó , tìm kiếm cũng là 1 phương pháp cần thiết để học cntt đấy , mình cũng chỉ đọc lại từ các trang nước ngoài xem họ giải thích thế nào thôi , có nhiều cách khắc phục tình trạng đó chứ không chỉ là cách mình đưa ra ở trên , nên bạn tự tham khảo sẽ tìm đc cách mình thích hơn

Nguyễn Quốc Cường viết 02:57 ngày 01/10/2018

Ok, Cảm ơn bạn nhiều nha!

Bài liên quan
0