社区
C语言
帖子详情
请问个问题用C语言怎样判断一个整数是不是对称数(即:3、1221、55等等)谁能说说解题思路,不要求有程序
tracy19822004
2005-11-07 12:40:51
请问个问题用C语言怎样判断一个整数是不是对称数(即:3、1221、55等等)谁能说说解题思路,不要求有程序
...全文
2191
16
打赏
收藏
请问个问题用C语言怎样判断一个整数是不是对称数(即:3、1221、55等等)谁能说说解题思路,不要求有程序
请问个问题用C语言怎样判断一个整数是不是对称数(即:3、1221、55等等)谁能说说解题思路,不要求有程序
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
K
2005-11-07
打赏
举报
回复
首先确定一下你的判断规则
1是不是对数?奇数长度的字符串算不算对数?
比如12321
判断:
先得到字符串的长度,大于1就除以2,然后用一个循环
bool f=true;
int len=strlen(buf);
先检测规则,奇数长度,偶数长度?
if (len%2==0) 偶数
else 奇数
int half=len/2;
for (int i=0;i<half;i++)
{
if (buf[i]!=buf[len-i-1])
{
f=false;
break;
}
}
cout<<hex<<f<<endl;
return f;
如果这都不算爱
2005-11-07
打赏
举报
回复
判断一个整数是否是对称数
--------------------------------------------------------------------------------
源作者:追风 人气:4299
昨天到一家公司笔试,做了一道判断一个整数是否是对称数的题.要求用Pascal语言,回来后我也用C#来实现.算法如下,期望对初学C#的朋友有点帮助.这里我用了两种算法实现.
算法一,先取首个与末个数字比较,再取第二个与倒数第二个字符比较,以此类推...在每一次比较中若不相等则返回一个为false的bool值,即这个数不是对称数.具体程序如此而已下:
using System;
namespace ConsoleApplication3
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
public static void Main()
{
int a=36455463;
bool flag;
flag=Symmetry(a);
if(flag)
Console.WriteLine(a+"是对称数!");
else
Console.WriteLine(a+"不是对称数!");
}
public static bool Symmetry(int Val)
{
string s;
s=Val.ToString();
char x,y;
bool flag=true; //如果Val是对称数flag为真,否则为假
for(int i=0;i<s.Length/2;i++)
{
x=s[i];
y=s[s.Length-1-i];
if(x!=y)
{
flag=false; //不是对称数
}
}
return flag;
}
}
}
算法二,先定义一个字符串,按倒序的方式读入这个整数依次用连接字符串的文法赋给这个串.最后比较两个字符串是否相等.若不相等则返回一个为false的bool值,即这个数不是对称数.具体程序如此而已下:
using System;
namespace ConsoleApplication3
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
public static void Main()
{
int a=36455463;
bool flag;
flag=Symmetry(a);
if(flag)
Console.WriteLine(a+"是对称数!");
else
Console.WriteLine(a+"不是对称数!");
}
public static bool Symmetry(int Val)
{
string s,x="";
s=Val.ToString();
bool flag=true; //如果Val是对称数flag为真,否则为假
for(int i=s.Length-1;i>=0;i--)
{
x=x+s[i];
}
Console.WriteLine(s+" "+x);
if(s.Trim()!=x.Trim())
{
flag=false; //不是对称数
}
return flag;
}
}
}
tracy19822004
2005-11-07
打赏
举报
回复
是个数值不是字符 也不能转化为字符型
th001
2005-11-07
打赏
举报
回复
up!
快乐鹦鹉
2005-11-07
打赏
举报
回复
这还不好办么。分别定义两个遍历指针,一个从第一个字符开始向后移动,一个从最后一个字符向前移动。每次两个指针都要移动。判断两个指针指向的字符是否相同,相同则继续,不同则不是对称数;如果发现前指针位置>=后指针位置,则遍历结束,该数为对称数。
smltiger
2005-11-07
打赏
举报
回复
先转成字符型,再设let,right两个指针,left从左向右查找,right从右向左查找,当left的值=right的值且left=right时,OK
cdo
2005-11-07
打赏
举报
回复
觉得还是换成字符串的方法最简单
SKYBULE
2005-11-07
打赏
举报
回复
学习中!
gamelearner
2005-11-07
打赏
举报
回复
#include <math.h>
bool IsHuiWen( size_t n )
{
size_t size = 1, nn = n;
while( nn/=10 ) size++;
for( size_t i = 0; i < size/2; i++ )
{
size_t j = (size_t)pow( 10, size-1-2*i );
if( n/j != n%10 )
return false;
n = n%j/10;
}
return true;
}
#include <iostream>
using namespace std;
void main()
{
cout << IsHuiWen( 12221 );
}
csucdl
2005-11-07
打赏
举报
回复
是回文数吧
如果输入的是机器能够表示的整数范围内的话,倒也好办
判断该数和他的反序数相等否
bool IsPal(const int &n)
{
int d = 0;
int i = n;
while(i != 0)
{
d *= 10;
d += i % 10;
i /= 10;
}
return (d == n);
}
chijiao
2005-11-07
打赏
举报
回复
应该很容易看懂的吧:
bool IsDuiCheng(long iIll)
{
// printf("%ld",iIll);
if(iIll < 0)
{
return false;
}
if(iIll <= 9)
{
return true;
}
long iHalf = 0 ;
long iMuShu = 0;
for( ; ; )
{
iMuShu = iIll % 10 ;
iIll = iIll / 10;
if(iHalf > iIll || iIll <= 0)
{
return false;
}
iHalf *= 10;
iHalf += iMuShu;
if(iIll == iHalf)
{
return true;
}
}
return false;
}
ttfy1234
2005-11-07
打赏
举报
回复
楼上的想法不错!
wuwen19
2005-11-07
打赏
举报
回复
要是不想转成串的话,
循环 除10,商除10,余数乘10,
判断结果
int print_num(int num)
{
int over = 0;
int quotient = 0;
quotient = num;
while(1)
{
over = over*10 + quotient%10 ;
quotient=quotient/10;
if ( quotient == 0 )
break;
}
printf("num = <%d>\n",num);
printf("over = <%d>\n",over);
if (num == over )
return 1;
else
return 0;
}
字符串方法一头一尾指针移动判断就可以了。
晨星
2005-11-07
打赏
举报
回复
第一步,把一个整数转化成字符串;
第二步,按照快乐鹦鹉说的做。
优化:遇到负数,直接返回不是。
caigp
2005-11-07
打赏
举报
回复
int i,j=0;
while(i!=0){
j=j*10+i%10;
i=i/10;
}
if(i==j) printf(" hui wen! ");
tracy19822004
2005-11-07
打赏
举报
回复
特别强调不能把它转化为字符型
「学点
C语言
系列」03
判断
一个
数
是不是
素
数
本文详细介绍了使用
C语言
判断
一个
数
是否为素
数
的方法。首先通过遍历2到S-1来检查S是否能被整除,然后优化算法,仅检查2到√S之间的
数
,提高效率。
c语言
判断
一个
数
是不是
回文
数
本文介绍了一种用
C语言
实现的回文
数
判断
方法,通过倒置
整
数
并与原
数
对比来确定是否为回文
数
。文章提供了两种实现方式,并详细解释了其中涉及的
数
位遍历和迭代求和技巧。
每日一C:用不一样的脑回路理解:输入
一个
不多于五位
数
的正
整
数
本文介绍了如何处理输入不超过五位
数
的正
整
数
问题,包括确定其位
数
和输出每位
数
字。文章通过三种方法有效表示
数
位,并提供了使用if else语句和switch语句的
解题
思路
,适合
C语言
初学者。
C语言
——
判断
回文
数
/
对称
数
这篇文章介绍了如何使用
C语言
判断
一个
整
数
是否为
对称
数
,即回文
数
,通过翻转
数
字并比较来实现。同时提到了字符串翻转问题,并鼓励初学者通过编写相关函
数
来练习基础编程技能。
c语言
判断
一个
数
是不是
质
数
的n次方,
c语言
实践
判断
一个
数
是不是
素
数
该博客介绍了两种
C语言
判断
素
数
的方法,通过循环检查输入
数
字是否能被其他
整
数
整除来确定其素
数
状态。示例代码详细展示了如何在
C语言
中实现素
数
判断
,包括错误输入处理和优化后的算法。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章