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ểucharnê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ểuintcầ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ỏ
ptrphả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ểuintnê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