Which condition increases the word count in a sentence?

4 phương ánCó giải thích
Đề bài
#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 án
Lờ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ộ đề