- 求和問題 簡單的不能再簡單了 可惜有瑕疵
-
輸入 m 和n 求m一直加到n代碼如下
# ## #include ********_
# ## int main()
# ## {
# ## int m,n,b=0;
# ## long int sum=0;
# ## scanf("%d%d",&m,&n);
# ## if(n>=m)
# ## {
# ## if(n==m)
# ## {
# ## printf("%d",m);
# ## }
# ## else{
# ## for(;m<=n;m++)
# ## {
# ## sum=sum+m;
# ## }
# ## printf("%ld\n",sum);
# ## }
# ## }
# ## if(n<m){
# ## b=n;
# ## n=m;
# ## m=b;
# ## for(;m<=n;m++)
# ## {
# ## sum=sum+m;
# ## }
# ## printf("%ld",sum);
# ## }
# ## return 0;
# ## }********_
錯誤的地方在if(m>n)當我把它換成else的時候就對了但是寫成if(m>n)不是一個意思
嗎? 不知道為什麼求解答
最佳回答:
只要樓主輸入的兩個數,前一個比後一個小,也就是滿足n>=m
那麼會進入第一個if分支,而這個分支裡的for循環會對m進行++運算,for循環結束時,m會大於n(大了1)
然後判斷第二個if語句,if(n<m)滿足,又進入了這個if分支,所以會打印兩次(這就是瑕疵所在,改成else就不會進入這個循環,或者不要改變m的值)