//通过键盘输入一个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);
}发布于 2019-03-14 16:44:11
您忘记检查x是否为4位数字。因此,如果输入是12345或123,就不能满足要求。
#include <stdio.h>
int main()
{
int x, a, b;
int passed = 0;
// Enter a 4 digits number: ABCD
do {
printf("Enter X = ");
scanf("%d", &x);
passed = (x >= 1000 && x <= 9999) || (x >= -9999 && x <= -1000);
} while (!passed);
a = x / 100;
b = x % 100;
printf("Numbers: %d %d \n", a, b);
printf("Sum = %d \n", a + b);
printf("Sub = %d \n", a - b);
printf("Mul = %d \n", a * b);
if (0 == b) {
printf("Div by Zero \n");
} else {
printf("Div = %f \n", (double)a / b);
printf("Mod = %d \n", a % b);
}
return 0;
}https://stackoverflow.com/questions/55157873
复制相似问题