『壹』 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。