0

これを for ループで完了する方法がわかりません。使命は、UNIX で入力を読み取ることです。入力については、半径が >0 の場合は毎回ユーザーにプロンプ​​トを表示し、<=0 の場合は終了する必要があります。私はセンチメートルから平方インチに行きます. 私の現在の構成では、コンソールに出力を与える前に 2 つの入力 (1 つはプロンプト、1 つはそうでない) が必要です。乾杯。

#include <stdio.h>
#define PI 3.14159

main()
{
float r, a;
  int y = 9999999;


  for(int i =0; i <y; i++){
     printf("Enter the circle's radius (in centimeters): ");
     scanf ("%f", &r);

        if(r>0){
           r=r;
       a = PI * r * r *2.54;

       printf("Its area is %3.2f square inches.\n", a);
   }  else {}
     }

  }
4

5 に答える 5

2

コード フローは次のとおりです。

for (infinite condition) {
  scan input
  if (input > 0) {
    do things
  }
  else {
    do nothing
  }
}

したがって、ループを終了する方法はありません。そのため、breakコードの反復ブロックを強制的に終了するステートメントが存在します。

while (true) {
  scanf ("%f", &r);
  if (r > 0) {
    // do whatever;
  }
  else
    break;
}

break実行時にサイクルを停止し、ループから抜けます。

于 2013-09-06T17:18:07.943 に答える
1

while loop代わりに次のことを検討してください。

#include <stdio.h>
#define PI 3.14159

main(){
    float r, a;

    int continueBool = 1;
    while(continueBool == 1){
         printf("Enter the circle's radius (in centimeters): ");
         scanf ("%f", &r);

         if(r>0){
              a = PI * r * r *2.54;
              //the above formula may be wrong, so consider trying:
              //a = PI * r * r/2.54/2.54;
              printf("Its area is %3.2f square inches.\n", a);
         }
         else{
             continueBool = 0;
         }
     }
}

このbreakステートメント、C プログラミングに慣れていない場合は危険な場合があるため、C とブレークの理解を深めるまで使用しないことをお勧めします。を使用したい場合breakは、これが解決策になる可能性があります。

#include <stdio.h>
#define PI 3.14159

main(){
    float r, a;

    while(1){
         printf("Enter the circle's radius (in centimeters): ");
         scanf ("%f", &r);

         if(r<=0){
             break;
         }

         a = PI * r * r *2.54;
         //the above formula may be wrong, so consider trying:
         //a = PI * r * r/2.54/2.54;
         printf("Its area is %3.2f square inches.\n", a);
     }
}
于 2013-09-06T17:21:25.360 に答える
1
r=1.0f;

// break if no. of cases exhausted or r is negative or zero
for(int i =0; i < y && r > 0; i++) 
{
     printf("Enter the circle's radius (in centimeters): ");

     if( scanf ("%f", &r) == 1) // Always check for successful scanf
     {
          a = PI * r * r/2.54/2.54; //This is correct formula

          printf("Its area is %3.2f square inches.\n", a);
     } 

 }
于 2013-09-06T17:28:33.977 に答える
1

代わりに while ループを使用して、ユーザーが値 =>0 を入力するまで質問が継続的に表示されるようにすることをお勧めします。以下が役立つかどうかを確認してください(また、変換係数が正しくありませんでした);

#include <stdio.h>
#define PI 3.14159

void main()
{
    float r, a;
    printf("Enter the cirle's radius (in centimeters):");
    scanf("%f",&r); 

    while (r>0)
    {
        a=PI*r*r*0.155; // conversion from sqcm to sqin is ~0.155
        printf("Its area is %3.2f square inches \n", a);
        printf("Enter the cirle's radius (in centimeters):");
        scanf("%f",&r);
    }
}
于 2013-09-06T17:44:28.687 に答える
0

これを使って:

for(int i =0; i < y; i++)
{
     printf("Enter the circle's radius (in centimeters): ");
     scanf ("%f", &r);

     if(r > 0)
     {
          a = PI * r * r *2.54;

          printf("Its area is %3.2f square inches.\n", a);
     } 
     else
     {
          break;
     }
 }
于 2013-09-06T17:18:20.093 に答える