童鞋們進來看看這里,或許你們能看懂,集合各位評論的答案,以及原本答案的講解,莫噴
1、有的童鞋說判斷條件可以是<=999,這點是沒有任何問題的。
<1000或者<=999都是沒有任何問題的。
2、hd=num / 100;
? ?打個比方,比如num=211。
? ?211 / 100=2.11
? ?因為你定義的是int類型,輸出的也是整數(shù)類型。
? ?所以計算機也不會給你四舍五入的計算,它只會
? ?獲得你的整數(shù)部分的數(shù)目。
3、td=(num%100) / 10;
? ?根據(jù)上面的結(jié)論可以得出。
? ?num=212;
? ?211%100他只得到了兩個數(shù)值:12;
? ?但是我們需要個位的數(shù)值,所以我們還要除以10;
? ?12/10=1.1;
? ?根據(jù)上面結(jié)論可以得出,計算機只會取你的整數(shù)部分。
? ?所以我們就輕松的獲得了十位數(shù)的1;
4、sd=num % 10;
? ?根據(jù)上面的結(jié)論可以得出一個怎么樣的結(jié)果呢?
? ?num=211;
? ?212%10 = = 2;根據(jù)上面的結(jié)論可以自己算算。這里就不
? ?多加解釋。
二、很多聰明的童鞋有另外幾種解釋方法。
? ? 我也看入迷了。
? ? 比如獲得個位數(shù)的數(shù)字可以用以下這種方法
? ? num / 10 % 10
? ? num=211;
? ? 211/10=11;
? ? 11%10=1;
? ? 這樣我們也可以得到個位數(shù);
三、有個童鞋的幾行數(shù)據(jù)也讓我耳目一新;
? ? 我也照葫蘆畫瓢的把數(shù)值帶入進去算了一下;
? ? 以下是計算結(jié)果:
? ? #define num = 100;
? ? hd = (num-num%100)/100;
? ? //同學(xué)方法
? ? hd = (100-0)/100;
? ? hd = 1;
? ? //帶入法
? ? td = (num%100-num%10)/10;
? ? td = (0-0)/10;
? ? td = 0;
? ? sd = num%10;
? ? sd = 0;
? ? 這樣三位數(shù)就得出來了。
四、還有童鞋最后的if(sum == hd*hd*hd+td*td*td+sd*sd*sd)
? ? 是不是少打了一個等于號結(jié)果就變了?我們來看看。
? ? for(sum=100;sum<1000;sum++)
{
hd = sum / 100;
td = (sum%100) / 10;
sd = sum % 10;
if(sum = hd*hd*hd+td*td*td+sd*sd*sd)
//少打了一個等于號。這代表的是賦值,而不是等于!!
}
? ? 我們來一步一步帶入數(shù)值看看為什么會出現(xiàn)那種結(jié)果:
? ? sum=100;
? ? hd = 1;
? ? td = 0;
? ? sd = 0;
? ? ?因為if里面是賦值運算,并不是相等運算。
? ? 請看這兩個式子
? ? sum = 1;
? ? sum == 1;
第一個的解釋是把1這個數(shù)字賦值到sum里,并沒判斷他們相等
所以就會直接輸出一個1字。
第二個的解釋是sum是否等于1;100!=1的,所以不會輸出內(nèi)容,直到水仙花模式開啟!
sum == 153;
這樣就會輸出153;
? ? 小伙伴就會問,那第一個式子往下走呢?
? ? 這里我就給大家?guī)肟纯础?/p>
? ? 因為sum = 1;
? ? 輸出一個1之后,然后又進入for模式:
? ? 因為我給sum賦值了一個1;
? ? 所以for里面定義的變量就起不了作用。
? ? 我循環(huán)照樣循環(huán);
? ? 自增也照樣自增。
? ? 然后 sum++就為2了。
? ? hd = num /100;
其結(jié)果是小數(shù),啪嘰結(jié)果就為0;
? ? td = (num%100)/10;
? ? td = 2 /10;
又是小數(shù)。啪嘰結(jié)果又為0;
? ? sd = num % 10;
? ? sd = 2 % 10
? ? sd = 2;
進入if(num = 0+0+2*2*2)
? ? ?又是賦值運算 num = 8;
輸出一次是不是8呢?
因為是賦值運算,而不是判斷。所以又一次輸出num的結(jié)果。
小伙伴們可以繼續(xù)往下算算哦!
2017-01-11
不會了怎么辦
2016-12-13
#include<stdio.h>
int main()
{
???? int td,sd,hd,num;
???? printf("水仙花數(shù)是;”);
???? for(num=100;num<1000;mum++)
????????? {
??????????? td=num%10;//求個位
??????????? hd=num/100;//求百位
??????????? sd=num/10;//求十位
?????????? if(td*10+hd*100+sd*10=td*td*td+hd*hd*hd+sd*sd*sd)//符合水仙花
???????????? {
?????????????????? printf(%d,num);
????????????? }
???????????? }
?? return 0;
}
2016-11-11
如何用兩個數(shù)組實現(xiàn)兩個大整數(shù)的加法
2016-11-07
#include<stdio.h>
int main()
{
? int i,j,k,n;
? printf("parcissus numbers are");
? for(n=100;n<=999;n++)
? {
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
? printf("水仙花數(shù):%d? ",n);
? }
? printf("\n");
? return 0;
}
2016-10-30
很好。
2016-10-26
無聊!!
2016-10-24
211%10
取余就是個位了
2016-09-02
贊!贊!贊!贊!贊!贊!
2016-08-31
#include <stdio.h>
int main()
{
? ? //定義三位數(shù)num,個位數(shù)sd,十位數(shù)td,百位數(shù)hd
? ? int num, sd, td, hd;
? ? //循環(huán)所有三位數(shù)
? ? for( ? num=100 ?; ?num<1000 ? ; ? ?num++ ?)
? ? {
? ? ? ? //獲取三位數(shù)字num百位上的數(shù)字
? ? ? ? hd = ? ? ? ?num/100 ? ? ? ?;
? ? ? ? //獲取三位數(shù)字num十位上的數(shù)字
? ? ? ? td = ? ? ? ?(num-hd*100) /10 ? ? ? ?;
? ? ? ? //獲取三位數(shù)字num個位上的數(shù)字
? ? ? ? sd = ? ? ? ?num-hd*100-td*10 ? ? ? ;
? ? ? ? //水仙花數(shù)的條件是什么?
? ? ? ? if( hd*hd*hd+td*td*td+sd*sd*sd==num ? ? ? ? ? ? ? ? )?
? ? ? ? {
? ? ? ? ? ? printf("水仙花數(shù)字:%d\n", num); ? ?
? ? ? ? }
? ? }
? ? return 0; ? ?
}
我也來說說我的方法 ? 我也被=坑了
2016-08-31
#include <stdio.h>
int main()
{
? ? //定義三位數(shù)num,個位數(shù)sd,十位數(shù)td,百位數(shù)hd
? ? int num, sd, td, hd;
? ? //循環(huán)所有三位數(shù)
? ? for( ? num=100 ?; ?num<1000 ? ; ? ?num++ ?)
? ? {
? ? ? ? //獲取三位數(shù)字num百位上的數(shù)字
? ? ? ? hd = ? ? ? ?num/100 ? ? ? ?;
? ? ? ? //獲取三位數(shù)字num十位上的數(shù)字
? ? ? ? td = ? ? ? ?(num-hd*100) /10 ? ? ? ?;
? ? ? ? //獲取三位數(shù)字num個位上的數(shù)字
? ? ? ? sd = ? ? ? ?num-hd*100-td*10 ? ? ? ;
? ? ? ? //水仙花數(shù)的條件是什么?
? ? ? ? if( hd*hd*hd+td*td*td+sd*sd*sd==num ? ? ? ? ? ? ? ? )?
? ? ? ? {
? ? ? ? ? ? printf("水仙花數(shù)字:%d\n", num); ? ?
? ? ? ? }
? ? }
? ? return 0; ? ?
}
提供一種方法