‘壹’ c语言求同构数
1、算法分析:
对指定范围内的每一个整数a,求出其平方,判断a是否是其平方的尾部,通常有以下方法:
通过字符串子串比较找出同构数。
为了求更高位数的同构数,可应用同构数的以下性质:一个m位同构数的尾部m-1位数也是一个同构数。道理很简单
,a是一个m位数,a的平方数尾部的m-1位仅由a尾部的m-1位决定而与a的最高位无关。
易知一个同构数有三个:1,5,6,则二位同构数的个位数字只可能是1,5,6这三个数字。
根据这一思路,我们可应用递推求出多位同构数串。
2.求指定区间内的同构数
程序代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *right(char *ms,int len); /*截取一个字符串尾部长为len个字符的子串*/
void main()
{
long a;
int len;
char as[10];
char ms[20];
printf("求[1,10000]中的同构数:\n");
for(a=1;a<=10000;a++)
{
ultoa(a,as,10); /*数a转换为字符串,存入as*/
len=strlen(as);
ultoa(a*a,ms,10);
if(strcmp(as,right(ms,len))==0) /*比较字符串as与ms长为len的子串是否相等*/
printf("%s 其平方为 %s\n",as,ms); /*相等就是同构数,输出结果*/
}
}
char *right(char *ms,int len) /*截取字符串尾部长为len子串的函数*/
{
int i,j;
for(i=0;i<(signed)strlen(ms);ms++);
for(j=0;j<len;j++,ms--);
return ms;
}
‘贰’ 用c语言求同构数
找出1至10000之间的全部同构数的C语言程序
例如:5是25右边的数,25是625右边的数,5和25都是同构数数*/
#include<stdio.h>
int main()
{ long i,j,k;
k=10;
for (i=1;i<=10000;i++){
if (i==k) k*=10;
j=i*i;
if(j%k==i) printf("%ld\t%ld\n",i,j);
}
}
‘叁’ c语言编程 求输入一个0-99的整数,判断其是否为同构数,要求写了程序还要有中文解释其核心语句的作
思路:同构数是会出现在它的平方的右边的数。具体见代码:
#include<stdio.h>
intmain()
{
intn,i,m;
for(i=1;i<100;i++){//依次从1到100遍历判断
n=i*i;//求i的平方
if(i<10)m=n%10;//求平方数的后几位
elsem=n%100;
if(i==m)printf("%d ",i);//判断是否是同构数
}
return0;
}
/*
运行结果:
1
5
6
25
76
*/
‘肆’ C语言 同构数问题
#include<stdio.h>
intmain(void)
{
unsignedintmo,trail;
unsignedlonga,square;
scanf("%ld",&a);
square=a*a;
for(mo=10;a>=mo;mo*=10)
;
trail=square%mo;
if(trail==a)
printf("%ldyes,%ld*%ld=%ld ",a,a,a,square);
else
printf("%ldno,%ld*%ld=%ld ",a,a,a,square);
}
我反复研究你写的程序,除了有些多余无用的语句外,输出按题目要求了少个逗号外;觉得程序本身没有错误,请问谁说这个程序是错的?
‘伍’ c语言编程题(1)从键盘输入一个2-99之间的数据,判断该数是否为同构数。同构数是指该数的平方数中含
本程序使用VScode编写,如果是使用c-free或DEVc++编写,不需要程序第13行(system)
‘陆’ c语言:编写函数判断x是否同构数
#include
inttgs(intx)
{
intm1,n,a,b;
m1=x;
n=x*m1;
while(m1)
{
a=m1%10;
b=n%10;
if(a!=b)break;
m1=m1/10;
n=n/10;
}
returnm1==0;
}
intmain()
{
intx;
scanf("%d", &x);
if(tgs(x))printf("%d是一个同构数",x);
elseprintf("%d不是一个同构数",x);
return0;
}。
(6)判断同构数c语言扩展阅读
C语言 同构数的算法
“同构数”是指这样的整数:它恰好出现在其平方数的右端。
如:376*376=141376。请输出10000以内的全部“同构数”。
算法分析:
1.求出1-10000之间每个数的位数(即这个数是几位数)。设这个数是i.//用for循环实现。
2.再求出每个数的平方值,提取出最右端对应位数的数值出来。//用取模%法实现。
如369是个三个数,它的平方是136161,用取模%法提取出最右三位数字161,即136161%1000=161。
3.最后判断 i 与右端数 是否相等,相等即为同构数。
‘柒’ C语言编程100以内所有的同构数
#include<iostream.h>
#include<iomanip.h>
int main ()
{
int i,j,m,n,x,y,z,k,a;
for(i=1;i<=9;i++)//判断1-9之间同构数
{
m=i*i;
n=m-i;
if(n%10==0)
cout<<setw(4)<<i;
}
for(j=10;j<=99;j++)//判断10-99之间同构数
{
x=j*j;
y=x-j;
z=y/10;
if((y%10==0)&&(z%10==0))
cout<<setw(4)<<j;
}
for(k=100;k<=100;k++)//判断100是否为同构数
{
x=j*j;
y=x-j;
z=y/10;
a=y/100;
if((y%10==0)&&(z%10==0)&&(a%10==0))
cout<<setw(4)<<k;
}
cout<<endl;
return 0;
}
这个算法麻烦点,比较直观!
‘捌’ C语言编程 自定义判断同构数的函数
int fun(int x)
{
int a,b=10,c=0;
a=x;
while(a/10!=0){b*=10;a/=10;} /*判断x是几位数*/
a=x*x;
c=(a%b==x)? 1:0;
return c;
}
‘玖’ c语言编程:找出1到1000的全部同构数
#include<stdio.h>
intIsTongGou(inta){//判断是否同构
intb=a*a;
while(a!=0){
if(b%10!=a%10){
return0;
}else{
b=b/10;
a=a/10;
}
}
return1;
}
intmain(){
for(inti=1;i<1000;i++){
if(IsTongGou(i)){
printf("%d",i);
}
}
printf(" ");
}
‘拾’ 怎样用c语言判断一个数是否是同构数
1、首先在电脑中,打开visual C++ 6.0-文件-新建-文件-C++ Source File。