你今天学C了吗 发表于 2020-5-19 20:11:15

推荐消费套餐

某公司有18种月消费套餐,保存在数组a中,a是第i种套餐的金额

int a={0,18,38,108,48,68,35,72,66,120,180,65,75,85,56,66,92,15,68};

输入客户的月实际消费金额,为他们推荐与消费金额最接近的套餐。

注意:与消费金额相差最小的套餐都要输出,可以选用求整数y绝对值的标准函数abs(y)

输入格式:
输入客户的月实际消费金额

输出格式:
按格式输出推荐的套餐:该客户可推荐?号套餐,?元

如果有多个套餐与消费金额同样接近,则一行输出一个。

输入样例:
70
输出样例:
该客户可推荐5号套餐,68元
该客户可推荐7号套餐,72元
该客户可推荐18号套餐,68元

请问这个程序应该怎么写?
下面这个应该怎么改
#include<stdio.h>
#include<math.h>
int main()
{
      int a={0,18,38,108,48,68,35,72,66,120,180,65,75,85,56,66,92,15,68},n,t=0,i;
      scanf("%d",&n);
      if(abs(a-n)<abs(a-n))
      {
                t=i;
      }
      printf("该客户可推荐%d号套餐,%d元\n",t,a);
      return 0;
}

liuzhengyuan 发表于 2020-5-19 20:22:18

本帖最后由 liuzhengyuan 于 2020-5-19 20:24 编辑

你试试把所有的差额存入一个数组,最后再筛选

liuzhengyuan 发表于 2020-5-19 20:27:30

不然你这个程序只能算出一个商品

你今天学C了吗 发表于 2020-5-19 20:34:27

liuzhengyuan 发表于 2020-5-19 20:27
不然你这个程序只能算出一个商品

可以发一下吗 我还是没改对#include<stdio.h>
#include<math.h>
int main()
{
        int a={0,18,38,108,48,68,35,72,66,120,180,65,75,85,56,66,92,15,68},n,t=0,i,b;
        scanf("%d",&n);
        b=abs(a-n);
        for(i=0;i<19;i++)
        {
                if(b<b)
                t=i;
        }
        printf("该客户可推荐%d号套餐,%d元\n",t,b);
        return 0;
}

liuzhengyuan 发表于 2020-5-19 20:37:10

你今天学C了吗 发表于 2020-5-19 20:34
可以发一下吗 我还是没改对

弟7行要不要加个for?
你试试把b排序
然后选出第一名,或并列第一

你今天学C了吗 发表于 2020-5-19 21:20:57

liuzhengyuan 发表于 2020-5-19 20:37
弟7行要不要加个for?
你试试把b排序
然后选出第一名,或并列第一

还是不太对{:10_269:}

liuzhengyuan 发表于 2020-5-19 21:31:29

你今天学C了吗 发表于 2020-5-19 21:20
还是不太对

发代码来看看

你今天学C了吗 发表于 2020-5-19 21:34:20

liuzhengyuan 发表于 2020-5-19 21:31
发代码来看看

#include<stdio.h>
#include<math.h>
int main()
{
        int a={0,18,38,108,48,68,35,72,66,120,180,65,75,85,56,66,92,15,68},n,t=0,i,b,temp;
        scanf("%d",&n);
        for(i=0;i<=19;i++)
            b=abs(a-n);
        if(b>b)
        {
                temp=b;
                b=b;
                b=temp;
        }
        for(i=0;i<19;i++)
        {
                if(b<b)
                t=i;
        }
        printf("该客户可推荐%d号套餐,%d元\n",t,b);
        return 0;
}

liuzhengyuan 发表于 2020-5-19 21:50:49

你今天学C了吗 发表于 2020-5-19 21:34


建议先排序
你这样还是有很多bug
页: [1]
查看完整版本: 推荐消费套餐