Online Compiler C

#include <stdio.h> int suma(char a[],int res[]) { int i = 0,count_save=0,count=0; while(a[i] != '\n' && a[i] != '\0') { if(a[i]==' '){ res[count_save++]=count; count=0; }else {count++;} i++; }res[count_save++]=count; return count_save; } int sum(char a[],int res[]) { int size=suma(a,res); if(a[0]==a[size-1]){ return 1; }return 0; } int main() { char a[1001]={"Anna went to kayak school"}; int res[1001]; int answer = 0; answer=sum(a,res); int all=0; all+=answer; printf("%d",all); return 0; }
这段代码的功能是统计字符串中单词的长度,然后判断第一个单词和最后一个单词的长度是否相等。代码中有一个关键错误:在 `sum` 函数中,`size` 是单词的个数,但 `a[size-1]` 访问的是字符串中的字符,而不是单词的长度。

- 在 `sum` 函数中,你试图用 `a[0]` 和 `a[size-1]` 来比较第一个和最后一个单词的长度,但 `a` 是原始字符串,`size` 是单词个数,所以 `a[size-1]` 取的是字符串中第 `size-1` 个字符,而不是最后一个单词的长度。你应该使用 `res` 数组来获取第一个和最后一个单词的长度。

- 另外,`sum` 函数返回 1 或 0,但 `main` 函数中 `all` 变量只加了一次,实际上 `all` 的值就是 `answer` 的值,这里可以简化。