當前位置:首頁 » 編程語言 » c語言同構數100以內
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言同構數100以內

發布時間: 2022-06-08 03:32:39

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語言求100以內同構數

#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,100]中的同構數:\n");
for(a=1;a<=100;a++)
{
ultoa(a,as,10);
len=strlen(as);
ultoa(a*a,ms,10);
if(strcmp(as,right(ms,len==0) printf("%s 其平方為 %s\n",as,ms); }
}
char *right(char *ms,int len)
{
int i,j;
for(i=0;i<(signed)strlen(ms);ms++);
for(j=0;j<len;j++,ms--);
return ms;

}

歡迎插旗~

⑶ 同構數——c語言

pow函數使用有問題。

Math庫里的pow函數的返回類型是一個精度浮點數。

你在isomorphism函數中直接另mod為整型

實際上損失了你後來的pow(10,a)的精度。

就比如說pow(10,2)的返回值是一個99.xxxxxxx的數,然後你直接int了,所以在位數等於2時,你的mod就變成99了。

我們看下面這段代碼:

有疑問請追問叭。

⑷ 編寫程序找出1到100之間的全部同構數

c語言版:
#include<stdio.h>
main()
{
int i;
for(i=1;i<=100;i++)
if((i<10&&(i*i)%10==i)||(i>=10&&(i*i)%100==i)||(i==100&&(i*i)%1000==i)
printf("%d ",i);

}

⑸ c語言求100以內的同構數改錯

#include<stdio.h>
int isTongGou(int num){
int bFlage=0;
if(num>=0&&num<=9){
if((num*num)%10==num){
bFlage=1;
}
}else if(num>=10&&num<=99){
if((num*num)%100==num){
bFlage=1;
}
}else if(num>=10&&num<=99){
if((num*num)%100==num){
bFlage=1;
}
}
return bFlage;
}
void main(){
int i;
printf("1到100之間的同構數是:\n");
for(i=1;i<=100;i++){
if(isTongGou(i)==1){
printf("%d^2=%d\n",i,i*i);
}
}
}

⑹ 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語言同構數100以內擴展閱讀

C語言 同構數的演算法

「同構數」是指這樣的整數:它恰好出現在其平方數的右端。

如:376*376=141376。請輸出10000以內的全部「同構數」。

演算法分析:

1.求出1-10000之間每個數的位數(即這個數是幾位數)。設這個數是i.//用for循環實現。

2.再求出每個數的平方值,提取出最右端對應位數的數值出來。//用取模%法實現。

如369是個三個數,它的平方是136161,用取模%法提取出最右三位數字161,即136161%1000=161。

3.最後判斷 i 與右端數 是否相等,相等即為同構數。

⑺ 用c語言編譯一百以內所有同構數

#include<stdio.h>

void main()

{

int i;

for(i=1;i<10;i++)

if(i*i%10==i)printf("%d ",i);

for(i=10;i<100;i++)

if(i*i%100==i)printf("%d ",i);

printf(" ");

system("pause");

return 0;

}

⑻ 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語言改錯題:找出1-100之間的全部同構數,即:5的平方等於25,5出現在25的右端,則5為同構數。

c=i*i%100;-----------------------------------------> c=i*i/100;註:這一句的目的是得到百位上的數字
if(i=a) printf("%6d",i);------------------------------->if(i==a) printf("%6d",i);註:=為賦值,==才為比較

⑽ C語言 編寫同構數

//---------------------------------------------------------------------------
#include
<stdio.h>
int
main(void)
{
int
i;
for
(i=1;
i<100;
i++)
if
(i==(i*i)%(i<10?10:100))
printf("%d
",i);
return
0;
}
//---------------------------------------------------------------------------