c语言 判断一个字符串是不是回文

你的思路没错,错在
回文

所有对应位置都匹配,有一个不匹配的就不是,改一下你的
if
语句就行了

㈡ C语言编写一个程序,判断输入的一个字符串是否是回文。

代码如下:

#include <stdio.h>

int main()

{

int n, reversedInteger = 0, remainder, originalInteger;

printf("输入一个整数: ");

scanf("%d", &n);

originalInteger = n;

// 翻转

while( n!=0 )

{

remainder = n%10;

reversedInteger = reversedInteger*10 + remainder;

n /= 10;

}

// 判断

if (originalInteger == reversedInteger)

printf("%d 是回文数。", originalInteger);

else

printf("%d 不是回文数。", originalInteger);

return 0;

}

(2)c语言字符串回文判断扩展阅读

1、函数的专返回值是通属过函数中的return语句获取的。

2、函数值的类型。

3、如果函数值的类型和return语句中表达式的值不一样,则以函数类型为准。

4、如果调用函数中没有return语句,并不带回一个确定的用户需要的值,函数不是不带回值,而只是不带回有用的值,带回一个不确定的值。

㈢ c语言编程:判定一个字符是否是回文串(回文串是指从开头读和从末尾读均为相同字符的字符串,例如:abcba

1、首先,在C语言软件中,定义多个整型变量,保存程序中所需操作的数值。

㈣ C语言判断回文字符串

//你的错误在于递归调用的时候,i每次都是0,所以要用static int i = 0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int hui(char a[10000])
{
int n;
static int i=0; //这里改为static int i = 0就对了,因内为你递归调用i的时候每次都容把i置为0了,那肯定不行的,因为你的i是在变得,所以用static
n=strlen(a);

if(i>=n-i-1)
return 1;
else
{
if (a[i]==a[n-i-1])
{
i++;
hui(a);
}
else
return 0;
}
}
int main(int argc, char *argv[])
{
char a[10000];
gets(a);
if (strlen(a)==0) {printf("No\n");}
else
{
if(hui(a))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}

㈤ c语言判断一个字符串是否是回文,并输出判断结果,这到题的代码怎么理解

#include<stdio.h>

intmain()
{
chars[81];
intn=0,i,k;
printf("pleaseinput: ");
gets(s);
while(s[n++]!='');//获取字符串长度:n-1
n=n-1;//长度
printf("字符数量为:%个 ",n);
k=n/2;//字符串的中间位置保存在k中
for(i=0;i<k;i++)//从第一位跟最后一位开始内对比
{ 容 //再对比第二位和倒数第二位,以此类推
if(s[i]!=s[n-1-i])break;//只要任意一对不满足都不是回文数,不用再继续
}
if(i==k)printf("yes ");//如果i==k,说明已经比较到最中间位置,也就表示是回文
elseprintf("no ");
return0;
}

㈥ c语言,判断字符串是否为回文,需进行多组测试

#include"stdio.h"
intmain(intargv,char*argc[]){
版chars[100],i,k;
printf("Inputstring,Ctrl+Zend... ");
while(gets(s)){
权for(k=0;s[k];k++);
for(k--,i=0;i<k;i++,k--)
if(s[i]-s[k])
break;
if(i>=k)
printf(" '%s'isapalindromestring ",s);
else
printf(" '%s'isnotapalindromestring ",s);
}
return0;
}

运行样例:

㈦ C语言 判断给定字符串是否是回文

我猜楼主的想法是:

让数组的头和尾比较,一样了,就比较下一对,一直比较到最后,如果i=j,就说明是回文。

但是题主却没有用循环语句,按照楼主的程序就能比较两次,比较不完肯定错;而且题主找到的i,并不指向数组最后一个元素,而是指向他的结尾符号。(详情看图)

改正意见:

1.使用循环语句,从头判断到尾。

那就要求我们给循环语句一个最长执行长度,这就要考虑两种情况,一种,数组长度为奇数,另一种,数组长度尾偶数。不同的情况我们的判决情况也不一样,必须选一个适合两种情况的判决条件,这里使用n=i/2-1,让n来作为标准。(原因看图)。(其实除了要考虑这种情况之外,还要考虑特殊情况,比如长度为1,2这样的,这种特殊情况,就是程序容易忽略,容易出错的地方。)

2.在判断前,i-1,让i指向数组最后一个元素。

#include<stdio.h>
intmain()
{
chara[20];
gets(a);
inti,j,n;
j=i=0;
while(a[i]!='')i++; //此时i并不指向a的最后一个元素,而是指向它的结尾符号‘、0’
n=i/2-1;
i--; //让i指向a的最后一个元素
while(j<=n)
{
if(a[i]!=a[j])break;
else{
i--;
j++;
}
}
if(j>n)printf(" 回文!");
elseprintf(" 不回文!");
return0;

}

总结:编程不容易,思考需谨慎。面向过程的的编程,任何情况都要考虑出来,这样你的程序才是正确的。

㈧ C语言 判断回文字符串

#include <stdio.h>

/*fun()函数:传入一个字符数组,如果是回文序列返回1,不是就返回0*/
int fun(char a[])
{
int i,j,n=0;
while(a[n]!='\0') n++; /*计算传入字符串(数组)长度*/
n--; /*跳出while循环时 a[n]='\0',故n--*/
for(i=0,j=n;i<j;i++,j--)
if(a[i]!=a[j]) break;
if(i>=j) return 1;
return 0;
}

int main()
{
char str[20];
puts("输入一个字符串:\n");
gets(str);
if(fun(str)) printf("%s 是回文序列\n",str);
else printf("%s 不是回文序列\n",str);
return 0;
}

㈨ c语言编程题 输入一字符串,判断该字符串是否为回文。

#include <stdio.h>

#include<stdlib.h>

int main()

{

char a[100];

int i=0,j=0;

printf("请输入字符串: ");

gets(a);

while(a[i]!='')

i++;

i--;

for(;j<=i;i--,j++)

{

if(a[i]!=a[j])

{

break;

}

}

if(j<=i)

{

printf("不是回文串 ",a);

}

else

{

printf("是回文串 ",a);

}

system("pause");

return 0;

}

运行效果:

(9)c语言字符串回文判断扩展阅读:

return 0代表程序正常退出。return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。

return语句用来结束循环,或返回一个函数的值。

1、return 0,说明程序正常退出,返回到主程序继续往下执行。

2、return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已。

㈩ 用C语言写一个程序判断一个字符串是否是回文

#include<stdio.h>
#include<string.h>
int main()
{
int a,b=0,i,j; //b用于计数,a用于读取字符串长度,i,j表示字符数组下标
char c[1000];
printf("请输入字符串:\n");
gets(c);
a=strlen(c);
if(a%2==0) //当长度(不包含结束符)为偶数时
{
for(i=0,j=a-1;i<j;i++,j--) //j移动到结束符之前的一个字符
{
if(c[i]==c[j])
{
b=b+2;
}
}
if(b==a) //当相等字符串个数=输入字符串个数时
printf("yes\n");
else
printf("no\n");
}
else if(a%2!=0) //当长度(同上)为奇数时
{
if(a==1) //当字符串为1个时
{
printf("yes\n");
}
else
{
for(i=0,j=a-1;i<j;i++,j--) //j移动到结束符之前的一个字符,不比较中间字符
{
if(c[i]==c[j])
{
b+=2;
}
}
if(b==a-1) //当相等字符串个数=输入字符串个数-1时
printf("yes\n");
else
printf("no\n");
}
}
return 0;
}