2016-04-03 9 views
-2

私はCプログラミングのコースを開始しました。あなたが入力した文字を数えるプログラムを構築する必要があります。 A-Z、0-9、a-zと数えます。私はこのプログラムを以下の図と添付のスクリーンショットで作成しましたが、複数の文字を入力することはできません。 私は最初にループを数字のために使ってみましたが、最初の入力の後で次の 'scanf'には行きません。Whileループが期待どおりに動作しません。コードが完全に実行されていません

https://i.gyazo.com/5fcc0d90688f2e27970506fd999a2c4b.png

#include <stdio.h> 

int main() 
{ 
char input; 
int contorMAJ = 0, contorMIN = 0 , contorNR =0; 

printf("Type a character(0-9,a-z,A-Z): "); 
scanf("%c",&input); 




while(input>=48 && input<=57 || input >= 65 && input <= 90 || input >= 97 && input <= 122) 
{ 
    if(input>=48 && input<=57) 
    { 
     printf("Type another character(0-9,a-z,A-Z): "); 
     contorNR++; 
     scanf("%c",&input); 
    } 

} 


return 0; 
} 
+1

nicompの回答で述べた 'return'文に加えて、文字のスキャンに改行文字(ASCIIコード10)が含まれているため、2 + Enterを入力すると制御条件がfalseになります。 –

+0

デバッガー................................ –

答えて

2

あなたは、whileループでreturn文を持っています。 whileループの下にあるべきですか?ループを1回だけ通過します。

+0

それは私の馬鹿だった。更新されたコードhttps://i.gyazo.com/5fcc0d90688f2e27970506fd999a2c4b.png –

+0

@CodreanuGeorge時には、それが必要なのは別の目です。それはプログラミングの一部だと私は思う。 – nicomp

0

することで、キーボードを押し最初の文字が\nを入力読んだとき

#include <stdio.h> 
    //#include<conio.h> 
    int main() 
    { 


     char input,x; 
     int contorMAJ = 0, contorMIN = 0 , contorNR =0; 

     printf("Type a character(0-9,a-z,A-Z): "); 
     //scanf("%c",&input); 
     input=getchar(); 



     while(input>=48 && input<=57 || input >= 65 && input <= 90 || input >= 97 && input <= 122) 
     { 

     getchar(); 
     // scanf("%c",&x); 
     if(input>=48 && input<=57) 
     { 
      printf("Type another character(0-9,a-z,A-Z): "); 

      contorNR++; 

     } 

     input=getchar(); 
     //scanf("%c",&input); 


    } 
    return 0;//`enter code here` 
} 

コード

間違いを更新しましたが、この

の1-ようなもので、このコードを試してみてください入力

に移行します

2と同様に、\nの条件が満たされていない

3 - getchar()をもう一度使用して\nをコードに更新してください。

+0

うまくいかなかった:/ https://i.gyazo.com/5fcc0d90688f2e27970506fd999a2c4b.png –

+0

あなたのコードは完全に機能しました。しかし、私はあなたに尋ねることができます、\ n入力に入ると、変数の値が変更されますか?なぜそれが条件を尊重しないのか分かりません。私は速いテストを試み、charとして2を入力しました。整数として表示すると、まだ50(ASCIIコード2)でした。 https://gyazo.com/c7bc4543ab0e5ecbcdcf598ae358548a –

+0

初めて 'input'で文字を読んでEnterを押すと、' enter key '...' input'変数を押すと '\ n' ...と'input'はwhileループの状態を' \ n'に含みます。プログラムは 'loop'のために移動します..... – Nutan

関連する問題