为什么a和b必须都要用double类型,为什么不能用float

#include<stdio.h>
void main()
{
double a,b;
printf("请输入预计购买天数:");
scanf("%d",&a);
a<30?b=a:b=a*0.75;
printf("您应付:%d\n",b);
}

代码不行啊,%d只能输入整数,改为%lf
用float也可以,但需要改成%f

#include<stdio.h>
void main()
{
   int a;
   float b;
   printf("请输入预计购买天数:");
   scanf("%d",&a);
    a<30?b=a:b=a*0.75;
    printf("您应付:%.2f\n",b);
}

这是谁写的代码?
b=a<30?a:a*0.75;
这样更简洁,也不容易出错。不要在三元表达式里写赋值
此外,前后的%d都写错了,要写%lf才行
这代码都写错了,你还问它为什么必须这样
答案就是根本不必须这样