输入一个字符串,判断是否为回文
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)
{
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;
}
2017-10-30 · 知道合伙人教育行家
知道合伙人教育行家
向TA提问 私信TA
回文判断方法:
有一个字符串,依次作如下判断:
第一个字符与最后一个字符是否相同
第二个字符与倒数第二个字符是否相同
......
只要有一对字符不相同,则不是回文,否则为回文。
以下是C语言代码,供参考:
#include <stdio.h>
#include <string.h>
#define N 100 //定义存储字符串的数组大小
int main(void)
{
char str[N];
int i,j,flag=1; //定义int型变量flag,作为判断是否回文的标志
printf("请输入字符串:");
gets(str); //把输入的字符串存入数组
i=strlen(str)-1; //下标从0开始,最后字符下标为字符串长度-1
for(j=0;j<=i;i--,j++)
if(str[i]!=str[j])
{
flag=0; //只要有一对相比较的字符不同,则置flag为0
break;
}
if(!flag) //若flag非真,即为0,则输出不是回文
printf("不是回文\n");
else
printf("是回文\n");
return 0;
}
2013-12-14
/*
* File: main.c
* Author: dreamsxin
*
* Created on 2010年5月22日, 下午2:33
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
*
*/
int main(int argc, char** argv) {
char a[20];
int i, len, flag = 0;
printf("请输入字符串:\n");
gets(a);
len = strlen(a);
if (len < 2) {
printf("长度小于2\n");
return 0;
}
for (i = 0; i <= len / 2; i++) {
if (a[i] != a[len-i-1]) {
//printf("i=%d,len-i=%d\n", i, len-i-1);
flag = 1;
break;
}
if (flag == 1) {
break;
}
}
if (flag == 1) {
printf("No");
} else {
printf("Yes");
}
return (EXIT_SUCCESS);
}