何艺铧 发表于 2021-12-10 21:16:08

why3!

#include <stdio.h>

int main()
{
    float n;
    float p;
    scanf_s("%.f", &n);
    p = 10000 * (1 + n * 2.75);
    printf("%.f", p);



    return 0;
}
为什么输入5后会报错啊,我的发,题目是1. 有 10000 元,想存 5 年,分别求出以下三种方法存得的本息和:

一次性定期存 5 年;
先存 3 年定期,到期后本息再存 2 年定期;
存 1 年定期,到期后本息再存 1 年定期,连续存 5 次。
答案是#include <stdio.h>
#include <math.h>

int main()
{
      float p0 = 10000, p1;
      float r5 = 0.0275;

      p1 = p0 * (1 + r5 * 5);
      p2 = p0 * (1 + r3 * 3) * (1 + r2 * 2);
      p3 = p0 * pow((1 + r1), 5);

      printf("第一种方案的本息和是:%.2f\n", p1);
      

      return 0;
}

jackz007 发表于 2021-12-10 21:29:52

本帖最后由 jackz007 于 2021-12-10 21:30 编辑

      获取输入的时候,浮点数的格式描述符不可以这样写
    scanf_s("%.f", &n);
      必须改为
    scanf_s("%f", &n);

傻眼貓咪 发表于 2021-12-10 21:53:58

不知道答案是不是你要的:
#include <stdio.h>
#include <math.h>

double interest(int p, float r, int t){
    double res = 1 + r;
    for(int i = 0; i < t; i++)
    res *= (1+r);
    return p*res;
}

int main()
{
    int principal = 10000;
    float rate = 0.0275;
    double a, b, c;
   
    /* 一次性定期存 5 年 */
    a = interest(principal, rate, 5);
   
    /* 先存 3 年定期,到期后本息再存 2 年定期 */
    b = interest(principal, rate, 3);
    b = interest(b, rate, 2);
   
    /* 存 1 年定期,到期后本息再存 1 年定期,连续存 5 次 */
    c = interest(principal, rate, 1);
    for(int i = 1; i < 5; i++)
    c = interest(c, rate, 1);
   
    printf("a: %.2lf\n", a);
    printf("b: %.2lf\n", b);
    printf("c: %.2lf", c);

    return 0;
}输出结果:a: 11767.69
b: 12091.07
c: 13114.60
页: [1]
查看完整版本: why3!