Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 9 của 9
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Chương trình C bị lỗi khi nhập 1 kí tự

    Mã:
    #include <stdio.h> main(){   int n=0,tong=0;      while (n!=3)   {      tong+=n;      printf("nhap so' n :");      scanf(" %d", &n);         }   printf(" ket qua : %d", tong);   system("pause");}
    Ai giải thích cho mình biết tại sao khi nhập 1 kí tự vào ( ví dụ là 'a' ; a!=3 ) thì chương trình bị lỗi. Liệu có cách nào để chương trình chấp nhận cho nhập 1 kí tự vào không ?

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Không hiểu tại sao bạn lại muốn nhập kí tự? Phải chăng bạn muốn lấy mã của kí tự để làm giá trị của số tự nhiên, hay chỉ dùng các kí tự từ a - f trong hệ 16?
    Nếu muốn nhập trong hệ 16 bạn dùng scanf("%x", &n); Muốn lấy một kí tự bạn dùng char c; scanf("%c" &c);

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    umh. vì biến n bạn khai báo là một số nguyên mà vậy nện khi bạn nhập vào một kí tự vào thì nó lổi thôi. mình cũng mới vào nghề nên chổ này chỉ có thể hiểu vậy thôi có ại biết sâu hơn thì chỉ dùm cho anh em với

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Vì mình cứ nghĩ khi nhập kí tự , ví dụ nhập kí tự 'a' thì nó sẽ nhận là giá trị 65 ( !=3) ! Có cách nào để chương trình thực hiện được như vậy không ?

  5. #5
    Thử cách này coi

    Mã:
    #include <iostream> using namespace std; int main(){    char c;    scanf("%c", &c);    printf("%d", c);    return 0;}

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Thank Mod mp121209 ! nhưng mình muốn áp dụng vào bài trên cơ

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Thế này bạn ạ. Bạn nên phân tích bài toán cho rõ ràng rồi mới định hướng làm. Nếu bạn cần làm việc với số nguyên, thì trường hợp bạn nhập 1, 234, ... là đúng, còn nếu nhập 'a', "abc", ... là sai. Ngược lại, nếu bạn muốn làm việc với kí tự, thì lại là bài toán khác. Vậy bài toán của bạn là gì? Cộng mã của các kí tự ư? Tôi lấy ví dụ, mã của kí tự '0' là 48, mã của '1' là 49. Nhưng nếu người sử dụng nhập vào dãy kí tự "abc" thì bạn sẽ quy đổi tương ứng như thế nào?
    Thao tác trên tập hợp số tự nhiên (kiểu int) và kiểu kí tự (kiểu char) là những việc làm hoàn toàn khác nhau.

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi trieuvan.n01
    umh. vì biến n bạn khai báo là một số nguyên mà vậy nện khi bạn nhập vào một kí tự vào thì nó lổi thôi. mình cũng mới vào nghề nên chổ này chỉ có thể hiểu vậy thôi có ại biết sâu hơn thì chỉ dùm cho anh em với
    Sai rồi. Không phải lỗi do khai báo biến n là integer.
    Sai ở chỗ bạn nói sẽ lấy một integer từ bàn phím 0-9 nhưng lại nhập vô một kí tự alpha. scanf("%d", ..);

  9. #9
    Thank mod mp121209 vì đã giúp mình !!!! Mình mới học nên thắc mắc như vậy [IMG]images/smilies/biggrin.png[/IMG]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •