c语言数位拆分,从键盘上输入一个4位数的整数n,编写程序将其拆分为两个2位数的整数a和b

题目内容:
从键盘上输入一个4位数的整数n,编写程序将其拆分为两个2位数的整数a和b,计算并输出拆分后的两个数的加、减、乘、除和求余运算的结果。例如n=-4321,设拆分后的两个整数为a,b,则a=-43,b=-21。除法运算结果要求精确到小数点后2位。求余和除法运算需要考虑除数为0的情况,即如果拆分后b=0,则输出提示信息"the second operater is zero!"

程序的运行结果示例1:
please input n:
1200↙
12,0
sum=12,sub=12,multi=0
the second operater is zero!

程序的运行结果示例2:
please input n:
-2304↙
-23,-4
sum=-27,sub=-19,multi=92
dev=5.75,mod=-3

输入格式:

"%d"

输出格式:

输入提示信息:"please input n:\n"
拆分后的两个整数的输出格式:"%d,%d\n"
加法、减法、乘法的输出格式:"sum=%d,sub=%d,multi=%d\n"
除法和求余的输出格式:"dev=%.2f,mod=%d\n"
除数为0的提示信息:"the second operater is zero!\n"

输入样例:

输出样例:

下面是我做的,求指点一二

#include<stdio.h>
int main()
{
int n,a,b,sum,sub,multi,mod;
float dev;
char op;
printf("please input n:\n");
scanf("%d",&n);
a=n/100;
b=n%100;
printf("%d,%d\n",a,b);
switch (op)
{
case '+':
sum=a+b;
printf("sum=%d\n",sum);
break;
case '-':
sub=a-b;
printf("sub=%d\n",sub);
break;
case '*':
multi=a*b;
printf("multi=%d\n",multi);
break;
case '/':
if (b==0)
{
printf( "the second operater is zero!\n");
}
else
{
dev=a/b;
printf("dev=%.2f\n",dev);
}
break;
case '%':
if (b==0)
{
printf( "the second operater is zero!\n");
}
else
{
mod=a%b;
printf("mod=%d\n",mod);
}
break;
}
}
都是显示用例未通过
最新回答
枯墨云

2024-06-07 03:11:16

op没有初始化,它不是+-*/中的任何一个,所以无显示。
不要这些switch和case,就可以得到结果。
追问
求解怎么改
追答
#include<stdio.h>
int main()
{
 int n,a,b,sum,sub,multi,mod;
 float dev;
 char op;
printf("please input n:\n");
scanf("%d",&n);
a=n/100;
b=n%100;
printf("%d,%d\n",a,b);
       sum=a+b;
       printf("sum=%d\n",sum);
      
       sub=a-b;
       printf("sub=%d\n",sub);
      
       multi=a*b;
       printf("multi=%d\n",multi);
       
        if (b==0)
      {
         printf( "the second operater is zero!\n");
      }
     else
      {
         dev=a/b;
         printf("dev=%.2f\n",dev);
      }
         
      if (b==0)
      {
         printf( "the second operater is zero!\n");
      }
     else
      {
         mod=a%b;
         printf("mod=%d\n",mod);
      }
        
  
return 0;
}