在线编译器 C

#include <stdio.h> #include <stdlib.h> #include <ctype.h> int main() { int count=0; char s1[1001]; gets(s1); int len = strlen(s1); while (i<len) { if (s[i]=''){ i++; continue; } char a=tolower (s[i]); while (i<len&&s[i]!='') { i++;} char b=tolower (s[i-1]); if(a==b){count++; } } printf("%d",count); return 0; }
这段代码试图统计字符串中每个单词首尾字母(忽略大小写)相同的单词数量,但存在多个语法和逻辑错误。

- 变量 `i` 未声明就使用,需要在循环前定义并初始化为0。
- 字符串数组名为 `s1`,但后续代码中错误地使用了 `s`,应统一为 `s1`。
- 条件判断 `s[i]=''` 是赋值语句,不是比较,且空字符应写为 `' '`(空格)或 `'\0'`(字符串结束符),具体取决于你想跳过空格还是处理单词边界。
- 内部循环 `while (i<len&&s[i]!='')` 同样有赋值和空字符问题,且缺少大括号可能导致逻辑混乱。
- 单词首字母 `a` 在遇到空格时会被错误地赋值为空格的小写形式,应只在遇到非空格字符时记录首字母。