推荐消费套餐
某公司有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:24 编辑
你试试把所有的差额存入一个数组,最后再筛选 不然你这个程序只能算出一个商品 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;
}
你今天学C了吗 发表于 2020-5-19 20:34
可以发一下吗 我还是没改对
弟7行要不要加个for?
你试试把b排序
然后选出第一名,或并列第一 liuzhengyuan 发表于 2020-5-19 20:37
弟7行要不要加个for?
你试试把b排序
然后选出第一名,或并列第一
还是不太对{:10_269:} 你今天学C了吗 发表于 2020-5-19 21: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;
}
你今天学C了吗 发表于 2020-5-19 21:34
建议先排序
你这样还是有很多bug
页:
[1]