2017-09-07 14 views
0
#include<stdio.h> 
#include<cs50.h> 
#include<math.h> 
int main() 
{ 
float n; 
    do{ printf("change owed?\n"); 
    n = get_float(); 
    }while (n<0); 
int z,a,b,c,d; 
z = n*100; 
a = z/25; 
b = (z%25)/10; 
c = ((z%25)%10)/5; 
d = (((z%25)%10)%5)/1; 


if(z>25) 
{ 
printf("you will have %i quarter's'\n",a); 
} 

else if(z>10) 
{printf("you will have %i dime's'\n",b); 
} 

else if(z>5) 
{printf("you will have %i nickel's'\n",c); 
} 

else if(z>1) 
{printf("you will have %i pennie's'\n",d); 
} 

{if(a>10) 
{ 
printf("you will have %i dime's'\n",b); 
} 
else if(a>5) 
{printf("you will have %i nickel's'\n",c); 
} 
else if(a>1) 
{printf("you will have %i pennie's'\n",d); 
} 
{if(b>5) 
{printf("you will have %i nickel's'\n",c); 
} 
else if(b>1) 
{printf("you will have %i pennie's'\n",d); 
} 
{if(c>1) 
{printf("you will have %i pennie's'\n",d); 
}}}} 


printf("you will get %i coin's'\n",a+b+c+d); 
} 

これは私が書いたコードです。else文で期待される式のエラーが発生する

正しく動作しますが、小さな論理エラーです。 0.32の場合は、他の硬貨ではなく四半期のみを表示します。何故ですか? 正常に動作します。それは最終的に硬貨の数の正しい値を与えるが、それはちょうど各硬貨の値を出していない。

+1

なぜたくさんの '{' 'と '}'がありますか?また、コードを書式設定します。 – tkausl

+0

入れ子のif文に使用しました。 –

+0

いいえ、必要ありません。削除する必要があります。これはあなたのコードをはるかに読みやすくします。あなたのエラーは不要な中カッコから来ます。例えば 'else if(b> 1)'は 'if'を持たないブロックに属します。 – clemens

答えて

0
#include<stdio.h> 
#include<cs50.h> 
#include<math.h> 

int main() 
{ 
    float n; 
    do 
    { 
     printf("change owed?\n"); 
     n = get_float(); 
    } 
    while (n<0); 
    int z,a,b,c,d; 
    z = n*100; 
    a = z/25; 
    b = (z%25)/10; 
    c = ((z%25)%10)/5; 
    d = (((z%25)%10)%5)/1; 


    if(z>25) 
    { 
     printf("you will have %i quarter's'\n",a); 
    } 

    else if(z>10) 
    { 
     printf("you will have %i dime's'\n",b); 
    } 

    else if(z>5) 
    { 
     printf("you will have %i nickel's'\n",c); 
    } 

    else if(z>1) 
    { 
     printf("you will have %i pennie's'\n",d); 
    } 

    if(a>10) 
    { 
     printf("you will have %i dime's'\n",b); 
    } 
    else if(a>5) 
    { 
     printf("you will have %i nickel's'\n",c); 
    } 
    else if(a>1) 
    { 
     printf("you will have %i pennie's'\n",d); 
    } 
    if(b>5) 
    { 
     printf("you will have %i nickel's'\n",c); 
    } 
    else if(b>1) 
    { 
     printf("you will have %i pennie's'\n",d); 
    } 
    if(c>1) 
    { 
     printf("you will have %i pennie's'\n",d); 
    } 


    printf("you will get %i coin's'\n",a+b+c+d); 
} 

私はあなたのコードを部分的にインデントし、ブラケットの使用法を修正しました。このコードをチェックし、このようなインデントを維持しようとします。プログラムを書く前に構文を理解しておいてください。また、コードがより読みやすくなったので、自分でロジックの間違いを見つけようとすることもできます。

関連する問題