‹ 上一题 下一题 ›

g5-08435. cstring·strlen 别塞进循环条件 未做

1000 ms 256 MB 测试点 ? 知识点题GESP-55级·STL客观题单选
char s[100005];
scanf("%s", s);
for (int i = 0; i < strlen(s); i++) {
    // 逐字符处理
}

对这段代码的说法,正确的是( )。

  • A. 没有问题:strlen 是 O(1),放循环条件里无所谓
  • B. 编译错误:strlen 不允许出现在循环条件中
  • C. 没有问题:编译器会自动把 strlen 提到循环外只算一次
  • D. strlen 每次调用都从头数到 '\0'(O(n)),放进循环条件整体退化成 O(n 的平方)——应先写 int len = strlen(s)
未选择
输入
输出

            
答案