怎样可以避免不合实际的输出

#include<stdio.h>
#include<math.h>
int main()
{
int n;
double money,a,b;
printf("请输入入园人数:");
scanf("%d",&n);

  if(n>30){
     a=120; 
     printf("%.2f\n",a); }
    else if(n=30)
    {
     money=4*n; 
     printf("%.2f\n",a); }
      else
        money=5*n;
        printf("%.2f\n",money);
        b=money;
if(a<b)
printf("第一个方案更合算,共花费%.2f元\n",a);
else
  printf("第二个方案更合算,共花费%.2f元\n",b); 
return 0;

}
怎么样可以避免花费为0

img

你的代码有点语法错误,改正之后加了判断逻辑,望采纳!

#include<stdio.h>
#include<math.h>
int main()
{
int n;
double money,b;
double a = 0.0;
printf("请输入入园人数:");
scanf("%d",&n);

if(n>30){
     a=120; 
     printf("a:%.2f\n",a); }
else if(n==30)
    {
     money=4*n; 
     printf("a:%.2f\n",a); }
else
        {money=5*n;
        printf("b:%.2f\n",money);
        b=money;}
if(a<b && a  > 0.0)
printf("第一个方案更合算,共花费%.2f元\n",a);
else
  printf("第二个方案更合算,共花费%.2f元\n",b); 
return 0;
}

给你改了下,是不是{}少写了


#include<stdio.h>
#include<math.h>
int main()
{
int n;
double money,a,b;
printf("请输入入园人数:");
scanf("%d",&n);

if(n>30){
     a=120; 
     printf("%.2f\n",a); }
    else if(n=30)
    {
     money=4*n; 
     printf("%.2f\n",a); }
    else{
        money=5*n;
        printf("%.2f\n",money);
        b=money;
    }
if(a<b)
printf("第一个方案更合算,共花费%.2f元\n",a);
else
  printf("第二个方案更合算,共花费%.2f元\n",b); 
return 0;

}

你输入21,对a没有进行赋值,a的值默认为0,a当然小于b,输出自然是0。还有else if(n==30)你少写了一个“=”。

题目发一下,不然没得选。