伊莉討論區

標題: 已經寫好了 但是不對 請幫忙看看 [打印本頁]

作者: mbl13579999    時間: 2012-5-16 03:08 PM     標題: 已經寫好了 但是不對 請幫忙看看

題目要輸出100的偶數因數個數 和 奇數因數個數
照理說 我這樣寫邏輯應該沒錯
可是跑出來卻是錯的......
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void) {
  int i,n,m;
  for (i = 1; i <= 100; i++){
    if (100 % i == 0)
      if (i % 2 != 0)
      n++;
      else  
      m++;      
}
  cout << "奇數因數個數" << n << endl;
  cout << "偶數因數個數" << m << endl;
  system("pause");
  return 0;
}



作者: snowflying    時間: 2012-5-16 03:19 PM

乍看之下 n,m 沒初始化!!
先修改看看吧

補充內容 (2012-5-16 03:21 PM):
剛測一下 初始化為0後答案應該是對的沒錯
作者: 定君山    時間: 2012-5-16 07:51 PM

本帖最後由 定君山 於 2012-5-16 07:53 PM 編輯

你if語法少一組括號讓c誤判了所以產生錯誤,讓 else不知跟那一個if是一組所以判斷錯誤!所以最好採用有括號的寫法程式比較不會出錯!你的問題如下

在這邊要注意的是,if與else是就最近的一組來配對,例如下面這個程式依縮排來看,您覺得有無問題存在?

if (條件式一)
    if(條件式二)
        陳述句一;
else
    陳述句二;


很多人都會以為條件式一的if會與else配對,但事實上是條件式二的if與else配對,加上括號的話就可以一目瞭然了:

if (條件式一) {
    if(條件式二)
        陳述句一;
    else
    陳述句二;
}

這是在網路上找到的剛好跟你的問題相關可以參考看看是不是這種問題!


作者: snowflying    時間: 2012-5-16 08:45 PM

定君山 發表於 2012-5-16 07:51 PM
你if語法少一組括號讓c誤判了所以產生錯誤,讓 else不知跟那一個if是一組所以判斷錯誤!所以最好採用有括號的 ...

就樓主的程式碼來看
應該是跟第2個搭配沒錯
因數不是奇數就是偶數
所以這點應該沒問題
純粹沒初始化
作者: 定君山    時間: 2012-5-16 09:10 PM

snowflying 發表於 2012-5-16 08:45 PM
就樓主的程式碼來看
應該是跟第2個搭配沒錯
因數不是奇數就是偶數

可是有看到他for迴圈一開始初始i值說
作者: 定君山    時間: 2012-5-16 09:11 PM

snowflying 發表於 2012-5-16 08:45 PM
就樓主的程式碼來看
應該是跟第2個搭配沒錯
因數不是奇數就是偶數

我覺得你說的對n,m 真的沒初始化真的是這裡有問題




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!