Which condition increases the word count in a sentence?
4 phương ánCó giải thích
#include <stdio.h>
#include <string.h>
int main() {
char s[1000];
int i, count = 0;
printf("Enter a sentence: ");
fgets(s, sizeof(s), stdin);
for (i = 0; s[i] != '\0'; i++) {
if (condition???) {
count++;
}
}
printf("Total words: %d\n", count);
return 0;
}Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "s[i] != ' ' && (i == 0 || s[i-1] == ' ')". Đếm từ thực chất là đếm số lần một từ bắt đầu, nên điều kiện phải nhận ra hai việc cùng lúc: ký tự hiện tại không phải khoảng trắng, và chỗ ngay trước nó là ranh giới, tức đang ở đầu chuỗi hoặc ký tự liền trước là khoảng trắng. Nhánh i == 0 đặt trước phép đọc s[i-1] nên nhờ tính rút mạch của toán tử hoặc, chương trình không bao giờ đọc ra ngoài mảng. "s[i] != ' '" sai vì nó cộng một lần cho mỗi ký tự khác khoảng trắng, một từ năm chữ sẽ bị đếm thành năm từ. "s[i] != '\n'" sai nặng hơn, nó so với ký tự xuống dòng nên đếm gần như mọi ký tự, kể cả khoảng trắng. "s[i] == ' ' && s[i-1] == ' '" sai vì nó đếm các cặp khoảng trắng liền nhau, lại còn đọc s[-1] khi i bằng 0, tức truy cập ngoài vùng mảng.
Cùng phần 8
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây