回文串是指正读和反读都一样的字符串
下面是我的代码为什么不对?还有这两个错误提醒。我是用object-c编译的。
#include <stdio.h>
#include <stdlib.h>
int main(void){
char str[100];
gets(str);
int length;
length=strlen(str);
char str1[100];
int a;
for (int i=0; i<length; ++i) {
for (a=length-2; a>=0; --a) {
str1[i]=str[a];
}
}
if (strcmp(str,str1)==0) {
printf("Yes");
}
else printf("No");
return 0;
}
错误原因:
1)C语言中变量的定义属于声明,需要写在一个函数的开始部分。
2)把一个字符串中的字符逆序取出赋值给另一个字符数组时,记得末尾加上空字符。
参考代码如下,希望能帮到您!
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[100];
int length;
char str1[100];
int a=0;
int i;
gets(str);
//int length;
length=strlen(str);
//char str1[100];
//int a;
// for(int i=0; i<length; ++i)
/*
for(i=0; i<length; ++i)
{
for (a=length-2; a>=0; --a)
{
str1[i]=str[a];
}
}*/
for(i=length-1; i>=0; --i)
{
str1[a]=str[i];
a++;
}
str1[a]=0;
if(strcmp(str,str1)==0)
{
printf("Yes\n");
}
else
printf("No\n");
return 0;
}
C语言中变量的定义属于声明,需要写在一个函数的开始部分不是很了解,为什么不能要用的时候再定义,一定要定义在开头那里?
追答这是C语言的规定哈。看来你目前的基础还是比较薄弱,给你推荐一本入门级的书,参考下
楼主你忘记加字符串类函数的头文件#include <string.h>,所以strlen,strcmp都是无法使用的,
而且代码也有些问题,无法得出正确的结果,我帮你修改了一下,你好好看看理解一下:
#include <stdio.h>