输入两个数然后输出这两个数之间的全部同构数,用c语言完成。

 我来答
自我编程
2019-11-24 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

同构数:正整数n若是它平方数的尾部,则称n为同构数。

思路:将数字及其平方数转换成字符串,再从后往前比较,完全相同就是同构数。

#include <stdio.h>

#include <stdlib.h>

long isIsomorph(long num);//是返回1,否返回0

int main()

{

    long n,n1,n2,i;

    printf("请输入两个数字:");

    scanf("%ld%ld",&n1,&n2);

    if(n1>n2)

        n=n1,n1=n2,n2=n;

    printf("这两个数之间的同构数为(不包含这两个数):\n");

    for(i=n1+1;i<n2;i++)//取两数字之间,但不包含这两个数

        if(isIsomorph(i))

            printf("%ld ",i);

    return 0;

}

long isIsomorph(long num)

{

    long num2=num*num;

    char *p=NULL,*p2=NULL,str1[20],str2[20];

    itoa(num,str1,10);

    itoa(num2,str2,10);

    p=str1;

    p2=str2;

    while(*p++!=0);

    while(*p2++!=0);

    p-=2;//指向最后一位数字

    p2-=2;

    while(p>=str1)

    {

        if(*p!=*p2)

            return 0;

        p--;

        p2--;

    }

    return 1;

}

White_MouseYBZ
2019-11-25 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6612万
展开全部

代码资料:

#include "stdio.h"

int main(int argc,char *argv[]){

int a,b,t,n,k;

printf("Enter a & b(int a,b>0)...\n");

if(scanf("%d%d",&a,&b)!=2 || a<1 || b<1 || a>46340 || b>46340){

printf("Input error, exit...\n");

return 0;

}

if(a>b)

a+=b,b=a-b,a-=b;

for(k=0;a<=b;a++){

for(n=1,t=a;t;n*=10,t/=10);

if(a*a%n==a)

printf(++k%10 ? "%8d" : "%8d\n",a);

}

printf("\n");

return 0;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式