请大家帮我看看这道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;
} 展开
输入一个数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;
} 展开
2个回答
展开全部
#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;
}
展开全部
你写的感觉好乱..
看下我的吧
#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 <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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询