请问这题c语言怎么做?

 我来答
自我编程
2019-02-13 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

字符串我直接给初值,要手动输入,你自己添加一个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;
}
u无力哀叹丶
2019-02-13 · TA获得超过520个赞
知道小有建树答主
回答量:696
采纳率:64%
帮助的人:335万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pieryon
2019-02-13 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14411 获赞数:166862
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
#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;}
追问
哥,不是回文数啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式