01/10/2018, 09:26
Bài tập đếm nguyên âm
chr word[10];
int *ptr,dem=0,i;
printf("
nhap chu : ");
scanf("%s",word);
ptr=&word[0];
for(i=0 ;i < strlen(word);i++) {
if ((*ptr='u') || (*ptr='e') || (*ptr='o') || (*ptr='a') || (*ptr='i') )
dem++;
ptr++;
}
printf("chuoi co %d ki tu la nguyen am",dem);
em debug thì vòng lặp chỉ chạy 1 lần rồi thoát khỏi chương trình luôn ai giải thích cho em với
Bài liên quan
Tại sao lúc thì ptr lúc thì *ptr. Dấu so sánh là == chứ ko phải =
mình định dùng con trỏ để gán ạ dấu = là để gán mà phải k nhỉ
Bạn viết vậy thì nên thay for bằng while(*ptr != 0) luôn là vừa. Vì bạn đâu có truy xuất qua i đâu.
uh đúng mình quên nhưng dùng == vẫn không đúng ?
Vấn đề ở chỗ bạn dùng con trỏ kiểu
int
để làm việc với mảng kiểuchar
nên kiểu truy xuất sẽ khác. Với đoạn code test như sau:Input:
Output:
Cái cụm số đầu tiên khó hiểu đó chính là mã hex theo thứ tự của “ecba” (0x65 63 62 61) và 102 chính là 0x66
'f'
. Nên cẩn thận hơn, kiểuint
cần 4 bytes, nên mỗi khi truy xuất thì nó sẽ truy xuất 4 bytes (thay vì 1 bytes như kiểuchar
).Giải quyết: con trỏ
ptr
phải đổi thành kiểu char.chính xác bạn ơi mình chạy được rồi nhưng làm sao bạn có thể biết dc input và output thế kia v
mà chương trình truy xuất ngược ạ
sao cứ phải dùng char _…
em chưa có học c++
:v nó cũng từa tựa nhau ý mà, sau này quay lại tìm hiểu kỹ hơn về con trỏ của C.
e thấy h như c là ngôn ngữ cổ và không mạnh em có nên học để hiểu sâu về c không ạ
hay e nên bắt đầu học c++ luôn ạ
cổ thì không cổ đâu tại mình thấy nó cập nhật sửa đổi các chuẩn nhiều lắm chuẩn mới nhất của C hình như là 2011 còn c++ là sắp tới có C++17 hay sao ấy. Học 2 thằng này có cái là phải tự làm mọi thứ các thuật toán, cấu trúc dữ liệu v.v @.@ C++ thì có vẻ dễ chịu hơn một chút, hỗ trợ OOP cũng tốt hơn. Nếu mà e theo CNTT thì sớm muộn cũng đụng cái thằng củ chuối OOP này đánh rớt biết bao nhiều sanh mạng =)))
Input: do mình chọn ra thôi.
Output: Bạn để ý dòng
printf("| %d ", *ptr);
của mình. Chỗ đó là in giá trị của con trỏ, giá trị kiểuint
nên in ra 4 bytesCòn mấy cái còn lại là do suy luận ra thôi. (Biết 1 chút python sẽ làm việc debug dễ dàng hơn).
tại sao biết 1 chút về python lại có thể debug dễ dàng hơn a nói kĩ hơn để e hiểu rõ hơn dc k ạ
À, thì dễ kiểm nghiệm xem nó có đúng là 4 bytes theo thứ “ecba” không đó mà. Code trên Python cho code ngắn hơn, dễ đọc hơn. Python có thể làm tốt công việc làm mã giả cho C hay ngôn ngữ khác