Онлайн компилятор C

#include <stdio.h> int suma(char a[]) { int i = 0; while (a[i] != '\n' && a[i] != ' ') { i++; } return i; } int sum(char a[]) { int num=0; int size=suma(a); if(a[0]==a[size-1]){ num++; }return num; } int main() { char a[1001]={"Anna went to kayak school"},c ; int answer = 0,i=0; while((c=getchar())!=EOF){ a[i]=c; i++; } answer=suma(a); // printf("a = '%s'\n", a); // printf("b = '%s'\n", b); while(answer!=0){ printf("%d\n", answer);} return 0; }
这段代码试图从输入中读取字符串,然后计算每个单词的长度,但存在几个问题。

代码中 `suma` 函数计算的是从字符串开头到第一个空格或换行符的字符数,而不是单词的长度。`sum` 函数检查第一个和最后一个字符是否相同,但从未被调用。主函数中有一个无限循环,因为 `answer` 的值在循环内从未改变。

- 在 `main` 函数最后的 `while(answer!=0)` 循环中,`answer` 的值没有更新,会导致无限循环。你需要考虑如何遍历字符串中的每个单词,并在每次找到单词后更新输出。
- `suma` 函数只返回第一个单词的长度,而不是所有单词。你需要设计一个循环来逐个处理每个单词,并调用类似 `suma` 的功能来获取每个单词的长度。