Rảnh ngồi phá chơi
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
Video Ngôn Ngữ C - 15 - Lệnh Switch với ký tự
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ụ ~!@#$
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;
}
Đúng vậy, nhưng nếu em code vậy thì code sẽ dài lắm ^^
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
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.
nếu vậy phải thêm code cho đủ 26 chữ cái ,em sẽ edit sau
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;
}
quá là đẹp nuôn
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 Ai làm được nhào zô.
thế đc dùng for không a?
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.
Nóng hổi mới ra lò nuôn
#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();
}
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ớ đề.
#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;
}
E lạc đề thiệt, sr sr mn
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 Và khi có lỗi thì việc tra từng case
là nightmare
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.
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 đó? :’(
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
Ở đây em sẽ cố giải thích dễ hiểu nhất:
- &&: và, ||: hoặc
- Trong lập trình, có thể coi chữ như số, chỉ khác kiểu dữ liệu (1 cái kiểu
char
, 1 cái kiểuint
)
- Nghĩa là chữ, vẫn có thể đổi được thành số, và số cũng có thể đổi được thành chữ.
- Và chúng ta chuyển đổi giữa 2 cái này theo bảng mã ASCII, đây là hình của em nó:
- Theo như cái bảng này, nếu chuyển số 97 sang chữ, nó sẽ thành chữ ‘a’, cũng như nếu đổi từ chữ ‘a’ sang số, nó sẽ là số 97 (theo như bảng ASCII
VD: sau đây là 1 đoạn code để chuyển đổi làm ví dụ:
int main()
{
printf("%c", 97); // Do yêu cầu in ra màn hình là 1 ký tự (%c), thế nhưng ta lại truyền vào cái % đó 1 số nguyên (phải số nguyên mới được nhé), vì vậy nó sẽ chuyển số 97 thành 1 ký tự cho phù hợp với cái %, và theo bảng ASCII, 97 sẽ chuyển thành chữ 'a'
printf("%d", 'a'); // Như ở trên, do mình cần xuất ra 1 số nguyên (%d), nhưng lại truyền vào cái %d ấy 1 ký tự (chữ 'a'). Vì thế, nó sẽ chuyển chữ 'a' thành số, và theo ASCII,
return 0;
}
Cơ bản là thế, giờ là dòng lệnh trên
(ky_tu >= 'a' && ky_tu <= 'z') || (ky_tu >= 'A' && ky_tu <= 'Z') ||
(ky_tu >= 0 && ky_tu <= 9)
Như đã nói ở trên, chữ có thể coi là số và ngược lại
-
Theo bảng ASCII, chữ cái có số lớn hơn thì lớn hơn, ví dụ, chữ
b
chuyển qua số sẽ là98
, còna
chuyển qua sẽ là97
.98 > 97
=>b > a
-
Vậy, khi nhập 1 chữ cái thường theo bảng chữ cái alphabet (a, b, c, …) thì nó sẽ nằm trong đoạn từ
a -> z
, hay nói cách khác, nếu chuyển sang số, nó sẽ trong đoạn từ97 -> 122
. -
Ở đoạn code này Sẽ kiểm tra xem ký tự nhập vào có nằm trong đoạn từ
a -> z
không. Và cũng như thế với 2 cụm kia, là kiểm tra xem có nằm trong đoạn'A' -> 'Z'
không (chữ hoa theo bảng mã cósố
khác chữ thường nha, đừng lẫn lộn
ky_tu >= 'a' && ky_tu <= 'z'
Nếu vẫn chưa hiểu, anh có thể add Skype em cho dễ nói chuyện:
Name: Long Mr
Mail: [email protected]