| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2629 人关注过本帖
标题:我自己写的一个判断回文数的程序,但遇到了一些问题
只看楼主 加入收藏
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
 问题点数:0 回复次数:5 
我自己写的一个判断回文数的程序,但遇到了一些问题

/*
判断任意输入的一个整数是否为回文数
思路: 将所输入的数字从个位数开始按顺序分解到数组1,2,3,4...里,
然后将数组的两头进行对比,从而判断其是否为回文数
*/
#include<stdio.h>
#include <conio.h>
#include<math.h>

int main()
{
int a[20]; //数组从1开始,0舍弃
int num,lenth,n,i,b=0,c=0,p;
// n是每一位数所在数组的编号;i用来判断是否为回文数;p用来打印数组进行验证

printf("请输入一个至少为三位数的数字\n");
scanf("%d",&num);
printf("请输入%d的位数\n",num);
scanf("%d",&lenth);

while (num<100) /*必须输入一个三位以上的整数*/
{
printf("请输入一个至少为三位数的数字\n");
scanf("%d",&num);
}

for (n=1;n<=(lenth-1);n++) //分解所输入数除最高位的每一位数
{
a[n]=num%((int)pow(10,n))/(pow(10,n-1));
printf("a[%d]= %d\n",n,a[n]); //打印每一位的数字
}
a[lenth]=num/(pow(10,lenth-1)); //读取最高位
printf("a[%d]= %d\n",lenth,a[lenth]); //打印最高位

//以下是判断所输入数字是否为回文数
if (lenth%2==0) //为偶数位时
{
for (i=1;i<=(lenth/2);i++)
{
if (a[i]==a[lenth+1-i]) b++;
}

if (b==(lenth/2))
printf("%d 是回文数 ",num);
else
printf("%d 不是回文数",num);

}
else //为奇数位时
{
for(i=1;i<=((lenth-1)/2);i++)
if (a[i]==a[lenth+1-i]) c++;

if (c==((lenth-1)/2))
printf("%d 是回文数 ",num);
else
printf("%d 不是回文数",num);
}

getch();
return 0;
}
当我输入1234321时结果如下
请输入一个至少为三位数的数字
1234321
请输入1234321的位数
7
a[1]= 1
a[2]= 8
a[3]= 3
a[4]= 4
a[5]= 3
a[6]= 2
a[7]= 1
1234321 不是回文数
不知为何,还望大家帮忙看看

搜索更多相关主题的帖子: 回文 判断 
2007-02-14 10:21
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
为何没人理

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2007-02-14 14:24
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
为何搞那么复杂.

[此贴子已经被作者于2007-2-14 14:28:16编辑过]



谁有强殖装甲第二部,可以Q我460054868
2007-02-14 14:27
lawin
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2007-1-29
收藏
得分:0 
情人节 高手都泡MM去了 耐心等吧
2007-02-14 14:29
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
以下是引用C语言学习者在2007-2-14 14:27:39的发言:
为何搞那么复杂.

本人还是个初学者,所以......


麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2007-02-14 14:32
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 

#include"stdio.h"
main()
{ int i,a[10],j;

scanf("%d",&j);
for(i=0;j;i++)
{
a[i]=j%10;
j=j/10;
}
for(j=0;j<i;j++,i--)
if(a[j]!=a[i-1])
break;
if(j>=i)
printf("是回文");
else
printf("不是回文");

}


羊肉串 葡萄干 哈密瓜!!
2007-02-14 18:47
快速回复:我自己写的一个判断回文数的程序,但遇到了一些问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031690 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved