2017-03-03 125 views
0

我的代码:调试C代码是初学者

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 

int main() 
{ 
    int year; 
    double capital, rate; 
    float deposit; 
    char a, y, n; 
    printf("Input rate, year, capital:"); 
    printf("Compound interest (Y/N)?"); 
    scanf("%lf,%d,%lf", &capital, &year, &rate); 
    scanf(" %c", &a); 
    if (a = 'y') 
    { 
     deposit = capital*pow((1 + rate), n); 
     printf("deposit = %.4f\n"); 
    } 
    else if (a = 'n') 
    { 
     deposit = capital*(1 + rate * n); 
     printf("deposit = %.4f\n"); 
    } 
    return 0; 
} 

我不知道如何处理这样的:

snap shot

我想计算存款与已知的资本,年和年。 如果我输入y,我将使用存款=资本*(1 +利率)n 如果我输入n,我将使用存款=资本*(1 +利率* n)

+5

if(a ='y')<---将此更改为if(a =='y')。使用double equals来检查是否相等。与(a ='n')相同 –

+1

'printf(“deposit =%.4f \ n”);' - >'printf(“deposit =%.4f \ n”,存款);' – BLUEPIXY

+0

Aside:why '浮存;'而不是'双重存款;'? –

回答

1

似乎有几个问题。

if(a = 'y') 
. 
. 
. 
if(a = 'n') 

这些是有效的陈述,但不是你实际想要做的。 当你的if语句中有一个asignment操作符时,你只是检查是否分配是成功的。所以在你的情况下,如果你将'y'赋给a。

您要检查,看看是否已经包含“Y” 应该

if(a == 'y') 
. 
. 
. 
if(a == 'n') 

接下来,你总是得到0,因为你忘了打印出存款。

printf("deposit = %.4f\n"); 

应该

printf("deposit = %.4f\n", deposit); 
0

这里的主要错误是跟你的if语句条件:

一个= 'Y'

只使用一个等号当声明和分配值时。比较值时需要两个等号。

它应该是:

一个== 'Y'

同为别的,如果条件。