PTA 最接近的价格

A、B、C三位选手竞猜商品价格,谁的价格最接近真实价格则谁胜。为简单起见,这里假设价格都是整数

输入格式:

按A、B、C的顺序在一行中依次输入3位选手所猜的价格以及真实价格。

输出格式:

在一行中输出胜者所猜的价格及其与真实价格的差距。若有两人以上相同时,则本轮作废,输出“no winner”。

思路分享:

站内查的时候,要么只要简介没有内容,要么就是vip,故写此码分享。

叠甲:萌新,语句基本学会一点做一点相关题目,史山请见谅,因为站内大佬发的有点看不懂,请轻喷。

本题最恶心的我认为就是条件不给全,我也是从提交报错界面一点点改的。大体就是差值为负必须输出负数不能正数,但比较时-1和1是算相同差值的。

具体代码用途已注释,如有其他见解欢迎评论区留言。

#include<stdio.h>
int main()
{
	int a,b,c,d,e,f,l,m,n,l1,m1,n1;//数值定义// 
	scanf("%d %d %d %d",&a,&b,&c,&d);
	l1=a-d;//计算差值// 
	l=l1;
	//赋值,题意要求输出也要负值,但-1和1本质上与0的距离相同,因此需要转化为正值来比较// 
	if (l<0){//将负值转化为正// 
		l=-l;
	}else{
		l=l;
	}
	m1=b-d;//同理,寻找载体来记录原本的值// 
	m=m1;
	if (m<0){//将负值转化为正// 
		m=-m;
	}else{
		m=m;
	}
	n1=c-d;//同理,寻找载体来记录原本的值//
	n=n1;
	if (n<0){//将负值转化为正// 
		n=-n;
	}else{
		n=n;
	}
	if ((m==n)||(n==l)||(m==l)||((m==l)&&(l==n))){
//此处有坑,所有判断必须用差值来判断 ,而不能用输入值来判断// 
		printf("no winner");
	}else if(m<n&&m<l){
		printf("%d %d",b,m1);
	}else if (n<m&&n<l){
		printf("%d %d",c,n1);
	}else if (l<n&&l<m){
		printf("%d %d",a,l1);
    }else{
    	printf("%d %d");//这个else不加也可以// 
	}
    return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值