c语言如何求回文数

c语言如何求回文数

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

2、然后我们添加头文件

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

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

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

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

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

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-30
#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;
}

第2个回答  2018-10-28

#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");
}
}

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

第3个回答  推荐于2017-09-14

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");
}

第4个回答  2014-05-10
#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); //字符串转数字
}
}

相似回答