《明解C語言》練習題4-2的實現

青果發表於2019-01-19
這個個練習題要求讀取兩個整數值,然後計算他們之間所有的整數之和,  對於我這種程式設計小萌新,其實 是真不會編寫的 ,腦子裡想了很多  ,比如怎麼使用if來完成,實際上 還是做不出來,只好去CSDN借鑑下別人的。圖靈寫下文章 剖析  時不時拿出來看看,希望以後看到這種腦子裡有思路。

// 原始碼如下:

include

int main(void) { int a, b, sum=0, min, max;

puts("請輸入兩個整數。");                             
printf("整數a:");    scanf("%d",&a);

printf("整數b:");    scanf("%d",&b); 

(a>b)?(max = a)&&(min = b):(min = a)&&(max = b);

do {
    sum+=min;
} while(min++ != max);

(a>b)?(max = a)&&(min = b):(min = a)&&(max = b);

printf("大於等於%d小於等於%d的所有整數的和是%d",min,max,sum);

return 0;

}

作者:VividColors 來源:CSDN 原文:https://blog.csdn.net/VividColors/article/details/80554311 版權宣告:本文為博主原創文章,轉載請附上博文連結!


Blockquote

(a>b)?(max = a)&&(min = b):(min = a)&&(max = b); 這裡使用了條件運算子【三目運算子】a>b如果成立則是 (max = a)&&(min = b) 這個值,不成立則是(min = a)&&(max = b); 一句話 解讀這個就是判定 a和b誰大誰小,且將大小對應的值賦給 max/min。

Blockquote


do的迴圈體 do { sum+=min; } ,這句只定義了一個加法迴圈,大家看明解這本書可能沒提到+=這個概念,很好理解 比如 a+=b相當於a=a+b。sum+=min 通俗易懂 就是 sum=sum+min 和 =和+最小值,有朋友會說這也不對啊,別急繼續往下看。


while 條件1→while(min++ != max);,while 的第一句又看不懂了,對於完全萌新來說CSDN的答案,確實是有些是超綱的也僅限明解這本書,譚浩強的我記得在開頭就將了這個 。不要緊認真看分分鐘明白。 ++! 是先自增再參與運算,!++是先運算再自增是不是 超級繞口 ,這裡開個車,倆人那啥不可描述那啥時候,成年小朋友都懂?【 ++!】是自己先爽了,再去找女孩子;【!++】是先服務女孩子,後邊自己自然也更爽,這裡落到運算上就是 min最小數+1 然後再加, 那麼加到什麼時候停止呢 ,來人都有感覺 次數夠了,max就是最大值,加到max停止。 這樣邏輯上就通了 1+2+3。。。


while 條件2 →(a>b)?(max = a)&&(min = b):(min = a)&&(max = b); 這句好理解 了 好像是沒必要了 ,講真,我在dev上刪除了這個 照樣結果正確 ,


CSDN這個作者的解決方法應該是基於有語言基礎的,不曉得 看過明解C 的大佬有木有更合適的原始碼 案例,最後仍然感謝csdn作者的思路。


別死扣這個問題啦 ,直接往下看書,下邊基本就提到了這個 複合賦值運算

相關文章