2012-04-16 8 views
-3

こんにちは私は2とどんな数をユーザーが入力して、私はそれを書き込もうとし、約2時間を過ごした間も、素数をプリントアウトするには、このプログラムを書くためにしようとしていたCプログラミングクラスにイントロと昨日のためのテストのために勉強しています適切かつ最終的に私はそれをやった。私は下にアップロードした2枚の写真があります。そのうちの1つが正しいコードと正しい出力を表示します。もう一つは、正しく動作しなかった問題の私の最初の試みの一つを示しています。私は戻ってきて、すべてを直接コピーして貼り付けることなく作業コードに似たものにしました。Cプログラミング。なぜ 'this'コードは動作しますが、 'that'コードは動作しませんか?

残念ながら、新規ユーザーは、以下のうまくいけば、これらのリンクが動作する画像を投稿することが許可されていません。

for (i = 2; i <= x; i++) 
{ 
    //non relevant line 
    a = sqrt(i); 
    aa = a * a; 
    if (aa == i); 
     printf("%d ",i); 
} 

ソース:

これは、自然の平方根との範囲内のすべての数字を印刷しない、失敗した自然sqaureルートとhttp://i.imgur.com/WGG6n.jpg

これが成功している間、およびプリント偶数

for (i = 2; i <= x; i++) 
{ 
    a = sqrt(i); 
    aa = a * a; 
    if (aa == i && ((i/2) *2) == i) 
     printf("%d ", i); 
} 

出典:http://i.imgur.com/Kpvpq.jpg

私がここにあるスクリーンショットを見て読んでほしい。私は '間違ったコード'の画像に(i/2)* 2 == iの部分がないことを知っていますが、まだ奇数と偶数だけを出力すると考えていました。出力に影響を与えるべきではありません。私はその最後の部分に間違っている場合は私を修正してください。

そして、はい、私は私が読んだのDev-C++はプログラムのちょっと安っぽいですが、私はinitallyコード::ブロックの上にこれをしなかったし、それは同じことをした使用しています...

私が希望してください非常に実際に私のために仕事をするためのコードを実際に取得する2時間前に私が間違っていたことについてのアドバイスや提案は非常に高く評価されます。 - aa == iあれば、このように[If条件の終わりに ;の点に注意してください]

if (aa == i); 
//  ^
    printf(...); 

を:

は、 'こと' であなたのコード、 アダム

+6

ください。お願いします。実際のコードを質問自体に入れてください。コピー/貼り付けさえできなければ、どのようにデバッグするのに役立つでしょうか? –

+4

写真を投稿する必要はありません。質問に関連するコードを直接投稿することができます。 –

+1

唯一の素数は2です。あなたは何をしようとしていますか? – twain249

答えて

9

をありがとう空のステートメントが発生し、ifステートメントの範囲外であるため、印刷は常に発生します。将来的にこの問題を回避するために

は、[制御フロー文の後{}を使用]明示的なスコープを使用する場合があります - 少なくとも言語プログラミングのあなたの最初のステップの間。


1:質素なプログラマはおそらく

+0

ありがとう、皆さんのご意見をお聞かせください。私はこのような単純なエラーで質問を投稿することをお詫びします。私はこれを何時間もしてきており、私の目はちょうど疲れすぎたはずです。そして私はあなたがなぜ私の質問に実際の 'テキスト'コードを投稿すると言うのか理解しています。 – 1337475

+0

@AdamJohnston:「単純なエラーの質問」についてはごめんなさい。誰もが常に学びます!次回は、コードそのものを投稿するべきであることを理解してうれしく思います。また、あなたの問題を解決する答えを[同意する]必要があります(http://meta.stackexchange.com/q/5234/161469)。 – amit

+0

Answer accepeted:D助けてくれてありがとう。 – 1337475

0

このようなエラーが共通しているこの文を嫌います。プログラムをデバッグするには、「ステップオーバー」、「ステップイン」、「ブレークポイント」、「ウォッチウィンドウ」を使用します。これらのオプションを使用すると、プログラムを1行ずつ実行し、各行で使用される変数を追跡することができます。この方法では、どの行が望ましい方法で実行されないのか分かります。

関連する問題