在线编译器 C

#include<stdio.h> void num(char *s){ int sum=0; while(*s!='\0'){ sum++; s++; } } int same(char *s){ int number=sum(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` 计算字符串长度,但它的返回值是 `void`,没有返回长度值。在 `same` 函数中调用 `sum(s)` 时,`sum` 并未定义,应该是想调用 `num`,但 `num` 没有返回值,所以 `number` 无法得到正确的长度。

其次,`same` 函数中 `if(s[0]=s[number-1])` 使用了赋值运算符 `=` 而不是比较运算符 `==`,这会导致条件判断出错。

另外,`main` 函数中的循环读取多个字符串,但每次循环都调用 `num` 和 `same` 却没有使用结果,最后只对最后一个输入的字符串进行判断,这可能不是你的本意。

- 检查 `num` 函数的返回类型,并确保它能返回计算出的长度。
- 在 `same` 函数中,比较字符时应该使用 `==` 而不是 `=`。