栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

西电C语言作业:回文数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

西电C语言作业:回文数

标题    
回文数

类别
数组

时间限制    
2S

内存限制    
1000Kb

问题描述    
若一个非负整数其各位数字按照正反顺序读完全相同,则称之为回文数,例如12321。
判断输入的整数是否是回文数。若是,则输出该整数各位数字之和,否则输出no。

输入说明    
输入为一个整数n,0<=n<1000000000。

输出说明    
若该整数为回文数,则输出整数各位数字之和,否则输出no。

输入样例    
样例1输入
131
样例2输入
24

输出样例
样例1输出    
5
样例2输出
no

 

#include
#include
int main (){
	  int n,n1,n2,m=0,j,p,i,a=1,z=1,s=0,k,d,sum=0,k1,k2;
    scanf("%d",&n);
    n1=n;
    n2=n;
    p=1+log10(n);
    i=p+1;
    j=p-1;
	if(p%2==0)
	{
	  do{
     k1=pow(10,j);
     a=n1/k1;
     n1=n1%k1;
     j=j-1; 

	 z=n2%10;
	 n2=n2/10;	 
	  if(a==z){s=s+1;}
	  else s=s;
	  }
      while(j>=p/2);
     if(p==2*s)
	  {  k=n;
      do{d=pow(10,i);
        sum=sum+n/d;
        m=m+(n/d)*d;
        n=k-m;
        i=i-1;
      }while(i>=0);
      printf("%dn",sum);

      }else printf("no");
    }if(p%2!=0)
    {
	  do{
     k1=pow(10,j);
     a=n1/k1;
     n1=n1%k1;
     j=j-1; 

	 z=n2%10;
	 n2=n2/10;	 
	  if(a==z){s=s+1;}
	  else s=s;
	  }
      while(j>p/2);
     if(p==2*s+1)
	  {  k=n;
      do{d=pow(10,i);
        sum=sum+n/d;
        m=m+(n/d)*d;
        n=k-m;
        i=i-1;
      }while(i>=0);
      printf("%dn",sum);

      }else printf("no");}

  return 0;
}

较为繁琐,但用的方法比较基础,容易理解。(因为是大一新生才学的)
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346893.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号