我想用c编程编写(a ^ n-1)。我写了pow(a,n-1)
,输出是
错误。我怎么解决这个问题?谢谢。
这是我的代码:
#include <stdio.h>
#include<math.h>
int main() {
float a, r,n;
float sum = 0;
a = 1.04*pow(a, n-1);
r = 1.02*pow(1.04,-1);
n = 2;
sum = 360000*pow(1.04,n)-50000*(a * (1 - pow((r), n ))) / (1- (r));
printf("\n%.2f", sum);
return 0;
}
正确的输出应该是286376
,但是程序显示了2903773
答案 0 :(得分:0)
pow(a,n-1)转换为exp(log(a)*(n-1))并不完全相同。您可以尝试将输出取整:
round(pow(a, n-1))
答案 1 :(得分:0)
每个C程序都逐行执行。因此,在编译器启动时
a = 1.04*pow(a, n-1);
此行(变量a
和n
没有分配任何值,导致为您提供了垃圾值...
因此,问题是,您尚未在变量中分配值,而您仍在使用它们。
使用变量之前,必须先在变量中分配值。否则,他们将从内存中选择任何垃圾值(任何随机数)。
在a
和n
中分配值,然后重试。
编辑:正如chux's comment所建议的那样,如果您的程序应该提供286376
作为输出,则a
的值应为1
和值n
应该是2
。
因此,您的正确代码应为:
#include <stdio.h>
#include <math.h>
int main() {
float a=1, r, n=2;
float sum = 0;
a = 1.04*pow(a, n-1) ;
r = 1.02*pow(1.04,-1);
sum = 360000*pow(1.04,n)-50000*(a * (1 - pow((r), n ))) / (1- (r));
printf("\n%.2f", sum);
return 0;
}