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

#include<stdio.h> int num(char *s){ int sum=0; while(*s!='\0'){ sum++; s++; } return num; } int same(char *s){ int number=num(s); if(s[0]==s[number-1]){ return 1; } return 0; } int main(){ char m[1000]; int n=1; while(n!=EOF){ n=scanf("%s",m); num(m); same(m); } int answer=0; answer=same(m); printf("%d",answer); return 0; }
这段代码试图判断输入的字符串首尾字符是否相同,但存在几个问题。

首先,`num` 函数本意是计算字符串长度,但它返回的是函数名 `num` 而不是变量 `sum`,这会导致编译错误或未定义行为。其次,`main` 函数中循环读取字符串,但每次循环都调用 `num` 和 `same` 却不使用返回值,最后只对最后一个读取的字符串进行判断,而且 `answer` 变量赋值后没有在循环内输出。

- 检查 `num` 函数的返回值:函数名本身不是变量,应该返回 `sum` 而不是 `num`。
- 思考 `main` 函数中循环的逻辑:你希望每次读取一个字符串就判断一次,还是只判断最后一个?当前代码只处理了最后一个字符串,且没有在循环内输出结果。