鱼C论坛

 找回密码
 立即注册
查看: 2155|回复: 8

推荐消费套餐

[复制链接]
发表于 2020-5-19 20:11:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

int a[19]={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[19]={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[i]-n)<abs(a[i+1]-n))
        {
                t=i;
        }
        printf("该客户可推荐%d号套餐,%d元\n",t,a[i]);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 20:22:18 From FishC Mobile | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-5-19 20:24 编辑

你试试把所有的差额存入一个数组,最后再筛选
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 20:27:30 From FishC Mobile | 显示全部楼层
不然你这个程序只能算出一个商品
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 20:34:27 | 显示全部楼层
liuzhengyuan 发表于 2020-5-19 20:27
不然你这个程序只能算出一个商品

可以发一下吗 我还是没改对
#include<stdio.h>
#include<math.h>
int main()
{
        int a[19]={0,18,38,108,48,68,35,72,66,120,180,65,75,85,56,66,92,15,68},n,t=0,i,b[19];
        scanf("%d",&n);
        b[i]=abs(a[i]-n);
        for(i=0;i<19;i++)
        {
                if(b[i]<b[i+1])
                t=i;
        }
        printf("该客户可推荐%d号套餐,%d元\n",t,b[i]);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 20:37:10 From FishC Mobile | 显示全部楼层
你今天学C了吗 发表于 2020-5-19 20:34
可以发一下吗 我还是没改对


弟7行要不要加个for?
你试试把b排序
然后选出第一名,或并列第一
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 21:20:57 | 显示全部楼层
liuzhengyuan 发表于 2020-5-19 20:37
弟7行要不要加个for?
你试试把b排序
然后选出第一名,或并列第一

还是不太对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 21:31:29 From FishC Mobile | 显示全部楼层
你今天学C了吗 发表于 2020-5-19 21:20
还是不太对

发代码来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 21:34:20 | 显示全部楼层
#include<stdio.h>
#include<math.h>
int main()
{
        int a[19]={0,18,38,108,48,68,35,72,66,120,180,65,75,85,56,66,92,15,68},n,t=0,i,b[19],temp;
        scanf("%d",&n);
        for(i=0;i<=19;i++)
            b[i]=abs(a[i]-n);
        if(b[i]>b[i+1])
        {
                temp=b[i+1];
                b[i+1]=b[i];
                b[i]=temp;
        }
        for(i=0;i<19;i++)
        {
                if(b[i]<b[i+1])
                t=i;
        }
        printf("该客户可推荐%d号套餐,%d元\n",t,b[0]);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 21:50:49 From FishC Mobile | 显示全部楼层
你今天学C了吗 发表于 2020-5-19 21:34

建议先排序
你这样还是有很多bug
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 19:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表