从键盘输入一个字符串,判断是否为回文(即对称),例如:输入1234567654321,输出“YES" ;输入123456,输出”NO"#include<stdio.h>
void main()
{
char a[20];
int i,j,d;
gets(a);
d=strlen(a);
for(i=0;i<d;i++)
{for(j=d;j>0;j--)<br>if(a[i]==a[j])<br> printf("Yes"); break;<br>if(a[i]!=a[j])<br> printf("No"); break;<br>}
}有yes的输出。没有no的。
1、回文判断方法:
有一个字符串,依次作如下判断:
第一个字符与最后一个字符是否相同
第二个字符与倒数第二个字符是否相同
......
只要有一对字符不相同,则不是回文,否则为回文。
2、可以参考下面的代码:
int huiwen(char *s)
{
char *p = s;
while(*p) p++;//找到结束符\0的位置。
p--;//\0的前一个字符,就是字符串的最后一个字符。
while(s<p)
{
if(*s != *p) return 0;//发现不同,不是回文。
s++;
p--;//二者向中间移动。
}
return 1;//到相遇后一直相同,是回文。
}
int main()
{
char s[100];
scanf("%s",s);//输入字符串。
if(huiwen(s))//判断是否回文并输出结果。
printf("%s是回文字符串\n",s);
else
printf("%s不是回文字符串\n",s);
return 0;
}
扩展资料:
isdigit()函数:判断一个字符是否为数字
iscntrl()函数:判断一个字符是否为控制字符
isalpha()函数:判断一个字符是否是字母
isalnum()函数:判断一个字符是否是字母或者数字
double cabs(struct complex znum) 返回复数znum的绝对值
double fabs(double x) 返回双精度参数x的绝对值
long labs(long n) 返回长整型参数n的绝对值
modf()函数:提取浮点数的小数和整数部分
参考资料来源:百度百科-C语言函数
#include <stdio.h>
#include <string.h>
#define N 100
int main(){
char s[N];
int i,j,n,count=0;
printf("Input a string:\n");
gets(s);
n=strlen(s);
for(i=0,j=n-1;i<j;i++,j--){
if(s[i] == s[j])
count++;
else
count--;
}
if(count == (n/2))
printf("输入的是回文。");
else
printf("输入的不是回文。");
return 0;
}
程序解析:
输入提示信息:“Input a string:\n”
输入格式:gets()
判断是回文的输出提示信息:“输入的是回文。”
判断不是回文的输出提示信息:“输入的不是回文。”
扩展资料:
gets()函数:从标准输入设备读字符串函数。
用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。
其调用格式为:
gets(s);
其中s为字符串变量(字符串数组名或字符串指针)。
gets(s)函数与scanf("%s",s)相似,但不完全相同。
使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
本回答被网友采纳用两头凑法,找到字符串的最后一个字符,与第一个字符比较。然后各自向中间移动,逐个比较。如果比较中出现不同,则不是回文。当二者相遇时,一直都相同,则字符串为回文。
参考代码如下:
int huiwen(char *s)回文判断方法:
有一个字符串,依次作如下判断:
第一个字符与最后一个字符是否相同
第二个字符与倒数第二个字符是否相同
......
只要有一对字符不相同,则不是回文,否则为回文。
以下是C语言代码,供参考:
#include <stdio.h>