【c语言】不用大与小与号,求两数最大值

//  不用大与小与号,求两数最大值

#include <stdio.h>

int max(int a, int b)
{
	int c = a - b;
	int d = 1 << 31;
	if ((c&d) == 0)
	{
		return a;
	}
	else
	{
		return b;
	}
}

int main()
{
	printf("%d是大数\n", max(0, 2));
	printf("%d是大数\n", max(3, 4));
	printf("%d是大数\n", max(-1, 5));
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-24 11:44:29

【c语言】不用大与小与号,求两数最大值的相关文章

【C语言】不使用大小于号,求出两数最大值

//不使用大小于号,求出两数最大值 #include <stdio.h> #include <math.h> double Max(double a, double b) { double q = sqrt((a-b)*(a-b)); return ((a + b) + q) / 2; } int main() { printf("(5,8)大的数为:%.0f\n", Max(5, 8)); printf("(0,4)大的数为:%.0f\n"

不用【加减乘除】求两个整数之和

首先我们可以分析人们是如何做十进制的加法的,比如是如何得出5+17=22这个结果的.实际上,我们可以分成三步进行: 只做各位相加不进位,此时相加的结果是12(个位数5和7相加不要进位是2,十位数0和1相加结果是1): 做进位,5+7中有进位,进位的值是10;第三步把前面两个结果加起来,12+10的结果是22,刚好5+17=22. 我们一直在想,求两数之和四则运算都不能用,那还能用什么?对数字做运算,除了四则运算之外,也就只剩下位运算了.位运算是针对二进制的,我们就以二进制再来分析一下前面的三步走

求两数最小公倍数

输入代码: /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:sum123.cpp * 作 者:林海云 * 完成日期:2015年1月10日 * 版 本 号:v2.0 * * 问题描述:求两数的最小公倍数 * 输入描述:两个整数 * 程序输出:最小公倍数 */ #include<iostream> using namespace std; int gcd(int x,int y); int gad(int x,int

编程题:求两数之和

#include<stdio.h>       /*包含输入输出头文件*/ main()                            /*定义主函数*/ {  int a,b,sum;                /*定义整数变量a.b.sum*/ a=123;                        /*给a赋值*/ b=456;                        /*给b赋值*/ sum=a+b;                  /*令sum=a+b*/ p

(c语法百题7)求两数的整数商 和 余数

知识点: 求商和求余 /   和 % 的用法. 注意 /  中,两个%d的值为整数,即取整.有%f类的,就是商了,带小数的. 内容: 求两数的整数商 和 余数 输入说明: 一行两个整数 输出说明: 一行两个整数 输入样例: 若题目没有特别说明,则应该以多组测试数据方式读取,或者参考a001. 18 4 输出样例 : 4 2 #include <stdio.h> int main() { int a,b; scanf("%d %d",&a,&b); print

(c语法百题8)求两数的整数商 和 商

内容: 求两数的整数商 和 商 ,商保留两位小数 输入说明: 一行 两个整数 输出说明: 一行,一个整数,一个实数(两位小数) 输入样例: 若题目没有特别说明,则应该以多组测试数据方式读取,或者参考a001. 12 8 输出样例 : 1 1.50 #include <stdio.h> int main() { int a,b; scanf("%d %d",&a,&b); printf("%d %.2f\n",a/b,a/(1.0*b));

(c语法百题4)求两数中的较大者

知识点: if语句 内容: 求两数中的较大者 输入说明: 一行两个数 输出说明: 一行 一个 数字 输入样例: 若题目没有特别说明,则应该以多组测试数据方式读取,或者参考a001. 3 5 输出样例 : 5 #include <stdio.h> int main() { int a,b,c; scanf("%d %d",&a,&b); if(a<b) { c=b; a=c; } printf("%d\n",a); return 0;

算法怎么就这么难?----使用欧几里得算法求两数的最大公约数

本人菜鸟一枚,上午在看书的时候突然看到了求最大公约数的一个例题,突然就想到以前好像看过一个欧几里得算法,故又上网仔细找了一下欧几里得算法的原理.可能是本人时间长没看算法,脑子都生锈了. 看了几个讲解欧几里得算法的文章,大都只给公式,然后说了一大堆因为....在我还没看懂的时候,突然来了个所以...然后公式就这样推出来的.⊙﹏⊙b汗! 经过我这令人捉急的小脑袋转了半天,最后有了点眉目,所以拿出来和大家分享一下! 1.首先说一下:欧几里得算法是求两个数的最大公约数的,你可能会问:什么是最大公约数?

问题 : 用指针????求两数的和与两数的差

问题 : 两数和与差(用参数带回结果) 题目描述 下面的程序,输入两个整数,调用函数ast后,输出了两数之和及两数之差.阅读程序,补全程序中空白处. #include <iostream> using namespace std; void ast(int x,int y,int *cp,int *dp) { //补全函数的定义 ___(1)____=x+y; ___(2)____=x-y; } int main() { int a,b,c,d; cin>>a>>b;