【发布时间】:2019-03-14 08:24:48
【问题描述】:
//从键盘输入一个4位整数n,编写程序将其分成两个2位整数a和b,计算并输出加减乘除和冗余运算的结果分裂的两个数字。比如n=-4321,如果拆分后的两个整数是a和b,那么a=-43,b=-21。除法运算结果要求精确到小数点后2位,数据类型为float。冗余和除法运算需要考虑到0的除法,即如果分裂B=0,则输出提示信息“第二个运算符为零!”
//测试不通过,如何解决
#include<stdio.h>
#include<math.h>
int main()
{
int x, a, b;
printf("Please input n:\n");
scanf("%d", &x);
a = x / 100;
b = x % 100;
printf("%d,%d\n", a, b);
printf("sum=%d,sub=%d,multi=%d\n", a + b, a - b, a*b);
if (b == 0)
printf("The second operater is zero!");
else
printf("dev=%.2f,mod=%d\n", (float)a / b, a%b);
}
【问题讨论】:
-
为我工作,什么输入给你错误的输出?
-
你能用一个不能按预期工作的测试用例来澄清你的问题吗?你给的那个产生了预期的结果。
-
我在网上提交了这段代码,网页只是反馈了一个失败的结果。我也不知道具体原因
-
请注意,在线评委通常需要以非常特定的方式格式化输出。另外,如果“冗余”是指remainder,那么它可能过于挑剔,请注意,在数论中,最小正余数始终是正数,这与
%的结果不同。跨度> -
很好奇,为什么在
(float)a / b与(double)a / b中转换为(float)?注意:在第一种情况下,float商在作为...参数传递时提升为double。第二种情况不会导致类型更改。
标签: c