當前位置:首頁 » 編程語言 » c語言自守數

c語言自守數

發布時間: 2022-06-24 09:20:21

① 判斷自守數並輸出(c語言

#include <stdio.h>int main(){
long mul,number,k,ll,kk;scanf("%ld",&number);for(mul=number,k=1;(mul/=10)>0;k*=10);/*由number的位數確定截取數字進行乘法時的系數k*/kk=k*10; /*kk為截取部分積時的系數*/mul=0; /*積的最後n位*/ll=10; /*ll為截取乘數相應位時的系數*/while(k>0){mul=(mul+(number%(k*10))*(number%ll-number%(ll/10)))%kk;/*(部分積+截取被乘數的後N位*截取乘數的第M位),%kk再截取部分積*/k/=10; /*k為截取被乘數時的系數*/ll*=10;}if(number==mul) /*判斷若為自守數則輸出*/printf("%ld 是自守數",number);elseprintf("%ld 不是自守數",number);}

② C語言自守數問題

90625和109376兩個數的平方溢出了,變成了負數,當然會出錯
另:32位的vc、vs等許多編譯器中long和int的位數相同(即能表示的范圍相同),可以將上面的long改為long long或__int64

③ C語言判斷自守數

程序已經修改運行通過:

#include <stdio.h>

int main()

{

long a,b,i=1;

scanf("%ld",&a);

b=a;

do

{

b=b/10;

i*=10;

}while(b>0);

if(a*a%i==a)

printf("Yes ");

else

printf("No ");

return 0;

}

④ c語言自守數 #include <stdio.h> void main(){ int n,m,k=1; scanf("%d",&n); m=n; while(m){k*=10;m/=10;

實際就是按照輸入是幾位,然後取輸入數平方的位數,如果相等就是自守數
while(m){k*=10;m/=10;}
是為了計算輸入數n的位數。如輸入數為2位(例25),則k=100,然後利用100和輸入數的平方取余如果相等if (n*n%k==n)就是自守數。
例:輸入數為:25;則k=100
25*25%100=25

⑤ C語言關於自守數的字典序輸出

#include<stdio.h>
longRe0(longa);
intFact(inta);
main()
{
longarray[1000];
charstr[1000][1000];
chart[1000];
intm=0;
intk=0;
intj;
longp=0,chino,i,guess;
scanf("%ld",&chino);
for(i=1;i<=chino;i++)
{
guess=Re0(i);
if(guess==i)
{

array[k++]=i;

}
}
for(i=0;i<k;i++)
{
sprintf(str[i],"%d",array[i]);
}
for(i=0;i<k-1;i++)//將字元串排序
{
for(j=0;j<k-1-i;j++)
if(strcmp(str[j],str[j+1])>0)
{
strcpy(t,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],t);

}
}
for(i=0;i<k;i++)//輸出
{
if(i==k-1)
printf("%s",str[i]);
else
printf("%s",str[i]);
}
}

intFact(inta)
{
if(a==0||a==1)
return1;
elseif(a>1)
returna*Fact(a-1);
}
longRe0(longa) //計算各個位數之和
{
longsum;
intA,B,C,D,E; //分別為個位、十位、百位、千位、萬位
if(a<10)
returnFact(a);
elseif(a>=10&&a<100)
{
A=a%10;
B=a/10;
sum=Fact(A)+Fact(B);
returnsum;
}
elseif(a>=100&&a<1000)
{
A=a%10;
B=a%100/10;
C=a/100;
sum=Fact(A)+Fact(B)+Fact(C);
returnsum;
}
elseif(a>=1000&&a<10000)
{
A=a%10;
B=a%100/10;
C=a%1000/100;
D=a/1000;
sum=Fact(A)+Fact(B)+Fact(C)+Fact(D);
returnsum;
}
elseif(a>=10000&&a<100000)
{
A=a%10;
B=a%100/10;
C=a%1000/100;
D=a%10000/1000;
E=a/10000;
sum=Fact(A)+Fact(B)+Fact(C)+Fact(D)+Fact(E);
returnsum;
}
}

⑥ C語言 自守數。任意輸入一個自然數,判斷是否自守數並輸出

#include<stdio.h>
void main()
{
int x,y,z;
scanf("%d",&x);
y=x*x;
z=y-x;
if (z%10==0)
printf("%d yes %d",x,y);
else
printf("%d no %d",x,y);
}

⑦ 用C語言編譯程序:求自守數

#include
int
main()
{
int
m,n;
printf("輸入m,n:");
while(1)
{
scanf("%d
%d",&m,&n);
if(m<=10||m>=200000
||
n<=10||n>=200000)
printf("輸入錯誤,請重新輸入:\n");
else
break;
}
if(m>n)
{
m-=n;
n+=m;
m=n-m;
}
printf("%d到%d之間的自守數有:\n",m,n);
int
i;
int
temp;
int
count=0;
while(m<=n)
{
temp
=
m*(m-1);
i=1;
while(i<=m)
i*=10;
if(temp%i==0)
{
count++;
printf("%7d",m);
if(count%5==0)
printf("\n");
}
m++;
}
printf("\n");
return
0;
}

⑧ 道C語言的題目 編程求100以內的所有的自守數,自守數是指一個數的平方

#include<stdio.h>

int main()

{int i,j;

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

{j=i*i;

if(i<10&&j%10==i)printf("%d ",i);

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

}

return 0;

}

⑨ c語言自守數

主函數如下寫就可以了。但我看著你的自定義函數是錯誤的——

intmain(intargc,char*argv[]){
intn,t;
for(t=0,n=1;n<10000;n++)
if(isAutomorphic(n))
printf(++t%5?"%8d":"%8d ",n);
printf(" ");
return0;
}

⑩ 用c語言編譯程序:求自守數(有一定范圍)。注釋里標好了問題

上一步k值為log10(i)+1,即變數i十進製表示的位數

通過累乘,將m值賦值為為i的十進制最高位的表示,用於下面的a%=m

如i值為[100,999]區間,則m=100;i值為[10,99]區間,則m=10

熱點內容
十彩掛機腳本 發布:2022-06-27 09:18:15 瀏覽:296
雞啄米的c編程入門系列 發布:2022-06-27 09:16:05 瀏覽:784
linux沒有eth0 發布:2022-06-27 09:15:02 瀏覽:362
oraclesql重復數據 發布:2022-06-27 09:14:57 瀏覽:927
sql2000forwincc 發布:2022-06-27 09:14:51 瀏覽:172
rust有些伺服器為什麼進不去 發布:2022-06-27 09:14:48 瀏覽:50
貢獻的演算法 發布:2022-06-27 09:13:42 瀏覽:658
六位數服務密碼在哪裡 發布:2022-06-27 09:13:33 瀏覽:799
手機訪問暗 發布:2022-06-27 09:10:37 瀏覽:851
如何給win7設置密碼 發布:2022-06-27 09:10:29 瀏覽:965