请大家帮我看看这道C语言题目,谢谢了!!求回文数?

这道题是求回文数(回文数,eg:1,2,22,33,12321,123454321,12344321)输入一个数n,要求输出比n大的第一个回文数。#include<std... 这道题是求回文数(回文数,eg:1,2,22,33,12321,123454321,12344321)
输入一个数n,要求输出比n大的第一个回文数。
#include<stdio.h>
int main()
{
int n,i,t,b,j,m;
int a[1000];
while(scanf("%d",&n)!=EOF)
{
for(t=n+1;;t++)
{
for(i=0;t>0;i++)
{
a[i]=t%10;
t=t/10;
}
b=i-1;
m=0;
for(j=0;j<(b+1)/2;j++)
{
if(a[j]!=a[b-j])
{
m=1;
break;
}
}
if(m==0)
{
break;
}
}
printf("%d",t);
}
return 0;
}
展开
 我来答
xoaxa
2015-02-25 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3413万
展开全部
#include <stdio.h>
int main() {
int n,i,t,b,j,m,k;
while(scanf("%d",&n) != EOF) {
if(n < 0) n = -n;
for(i = n + 1; ; ++i) {
k = i;
m = 0;
while(k) {
m = 10 * m + k % 10;
k /= 10;
}
if(m == i) {
printf("%d\n",m);
break;
}
}
}
return 0;
}
源稚竹
2015-02-25 · 超过13用户采纳过TA的回答
知道答主
回答量:19
采纳率:0%
帮助的人:15.9万
展开全部
你写的感觉好乱..
看下我的吧
#include <stdio.h>
#include <stdlib.h>
int judge(int n)
{
int m;
int i;
int j;
int k;
int num;
int flag=1;
char str[100];
for(k=0;k<100;k++)
str[k]='\0';
m=n;
for(i=0;n>=1;i++)
n=n/10.0;
i=i-1;
j=i;
for(i;i>=0;i--)
{
num=m%10;
m=m/10;
str[i]=num+'0';
}
for(i=0;i<=j/2;i++)
{
if(str[j-i]!=str[i])
flag=0;
}
if(flag==1)
return 1;
else
return 0;

}
int main()
{
int i;
int f=0;
scanf("%d",&i);
while(f==0)
{
if(judge(i)==1)
{
printf("%d",i);
f=1;
}
i++;
}
return 0;
}

思路: 就是搞一个函数,把一个输入的n变成数组,然后第一位与最后一位比较,第二位与倒数第二位比较,以此类推。应该挺简单的。
其实C语言这种东西,差不多就好了,感觉有些题目根本没必要做 ,没有实际价值。。。
一般C语言是为将来学习打下基础的,除非你是搞单片机这种。。。
追问
请问我的程序哪里出问题了,帮我指出来,当然你的做法也非常不错,谢谢你了
追答
你可以写的整洁点吗???????????

#include
#include
int main()
{
int n,i,t,j,m,b,tmp;
int a[1000];
while(scanf("%d",&n)!=EOF)
{
for(t=n;m!=0;t++)
{
tmp=t;
for(i=0;i0;i++)
{
a[i]=tmp%10;
tmp=tmp/10;
}
b=i-1;
m=0;
for(j=0;j<=b/2;j++)
if(a[b-j]!=a[j])
{
m=1;
break;
}
if(m==0)
printf("%d\n",t);
}
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式