请问这题c语言怎么做?
3个回答
展开全部
字符串我直接给初值,要手动输入,你自己添加一个scanf函数好了。
程序按照题目要求,只考虑字母数字,忽略字母大小写。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int isHW(char *str);//是回文返回1,否则返回0
int main(){
char str1[]="A man,a plan, a canal: Panama";
char str2[]="race a car";
//上面两个字符串,我直接初值了,你要手动输入,自己加一个scanf函数好了
printf("%s\n",str1);
isHW(str1);
printf("%s\n",str2);
isHW(str2);
}
int isHW(char *str)
{
int len=strlen(str);
char *p0=str,*p1=&str[len-1];
while(p0<=p1)
{
if((*p0<'0' || *p0>'9')&&(*p0<'a' || *p0>'z')&&(*p0<'A' || *p0>'Z'))//忽略数字和字母以外的字符
{
p0++;
continue;
}
if((*p1<'0' || *p1>'9')&&(*p1<'a' || *p1>'z')&&(*p1<'A' || *p1>'Z'))
{
p1--;
continue;
}
//忽略字母大小写,如不是相同数字或字母,返回0
if(*p0!=*p1)
if((*p1>='0' && *p1<='9' && *p0>='0' && *p0<='9')||((*p1<'0' || *p1>'9') && (*p0<'0' || *p0>'9') && abs(*p0-*p1)!=32))
{
printf("false\n");
return 0;
}
p0++;
p1--;
}
printf("true\n");
return 1;
}
展开全部
#include <iostream>
#define gap 'A'-'a'
using namespace std;
int main(void)
{
string str;
char c;
//读取输入 以回车结束
while (scanf("%c", &c) && c!='\n')
{
//输入为字母时存储到string里面
if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z')
str = str + c;
}
for (int i = 0; i < str.length() / 2 + 1; ++i)
{ //不区分大小写 所以可能是相等 也可以能是小写-大写 也可能是大写-小写
if ( str[i] != str[str.length() - i - 1]
&& str[i] != str[str.length() - i - 1] + gap
&& str[i] != str[str.length() - i - 1] - gap)
{
printf("false\n");
return 0;
}
}
printf("true\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include "stdio.h"int main(){ int u,m; int sum=0; printf("请输入要判断的数u="); scanf("%d",&u); m=u; while(m) { sum=sum*10+m%10; m=m/10; } if(sum==u) printf ("u是回文数"); else printf("u不是回文数"); printf("\n"); return 0;}
追问
哥,不是回文数啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询