春天是鮮花的季節(jié),水仙花就是其中最迷人的代表,數(shù)學(xué)上有個(gè)水仙花數(shù),他是這樣定義的:?“水仙花數(shù)”是指一個(gè)三位數(shù),它的各位數(shù)字的立方和等于其本身,比如:153=1^3+5^3+3^3。?現(xiàn)在要求輸出所有在m和n范圍內(nèi)的水仙花數(shù)。?Input輸入數(shù)據(jù)有多組,每組占一行,包括兩個(gè)整數(shù)m和n(100<=m<=n<=999)。Output對(duì)于每個(gè)測(cè)試實(shí)例,要求輸出所有在給定范圍內(nèi)的水仙花數(shù),就是說(shuō),輸出的水仙花數(shù)必須大于等于m,并且小于等于n,如果有多個(gè),則要求從小到大排列在一行內(nèi)輸出,之間用一個(gè)空格隔開(kāi);如果給定的范圍內(nèi)不存在水仙花數(shù),則輸出no;?每個(gè)測(cè)試實(shí)例的輸出占一行。以上為題目,以下是我的代碼:#include<stdio.h>#include<string.h>int main(void){? ? int m,i,a,n,b,c,k,s;? ? while(scanf("%d%d",&n,&m)!=EOF)? ? {? ? ? ? k=0;? ? ? ? s=0;? ? ? ? if(n<100||n>m||m>999)? ? ? ? ? ? continue;? ? ? ? for(i=n; i<=m; i++)? ? ? ? {? ? ? ? ? ? a=i%10;? ? ? ? ? ? b=i/10%10;? ? ? ? ? ? c=i/100;? ? ? ? ? ? if(a*a*a+b*b*b+c*c*c==100*c+10*b+a)? ? ? ? ? ? {? ? ? ? ? ? ? ? if(s==0)? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? s=1;? ? ? ? ? ? ? ? ? ? printf("%d",i);? ? ? ? ? ? ? ? ? ? continue;? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? if(i<=m&&s==1)? ? ? ? ? ? ? ? ? ? printf(" %d",i);? ? ? ? ? ? ? ? k++;? ? ? ? ? ? }? ? ? ? }? ? ? ? if(!k)? ? ? ? ? ? printf("no");? ? ? ? printf("\n");? ? }? ? return 0;}
1 回答
已采納

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
如果某組數(shù)據(jù)中只找到了一個(gè)水仙花數(shù),那么 k 的值也不會(huì)變化,仍為 0。這樣就會(huì)錯(cuò)誤地輸出 no。
是不是應(yīng)該把改變 k 值的語(yǔ)句直接放到作水仙花數(shù)判斷的?if(a*a*a+b*b*b+c*c*c==100*c+10*b+a) 循環(huán)中。
添加回答
舉報(bào)
0/150
提交
取消