當前位置:首頁 » 編程語言 » c語言阿姆斯特朗數

c語言阿姆斯特朗數

發布時間: 2022-12-19 02:53:56

c語言,尋找阿姆斯特朗數

邏輯混亂——while(i<i*10){while(i>=1)...這兩個嵌套循環都是死循環啊,因為前一個while求出的i是1、10、100、1000……這種數(與n是幾相對應),所以i<i*10和i>=1都是恆成立的……下面把那一段重寫一下供參考:

#include"stdio.h"
#include"math.h"
intmain(intargc,char*argv[]){
intm,n,i=1,a,b=1,c,d=1;
scanf("%d",&n);
//while(b<n){
while(b<=n){//這里用<=後面好處理
i=i*10;
b++;
}
/*m=1;
while(i<i*10){
while(i>=1){
c=i%10;
i=(int)(i/10);
m=m+pow(c,n);
}
i=a;
if(m==i){
printf("%d ",m);
}
i=i+1;
a=i;
}*/
for(m=i/10;m<i;m++){
for(d=0,a=m;a;a/=10){
c=(int)pow(a%10,n);
d+=c;
}
if(d==m)
printf("%d",d);
}
printf(" ");
return0;
}

運行樣例:

㈡ C語言求阿姆斯特朗數

#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){ int b,c,d,x,y,z,n,ch; double sum=0;//定義成double,防失真級溢出 scanf("%d",&n); switch(n) { case 1: case 2:printf("No output.\n");ch=0;break; case 3:x=100,y=999;ch=1;break; case 4:x=1000,y=9999;ch=1;break; case 5:x=10000,y=99999;ch=1;break; case 6:x=100000,y=999999;ch=1;break; } if(ch==1) { for(z=x;z<=y;z++) { sum = 0;//初始化 for(b=z,c=n;c>0;c--) { d=b%10; b/=10;//利用b計算 sum=sum+pow((double)d, n); } if(sum==z) printf("%d\n",z); } } system("pause"); return 0;}注釋部分存在問題,已經修改過了,你測試一下看看。

熱點內容
網易雲上傳歌詞手機 發布:2025-01-28 03:42:51 瀏覽:61
m3u8緩存文件 發布:2025-01-28 03:42:51 瀏覽:547
編程算損耗 發布:2025-01-28 03:33:03 瀏覽:456
sql存儲過程返回多個結果 發布:2025-01-28 03:24:03 瀏覽:463
長安歐尚科賽哪個配置值得購買 發布:2025-01-28 03:19:35 瀏覽:116
c全排列演算法 發布:2025-01-28 03:18:16 瀏覽:754
梵蒂岡頂級時裝ftp 發布:2025-01-28 03:03:36 瀏覽:695
手游腳本有前途嗎 發布:2025-01-28 02:46:55 瀏覽:379
抓包編程 發布:2025-01-28 02:42:41 瀏覽:930
安卓平板上怎麼設置熱點 發布:2025-01-28 02:36:33 瀏覽:718