2016-10-01 18 views
-1

visual studio 2015 "C"を使用 ユーザーに適切な値を入力しないと、3から40の間の数値を入力するように求められます。それらが有効な値を入力するまで常にループし、再度尋ねますが、何があっても常にwhileループに入り、一度ループします。あなたは、セミコロンを削除する必要がプログラムはwhileステートメントを実行していません

#include <stdio.h> 

int main(void) 
{ 
int counter; 
int marks; 



printf("---=== IPC mark Analyser ===---\n"); 

printf("Please enter the number of marks(between 3 and 40): "); 
scanf("%d", &counter); 

while (counter >40 || counter <3); 
{ 
    printf("Invalid number, enter a number between 3 and 40 inclusive: "); 
    scanf("%d", &counter); 
} 


    printf(""); 

} 
+0

C **は** C++ – Li357

+0

私の悪いが、私はそれが組み込みのデバッガーのVisual Studioでの使用方法を学び –

+0

追加知りませんでしたではありません。とても良いです。これにより、変数とその値を監視しながら、コードを1行ずつ進めることができます。 –

答えて

3
while (counter >40 || counter <3); 

while (counter >40 || counter <3) 
+0

ありがとうございました。なぜセミコロンが問題を引き起こしたのか聞いてもよろしいですか? –

+2

文法により、ループ本体は空の式であっても( '{}'を除く)単一の式になります。また、 '{}'を使用して別のスコープを追加することもできます。たとえば、変数の有効期間を制御することができます。そのため、初めて入力した場合でも、2回目の 'scanf'が常に実行されます。 – krzaq

+0

説明ありがとう: –

0

問題は「;」です。あなたの中の行に

0

また、最高の問題は、whileループの後にセミコロンだったので、このプログラムのメモリ

+0

未使用の変数を削除するのは間違いなくベストプラクティスです。変数が入力ステートメントで設定されている場合、値を使用する前に入力が成功したことをコードで確認する必要がありますが、ゼロにすることで特別なメリットはありません。 –

0

に配置することができる可能性ジャンクデータを削除するためにゼロに変数を設定する練習をコーディングされた:)それは声明のようです。

正しいコードを以下に示します。

#include <stdio.h> 

int main(void) 
{ 
int counter; 
int marks; 



printf("---=== IPC mark Analyser ===---\n"); 

printf("Please enter the number of marks(between 3 and 40): "); 
scanf("%d", &counter); 

while (counter >40 || counter <3) 
{ 
    printf("Invalid number, enter a number between 3 and 40 inclusive: "); 
    scanf("%d", &counter); 
} 


    printf(""); 

} 
関連する問題