算法笔记 Problem B: C语言10.2

算法笔记 Problem B: C语言10.2

Description

输入a、b、c三个整数,按先大后小的顺序输出a、b和c。注意请使用指针变量的方式进行比较和输出。

Input

三个用空格隔开的整数a、b和c。

Output

按先大后小的顺序输出a、b和c,用空格隔开。
请注意行尾输出换行。

Sample Input

9 0 10

Sample Outpu

10 9 0

略微有些复杂,还有个疑问,但输出没问题,想知道:函数调用cmp,输出时printf里面a*和a都可以得到正确答案,换成a不是地址吗,应该出错啊

#include<cstdio>
#include<cstring>
void cmp(int* a,int* b,int* c){
    if(*a>*b){
        if(*b>*c)
            printf("%d %d %d\n",*a,*b,*c);
        else{
            if(*a>*c){
               printf("%d %d %d\n",*a,*c,*b);
            }
            else{
                printf("%d %d %d\n",*c,*a,*b);
            }
        }
    }
    else{
        if(*a>*c)
            printf("%d %d %d\n",*b,*a,*c);
        else{
            if(*b>*c){
                printf("%d %d %d\n",*b,*c,*a);
            }
            else{
                printf("%d %d %d\n",*c,*b,*a);
            }
        }
    }
}
int main(){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    int* p1=&a;
    int* p2=&b;
    int* p3=&c;
    cmp(p1,p2,p3);
    return 0;
}

还有一种稍微简单点的写法,注意:主函数内调用的顺序要一定!!!

#include<cstdio>
#include<cstring>
void compare(int* a,int* b){
	//大的放在第一个参数
	int temp;
	if(*a<*b){
	    temp=*a;
	    *a=*b;
	    *b=temp;
	}
}
int main() {
	int a=0,b=0,c=0;
	scanf("%d %d %d",&a,&b,&c);
	compare(&a,&b);//比较时一定要先比较a与b,再a与c,最后b与c,才能保证a>b>c
	compare(&a,&c);
	compare(&b,&c);
	printf("%d %d %d\n",a,b,c);
    return 0}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值