在线编译器 C

#include<stdio.h> const int M=1000; char N(char c) { if(c>='A'&&c<='Z') { return c=c+32; } return c; } int main() { int count=0; char str[M+1]; int i=0; char ch; while((ch=getchar())!='\n') { str[i]=ch; i++; } str[i]='\0'; int k=0; char first; char last; while(str[k]!='\0') { while(str[k]==' ') k++; first=str[k]; if(str[k]=='\0') { k--; last=str[k]; } if(N(first)==N(last)) { count++; } } printf("%d",count); return 0; }
这段代码试图统计一行文本中首尾字母相同的单词数量,但存在逻辑错误。代码从输入读取一行字符串,然后遍历字符串,试图识别每个单词并比较其首尾字母(忽略大小写)。

- 代码中 `last` 变量从未被正确更新,它始终是第一个单词的最后一个字符或字符串末尾字符,而不是当前单词的最后一个字符。你需要思考如何获取每个单词的最后一个字母。
- 内层 `while` 循环跳过空格后,没有正确找到单词的结尾位置。你需要一个方法来定位每个单词的结束位置,然后才能比较首尾字母。