Em đang thăc mắc trong đoan code sau không thể dùng if
đề :Nhập vào 1 ký tự là chữ cái. Nếu nhập sai thì báo thông báo đã nhập sai. Nếu đúng thì đi kiểm tra nếu đó đang là chữ cái thường thì biến nó thành chữ cái hoa, nếu nó là chữ cái hoa thì biến nó thành chữ thường.
Gợi ý: Ký tự chữ cái thường và hoa có mã ASCII cách nhau 32 đơnvị. Vd: ‘a’ là 97, ‘A’ là 65
em đang thắc mắc ở đoạn code sau :if (kytu>=‘A’&&kytu<=‘Z’) nếu em dùng if thì nhập vào ký tự nào thì nó vẫn không chuyển sang ký tự khác ví dụ nhập h vẫn là h không chuyển sang kiểu in hoa ngược lại dùng
else if (kytu>=‘A’&&kytu<=‘Z’) thì chuyển
code:
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char** argv) {
char kytu;
printf(" nhap mot ky tu :
");
scanf("%c",&kytu);
if((kytu>='a'&& kytu<='z') || (kytu>='A'&&kytu<='Z'))
{
if(kytu>='a'&& kytu<='z')
{
kytu=kytu-32;
}
if (kytu>='A'&&kytu<='Z')
{
kytu=kytu+32;
}
printf("%c",kytu);
}
else
{
printf("vui long nhap lai:
");
}
ủa bác nếu bác nhập h thì đâu có lớn hơn hoặc bằng A và nhỏ hơn hoặc bằng Z A->Z là 65->90 h là 104 thì nó không thoả mãn -> sẽ chuyển tới esle là in ra vui lòng nhập lại chứ
Phân tích 1 chút:
Nếu bạn dùng
if (kytu>='A'&&kytu<='Z')
khi nhập kí tự ‘h’ vào thì :if(kytu>='a'&& kytu<='z')
=> Đúng =>kytu=kytu-32; (bằng 'H')
if (kytu>='A'&&kytu<='Z')
=> Lại đúng =>kytu=kytu+32; (bằng 'h')
h
Nếu dùng
else if (kytu>='A'&&kytu<='Z')
sẽ không thực hiện các lệnh sauelse
nữa, do cáiif
ở [1] đã đúng rồi. Do đó sẽ in raH