c语言如何求回文数

c语言如何求回文数... c语言如何求回文数 展开
 我来答
滟丽00
高粉答主

2019-05-07 · 繁杂信息太多,你要学会辨别
知道答主
回答量:1487
采纳率:0%
帮助的人:25.1万
展开全部

1、首先打开vc6.0,新建一个控制台项目。

2、然后我们添加头文件

3、然后我们添加main主函数。

4、然后我们定义6个long型变量。

5、然后我们使用scanf给input赋值。

6、然后我们分解个位、百位、千位、万位。

7、然后我们使用if判断。

8、然后我们运行程序,看看结果已经能判断回文数

fallx
2020-05-30 · TA获得超过5485个赞
知道大有可为答主
回答量:2321
采纳率:73%
帮助的人:725万
展开全部
#include<stdio.h>
#include<string.h>

#define MAX 100   //预定义数组长度
int reverse(char a[])//判断是否回文,数字也当字符处理,所以,不管是数字还是字符串,都能判断
{
int n=strlen(a);
int i;
for(i=0;i<n;i++)
{
if(a[i]!=a[n-i-1])
return 0;  //从首尾开始比较,有任一不相等,不是回文,返回0
if(i==n-i-1) //全相等,是回文。返回1
return 1;
}
}
int main(){

char a[MAX];

while(scanf("%s",a)!=EOF)//接受输入,将输入当字符串来处理 CTRL+Z结束输入
{
if(reverse(a))
printf("YES\n");
else
printf("NO\n");
}

return 0;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
疯狂小鸟ZXD
高粉答主

2018-10-28 · 每个回答都超有意思的
知道大有可为答主
回答量:1.3万
采纳率:96%
帮助的人:3041万
展开全部

#include<stdio.h>
main()
{   int n,i,j,k,l,m,sum,a[100],b[100];
    while(1){
     scanf("%d",&n);
     for(i=0;i<n;i++)
         scanf("%d",&a[i]);
     for(i=0;i<n;i++){
     m=a[i];k=0;l=0;sum=0;
     b[0]=m%10;sum=b[0];
     while(m){
     m/=10;
     k++;
     b[k]=m%10;
     sum+=b[k];
}
for(j=0;j<k/2;j++)
if(b[k-j-1]==b[j]) l++;
if(l>=k/2) printf("%d\n",sum);
else printf("NO\n");
}
printf("\n");
}
}

如图所示,望采纳。。。。。。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
推荐于2017-09-14 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6451万
展开全部

c语言判断回文数方法:生成逆向数,判断与原数是否相同,相同则是,不同则不是。

参考代码:

#include <stdio.h>
void main()
{
    int x=1, y,t;
    printf("input n: "); scanf("%d", &x ); //输入数据
    y=0;
    t=x; //保存下原数
    do {
        y=y*10+t%10;
        t/=10;
    } while(t); //原数逆序
    if ( y==x )
        printf("yes!\n");
    else
        printf("no!\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenfenggang99
2014-05-10 · TA获得超过1850个赞
知道大有可为答主
回答量:1746
采纳率:75%
帮助的人:1747万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int i,len,flag,cnt=1,num,numrev,addnum;
char str[20]={0},strRev[20]={0},hui[20]={0};
gets(str);   //输入数字 以字符串方式接收
num=atoi(str);  //转为数字
strcpy(strRev,strrev(str));  //将接收的字符串逆序 
numrev=atoi(strRev);        //转换成逆序的数字
while (1)
{
addnum = num+numrev;   //两个数字相加
printf("STEP%d:%d+%d=%d\n",cnt,num,numrev,addnum); //输出
itoa(addnum,hui,10); //将相加后的数字 转为字符串
len=strlen(hui);   //求长度
flag=0;            //标识是否是回文
for (i=0;i<len;i++)      //判断是否回文
{
if (hui[i]!=hui[len-i-1])
{
flag=1;      //如果不是回文 继续  
break;
}
}
if (!flag )             //根据上面标识符判断是否回文
{
printf("%d %d\n",cnt,addnum);  // 是户
break;
}else if (cnt++>=30)    //判断是否大于等于30次
{
printf("0\n");
break;
}
num =addnum;            //将和 作为下次运算的第一个数字
strcpy(strRev,strrev(itoa(num,str,10)));//根据第一个数逆序出第二个数
numrev=atoi(strRev); //字符串转数字
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式