c语言编程 有追加分2-3. 整数的反序数

来源:百度知道 编辑:UC知道 时间:2024/09/23 10:05:32
输入四位正整数N,若它的 K(1<K<20)倍恰好是其反序数(例如:1234的反序数是4321),输出所有满足条件的K和反序数,若不存在,则输出:No output。

输入: 四位正整数N

输出: K和反序数

#include <stdio.h>
#include <string.h>
int changtochar(int m,char a[])//将m转成逆序的数组
{
int i=0;
while(m>10)
{
a[i++]=m%10+'0';
m=m/10;
}
a[i]=m+'0';
a[i+1]='\0';
return i;
}
void main()
{
int m,i,k,t,flag=1;
char a[10],b[10],c[10];
scanf("%d",&m);
k=changtochar(m,a);
strcpy(c,a);//将a的反序数保存
for(i=0;k>i;k--,i++)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
for(k=2;k<20&&flag;k++)
{
changtochar(k*m,b);
if(!strcmp(a,b))
{
printf("k=%d 反序数为 %s\n",k,c);
flag=0;
}
}
if(flag) printf("no ouput\n");
}
//根据我的测试,符合你的要求的数只有一个 2178

下面的函数能返回一个数的反序数,其它的好像不用我写了吧.
int rev(int n)
{
int temp[32];
int i = 0;
int j = 0;
int rt = 0;

if (n==0)
r