ITPub博客

首页 > 应用开发 > C/C++ > 耻辱之战-C语言简单题目比赛

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

原创 C/C++ 作者:LinuxDevqqqqqq 时间:2018-11-22 16:33:19 0 删除 编辑

前言

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

 

题目

题目描述

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

等额本金计算公式如下:

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

输入

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

输出

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

 

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

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

我刚开始的答案是

#include <stdio.h>

int main ()

{

      int a,b;

      float i  = ;

      int s;

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

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

      return ;

}

结果输出

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

#include <stdio.h>

int main ()

{

      int a,b;

      float i  = ;

      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 i  = ;

      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 ;

}

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

#include <stdio.h>

int main ()

{

      int a,b;

      float i  = ;

      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 ;

 

}

看到后面输出长度也变成 2 了

再改一下

#include <stdio.h>

int main ()

{

      int a,b;

      float i  = ;

      int s;

 

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

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

      return ;

}

输出

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

看文章

嵌入式 Linux : C 语言 printf 详解

zhuanlan.zhihu.com

所以如果改成这样

#include <stdio.h>

int main ()

{

      int a,b;

      float i  = ;

      int s;

 

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

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

      return ;

 

}

输出

  完

补充

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

#include <stdio.h>

int main ()

{

      int a,b;

      float i  = ;

      int s;

 

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

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

      return ;

 

}

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

上一篇: GDB 调试代码
请登录后发表评论 登录
全部评论
微信公众号-嵌入式Linux 嵌入式开发有10余年,从刚开始的STC89C51单片机,STM32单片机,ARM,Linux ,Nordic ble ,Android系统开发,在学习和开发过程中,积累了很多经验,希望这些学习经验跟在码农路上一起奋斗的同学们一起分享。

注册时间:2018-11-13

  • 博文量
    61
  • 访问量
    133465