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

c語言153

發布時間: 2023-01-12 17:23:59

⑴ 用c語言編一個可以列出所有三位數的水仙花數如153=1^3+5^3+3^3;

一、
數學定義:
水仙花數是指一個
n
位正整數
(
n≥3
),它的每個位上的數字的
n
次冪之和等於它本身。
於是三位水仙花數,就是形式為n=100a+10b+c
且n=a*a*a+b*b*b+c*c*c的數值。
其中a∈[1,9]
b,c∈[0,9]
a,b,c∈Z
二、
根據定義,循環遍歷100到999,通過除法和模除取出三位上的數字,計算立方和並與原始數值比較,如相等,則為水仙花數,輸出即可。
三、
代碼:
#include <stdio.h>
int main()
{
int a,b,c,n;
for(n = 100; n <1000; n ++)//遍歷
{
a=n/100;//百位
b=n/10%10;//十位
c=n%10;//個位
if(a*a*a+b*b*b+c*c*c==n)//水仙花數
printf("%d\n", n);//輸出
}
return 0;
}四、
運行結果:

⑵ 特殊數字的c語言,為什麼輸出中少了153這個數字呢

xiebangyao1994 的回答點到了點子上
因為你的 pow(a,b) 函數有歧義,導致了不同編譯器結果不同
pow返回值是浮點數,而你直接存進了一個整形里,編譯器只能自行添加隱式轉換
而由於精度誤差的原因,算出來的結果很可能是類似
125.00001 或 124.99999
不同編譯器可能四捨五入(較常見),取上整(不多見)或者取下整(多見於嵌入式)

你需要把 pow(a,b) 改成 (int)round(pow(a,b)) (round四捨五入,另外round自己出來的結果也是浮點,需要再取成整型)
最好的方法其實還是手工乘三遍啦

PS. 困惑下你用的啥編譯器,int沒返回值,理應編譯不過去的呀

⑶ c語言 求水仙花數 例如 153=1^3+5^3+3^3 求哪裡出錯 m>=1 n<1000

#include <stdio.h>

void main()
{
int m,n,i,a,b,c,tmp;
printf("輸入m,n(0<m<=n<1000)(用逗號隔開): ");
while(scanf("%d,%d",&m,&n))
{
if(0<m && m<=n && n<1000)
break;
printf("輸入不合法,請重新輸入: ");
}
for(i=m;i<=n;i++)
{
tmp=i;
a=tmp%10;
tmp=tmp/10;
b=tmp%10;
tmp=tmp/10;
c=tmp%10;
if(c) //說明是三位數
{
if(a*a*a+b*b*b+c*c*c==i)
printf("%d ", i);
}
else if(b) //說明是二位數
{
if(a*a+b*b==i)
printf("%d ", i);
}
else //說明是一位數
printf("%d ", i);
}
printf("\n");
}

⑷ C語言編程:如果一個三位數等於它自己的每一位數字的立方之和,則稱此數為「水仙化數」,如153=13+53+33

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>

boolisShuixianNumber(intn)
{
inthundred,ten,sigle;
if(n<100||n>999)
{
printf("InputError! ");
exit(-1);
}
hundred=n/100;
ten=(n%100)/10;
sigle=n%10;
if(hundred*hundred*hundred+ten*ten*ten+sigle*sigle*sigle==n)
returntrue;
else
returnfalse;
}
intmain()
{
intm,n;
inti;
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)
if(isShuixianNumber(i))
printf("%d ",i);
return0;
}

示例運行結果:

100 999

153

370

371

407

⑸ 計算機輸入一個三位整數的個位、十位和百位數字之和,例如輸入153,結果為9 用c語言編寫

#include"stdio.h"
voidmain()
{
inta,b=0;
scanf("%d",&a);
for(inti=1;i<=3;++i)
{
b+=a%10;
a=a/10;
}
printf("%d",b);
}

⑹ c語言中,求「水仙花數」問題。

#include"stdio.h"
main()
{
int i,a=0,b=0,c=0,t;
for(i=100;i<=999;i++)
{
a=i%10;
b=(i/10)%10;
c=i/100;

if(c*100+b*10+c*1==a*a*a+b*b*b+c*c*c)
{
t=i;
printf("%d",t);
}
}

}

if和printf語句都要在循環裡面
同時,if語句的條件改為 if(c*100+b*10+c*1==a*a*a+b*b*b+c*c*c)

⑺ C語言作業糾錯,題目要求是 找出所有三位數滿足其各位數字立方和等於該數本身例如153=1*1*1+5*5*5+3*3*3

#include<stdio.h>
#include<math.h>
intmain()
{
inta,q,w,e;
scanf("%d",&a);

if(a<100||a>999)
printf("error! ");
else
{
for(;a>=100&&a<=999;)
{
a=a+1;
q=a/100;
w=(a-q*100)/10;
e=a-q*100-w*10;
if(a==q*q*q+w*w*w+e*e*e)//少了一個等號,最好寫成q*q*q+w*w*w+e*e*e==a,可以防止出錯
printf("%d ",a);
else
;

}
}
return0;
}

⑻ C語言題,31、任意輸入一個3的倍數的正整數,調用函數fun31()利用m 驗證「數字黑洞153」

手機先留個腳印。記得採納哦

#include<stdio.h>
#include<stdlib.h>
inta[100]={0};
intb[100]={0};
intsum=0;
intct=1;
intct2;
voidinput(intnum)
{
sum=0;
ct=1;
while(num)
{
a[ct]=num%10;
b[ct]=(num%10)*(num%10)*(num%10);
num=num/10;
sum=sum+b[ct++];
}
}

voidprint(void)
{
ct2=ct-1;
while(ct2)
{
printf("%d",b[ct2--]);
}
}

intmain()
{
longintnum;
intljm;
intcter=1;
printf("Pleaseinputanumber ");
scanf("%d",&num);
ljm=num*3;
printf("Thenumbertobetestedis%d. ",ljm);
input(ljm);
while(sum!=153)
{
ljm=sum;
input(ljm);
cter++;
}
printf("%d ",cter);
//print();
system("pause");
return0;
}

⑼ C語言編程 求水仙花數:例如153=1^3+5^3+3^3

#include<stdio.h>

int main()

{int a,b,c;

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

for(b=0;b<10;b++)

for(c=0;c<10;c++)

if(a*a*a+b*b*b+c*c*c==100*a+10*b+c)

printf("%d%d%d=%d^3+%d^3+%d^3 ",a,b,c,a,b,c);

return 0;

}