Video Ngôn Ngữ C - 15 - Lệnh Switch với ký tự

c
video

(Lê Trần Đạt) #1
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    // viet phan mem phan biet chu~(vidu abc) hoac khong phai chu([email protected]) bang switch
 
    int nhap_gia_tri = 68;
    switch (nhap_gia_tri){
    case 65:
    case 66:
    case 67:
    case 68:
    case 69:
    case 70:
    case 71:
    case 72:
    case 73:
    case 74:
    case 75:
    case 76:
    case 77:
    case 78:
    case 79:
    case 80:
    case 81:
    case 82:
    case 83:
    case 84:
    case 85:
    case 86:
    case 87:
    case 88:
    case 89:
    case 90:
        printf("Day la chu\n");
        break;
    case 97:
    case 98:
    case 99:
    case 100:
    case 101:
    case 102:
    case 103:
    case 104:
    case 105:
    case 106:
    case 107:
    case 108:
    case 109:
    case 110:
    case 111:
    case 112:
    case 113:
    case 114:
    case 115:
    case 116:
    case 117:
    case 118:
    case 119:
    case 120:
    case 121:
    case 122:
        printf("Day la chu\n");
        break;
    default:
        printf("Day la khong phai chu\n");
        break;
    }
    return 0;
 
}

#Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại đây :
#Thông tin về khóa học xem tại đây :

-Sự khác biệt giữa 2 khóa học cũ và mới :
+Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả.
+Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại… Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học cũ giúp đỡ việc lắng nghe và hiểu được tốt hơn.


Tổng hợp các video hướng dẫn lập trình C của Lê Trần Đạt
(nhatlonggunz) #4

Rảnh ngồi phá chơi :slight_smile: :slight_smile: :slight_smile:
Mà anh có thể nói rõ hơn cho em phần bài tập được không ạ, PHÂN BIỆT ở đây là s, ý anh là cho int = …; rồi dùng switch để với mỗi giá trị int = …; thì mình có mỗi chữ khác nhau, em nghĩ ý anh là vậy


(Lê Trần Đạt) #5

Trông đẹp lắm, có hoa tay đấy.

Phân biệt ở đây là em nhập vào một ký tự, kiểm tra xem đây là chữ cái abc hay không phải là chữ cái, vì dụ [email protected]#$


(nhatlonggunz) #6

dạng vậy hả anh

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

int main()
{

    int char= 'a';
    switch(char){
         case 'a':
            printf("day la chu a");
         case ...
         default:
            printf(" day la ky tu %c", char)
}

    return 0;

}

(Lê Trần Đạt) #7

Đúng vậy, nhưng nếu em code vậy thì code sẽ dài lắm ^^


(Việt Hải) #8
int main()
{
    char kytu = 'a';
    switch (kytu)
    {
    case 'a':
    case 'b':
    case 'c':
        printf("day la chu");
        break;
    default:
        printf("day k phai chu");
    }

    return 0;
}

đáp án như vậy phải không anh, hic hơi khó nhìn do e chưa post ảnh đc thông cảm :smiley:


(Lê Trần Đạt) #9

Gần đúng rồi đấy, nhưng lỡ anh gõ chữ z vào thì sao?

Đừng, đừng bao giờ chụp hình code của em lên, rất khó đọc. Nó xấu bởi vì em chưa format code. Anh đã format rồi đó. Em xem thêm link này để biết cách format code nhìn cho đẹp.


(Việt Hải) #10

nếu vậy phải thêm code cho đủ 26 chữ cái :blush: ,em sẽ edit sau


(nhatlonggunz) #11

Eo, mấy nay bận, bạn @viethai post trc rồi, thôi làm bản full, có gì sai anh sửa giùm

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

int main()
{
int chu = '"';
switch(chu){
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z':
    printf("this is a char %c", chu);
    break;
default:
    printf("this is not a char, it's %c", chu);
}
 return 0;
}

(Light Way) #12

quá là đẹp nuôn :smiley:


(Lê Trần Đạt) #13

Haha, có cách khác hay hơn. Anh muốn sửa lắm mà anh nghĩ thôi gợi ý mọi người thôi. Mình đừng dùng switch nữa, mà hãy dùng lệnh if. Nhớ một điều ký tự cũng là số thôi :smiley: Ai làm được nhào zô.


(Light Way) #14

thế đc dùng for không a?


(Lê Trần Đạt) #15

Anh chỉ muốn một cách làm khác không dùng switch. Em có thể làm cách nào tùy ý, có thể dùng for thoải mái nếu cách giải của em cần dùng for.


(Light Way) #16

Nóng hổi mới ra lò nuôn :yum:

#include< stdio.h>
#include< conio.h>
void main()
{
    printf("Bang chu cai thuong:\n");
    for (int i = 97; i <= 122; i++)
    {
        printf("%c ", i);
    }
    printf("\n\nBang chu cai in hoa:\n");
    for (int i = 65; i <= 90; i++)
    {
        printf("%c ", i);
    }
    getch();
}

(Lê Trần Đạt) #17

Em lạc đề rồi, nhưng ý tưởng dùng số là đúng. Bài này là kiểm tra một ký tự nhập vào có phải là chữ hay không.

Anh nhớ không nhầm là vậy, nhắc anh nếu anh nhớ sai đề nhé. Vì nhiều videos và anh làm đã lâu nên anh không nhớ đề.


(BaoLe) #18
#include<stdio.h>
int main()
{
    char ky_tu;
    printf("Nhap mot ky tu bat ki:");
    scanf("%c",&ky_tu);
    if((ky_tu>='a'&&ky_tu<='z')||(ky_tu>='A'&&ky_tu<='Z')||(ky_tu>=0&&ky_tu<=9))
        printf("Dung,day la mot ky tu.");
    else
        printf("Day khong phai la mot ky tu.");
    return 0;
}


(Light Way) #19

E lạc đề thiệt, sr sr mn :frowning:


(Lê Trần Đạt) #20

Và đây chúng ta đã có một lời giải ngắn hơn hợp lý hơn cho bài toán kiểm tra ký tự nhập vào có phải là chữ cái hay không.

@14520054 đã code

#include<stdio.h>
int main()
{
    char ky_tu;
    printf("Nhap mot ky tu bat ki:");
    scanf("%c",&ky_tu);
    if((ky_tu>='a'&&ky_tu<='z')||(ky_tu>='A'&&ky_tu<='Z')||(ky_tu>=0&&ky_tu<=9))
        printf("Dung,day la mot ky tu.");
    else
        printf("Day khong phai la mot ky tu.");
    return 0;
}

Hợp lý hơn bởi vì ta có thể dễ dàng kiểm tra ký tự thuộc về khoảng ‘a-z’ hay ‘A-Z’ thay vì phải kiểm tra từng ký tự như dùng switch, có ai đảm bảo rằng việc mình sẽ chắc chắn viết đầy đủ từ ‘a-z’ trong switch mà không quên một chữ nào :smile: Và khi có lỗi thì việc tra từng casenightmare cho lập trình viên.

P/S: Anh rất thích cách @14520054 dùng biến char ky_tu; thay cho char c; hoặc char n;. Rất rõ ràng.


(Tũn) #21

thưa anh. a có thể giải thích rõ cho em về câu lệnh:

if((ky_tu>='a'&&ky_tu<='z')||(ky_tu>='A'&&ky_tu<='Z')||(ky_tu>=0&&ky_tu<=9))

được không ạ? em không hiểu các kí hiệu trong đó? :’(


(Lê Trần Đạt) #22

Em muốn nói tới các ký tự này hả? Anh giải thích ở dưới.

>=: lớn hơn hoặc bằng
<=: bé hơn hoặc bằng


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?