#include <stdio.h>
int length(char a[]) //要善用指针
{
char *ch = a;
int c = 0;
while(*ch != '\0')
{
c++;
ch++;
}
return c;
}
bool judge(char a[], int n)
{
bool flag = true;
for(int i = 0; i < n / 2; i++)
{
if(a[i] != a[n - 1 - i])
{
flag = false;
break;
}
}
if(flag == false)
return false;
else
return true;
}
int main()
{
int t;
char a[105];
scanf("%d", &t);
while(t--) {
char ch;
scanf("%s", a);
getchar();
int n = length(a);
printf("%d\n", n);
if(judge(a, n))
printf("yes\n");
else
printf("no\n");
}
return 0;
}
疑问
为什么scanf("%s", a)的a前面没有&?
解:因为此处的a已经是地址了,代表数组a的首地址,相当于&a[0],就和指针一样。
总结
C语言处理字符串是zdwdnmd,要善用指针变量