耻辱之战-C语言简单题目比赛

前言

今天我们公司举行了一次 C 语言考试,发哥在我们内部群里公然对我发起挑战,结果,我被摩擦了,记录一下。

 

题目

题目描述

针对等额本金还款模式的客户,写一个程序按顺序输入贷款总额(单位为万元)、月利率、贷款总月数,输出第一个月客户还款金额(单位为元,取整数)。

等额本金计算公式如下:

每月还款金额 (贷款本金 还款总月数) + (本金 已归还本金累计额) × 每月利率

输入

依次输入贷款总额(整数,单位:万元)、月利率(浮点数)、贷款总月数(整数)

输出

月还款金额(取整数,单位:元)

 

前面几个题目就不说了,实在太简单,这个题目也很简单,但是我被摩擦就是没有看好题目,我刚开始是拿笔在纸上这样写的。完全没注意题目 输出第一个月客户还款金额

v2-f14b8e306498fdf113aae7e7018aee48_hd.jpg

而且,没写出来,最后上了个厕所后才写出来。

我刚开始的答案是

#include <stdio.h>

int main ()

{

      int a,b;

      float = ;

      int s;

     scanf( "%d %f %d" , & a, & i, & b);

     printf( "%d\n" ,i * 10000 * a + a * 10000 / b);

      return ;

}

结果输出

v2-766016089c84fb07eedbd43182faef96_hd.jpg

后面我改成(是对手交了答案从我旁边走过去,我上完厕所后才先起来改一下)

#include <stdio.h>

int main ()

{

      int a,b;

      float = ;

      int s;

     scanf( "%d %f %d" , & a, & i, & b);

     s  = i * 10000 * a + a * 10000 / b;

     printf( "%d\n" ,s);

      return ;

}

到这里,我就不明白了,为什么我一定要用一个变量接收数据才可以呢 ? 看着同事一个个交卷,自己被摩擦的感觉非常不好,那时候,唉,默默的去上个厕所,他们写完还在旁边讨论,我更加紧张了,这点点,那点点,时间就过去了。

后来结束后,我相信,这样也可以

#include <stdio.h>

int main ()

{

      int a,b;

      float = ;

      int s;

     scanf( "%d %f %d" , & a, & i, & b);

     s  = i * 10000 * a + a * 10000 / b;

     printf( "%f\n" ,i * 10000 * a + a * 10000 / b);

      return ;

}

v2-bbb7a5405812eb0a4c36820f95eba363_hd.jpg

但这样后面有很多小数点是不符合要求的,随便改成下面的

#include <stdio.h>

int main ()

{

      int a,b;

      float = ;

      int s;

     scanf( "%d %f %d" , & a, & i, & b);

     s  = i * 10000 * a + a * 10000 / b;

     printf( "%3.2f\n" ,i * 10000 * a + a * 10000 / b);

      return ;

 

}

v2-1397df5c0e22ad85cc22ab855f8f8b59_hd.jpg 看到后面输出长度也变成 2

再改一下

#include <stdio.h>

int main ()

{

      int a,b;

      float = ;

      int s;

 

     scanf( "%d %f %d" , & a, & i, & b);

     printf( "%3.0f\n" ,i * 10000 * a + a * 10000 / b);

      return ;

}

输出

v2-29bf93cc1cb0e2e6c1e133b9569d73f9_hd.jpg

这样就正确了,但是前面为什么这样呢?

看文章

嵌入式 Linux C 语言 printf 详解

zhuanlan.zhihu.com

v2-6264a6c8ac214ccc7967bc3c086859d1_hd.jpg

所以如果改成这样

#include <stdio.h>

int main ()

{

      int a,b;

      float = ;

      int s;

 

     scanf( "%d %f %d" , & a, & i, & b);

     printf( "%7.0f\n" ,i * 10000 * a + a * 10000 / b);

      return ;

 

}

输出

v2-990605bcb17a06e4cffd7eab1e1d5110_hd.jpg

 

补充

我后面一直想不明白,为什么强制类型不生效,所以现在都睡不着,肯定是紧张哪里写错了,没有及时改正,我想了下,这样写也是可以的

#include <stdio.h>

int main ()

{

      int a,b;

      float = ;

      int s;

 

     scanf( "%d %f %d" , & a, & i, & b);

     printf( "%d\n" ,( int )(i * 10000 * a + a * 10000 / b));

      return ;

 

}

v2-8349734af9030dcd599e806e641609e7_hd.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31561984/viewspace-2221188/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31561984/viewspace-2221188/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值