C语言笔试题精选1---求两个数之间较大的数,不使用if、while、switch、for、?:/以及任何比较语句

题目:求两个数a、b之间较大的数,不使用if、while、switch、for、?:/以及任何比较语句

#include <stdio.h> 

int min(int a, int b)
{
    int d = a - b;
    int flag = ((unsigned int)d) >> 31;
    int array[] = {b, a};

    return array[flag];
}

int main(int argc, char *argv[])
{
	int i_min, a, b;
	scanf("%d %d",&a,&b);
    i_min = min(a,b);
    printf("%d\n",i_min);

    return 0;
}

输出:

时间: 2024-10-24 10:16:39

C语言笔试题精选1---求两个数之间较大的数,不使用if、while、switch、for、?:/以及任何比较语句的相关文章

编程题:返回指针值的函数,求两个数中较大的数。

#include<stdio.h> int *max(int *x,int *y) { int *q; if(*x>*y)  q=x; else  q=y; return q; } void main() { int a,b,*p; scanf("%d,%d",&a,&b); p=max(&a,&b); printf("%d,%d,max is %d\n",a,b,*p); } 编程题:返回指针值的函数,求两个数中较

编程题:指向函数的指针,求两个数中较大的数。

#include<stdio.h> int max(x,y) { int z; if(x>y)  z=x; else  z=y; return z; } void main() { int a,b,c; int (*p)(); p=max; scanf("%d,%d",&a,&b); c=(*p)(a,b); printf("%d,%d,max is %d\n",a,b,c); } 编程题:指向函数的指针,求两个数中较大的数.,布布

不用”if“,”?:“,”switch“或其他判断语句,求两个数中较大的数或较小的数

以下五种方法分别求出较大的数和较小的数的方法.较小数的代码在注释中,但未运行测试. int Find1(int a, int b) { return ((a + b) + abs(a - b)) / 2; //return ((a + b) - abs(a - b)) / 2; } /* 当a大于b时,a-b为正,右移sizeof(int) * 8 - 1后,最右侧一位为0,0^1 = 0: 当a小于b时,a-b为负,右移后最右侧一位为1,1^1 = 1 */ int Find21(int a,

求两个数之间的随机正整数

求两个数之间的随机正整 数.并添到新数组,数组长度由自己指定.并且数组中不能有重复的值 function getRandomInt (min, max) { return Math.floor(Math.random() * (max - min + 1) + min) } function numInt(n, min, max) { const arr = [] while(arr.length < n) { let num = getRandomInt(min, max) if (arr.i

C语言笔试题精选3---死锁发生必要条件是?

问:以下哪些是死锁发生必要条件? A.相互排斥条件 B.请求和保持 C.不可剥夺 D.循环等待 具体解答: 1.相互排斥使用(资源独占) 一个资源每次仅仅能给一个进程使用 2.不可强占(不可剥夺) 资源申请者不能强行的从资源占有者手中夺取资源,资源仅仅能由占有者自愿释放 3.请求和保持(部分分配,占有申请) 一个进程在申请新的资源的同一时候保持对原有资源的占有(仅仅有这样才是动态申请,动态分配) 4.循环等待 存在一个进程等待队列 {P1 , P2 , - , Pn}, 当中P1等待P2占有的资

C语言笔试题精选2---int a[10];问下面哪些不可以表示a[1]的地址?

问题:int a[10];问下面哪些不可以表示a[1]的地址? A.a+sizeof(int) B.&a[0] + 1 C.(int*)&a+1 D.(int*)((char*)&a+sizeof(int)) #include <stdio.h> int main() { int a[10] = { 1,2,3,4,5,6,7,8,9,0 }; printf("*******输出地址*******\n"); printf("a[0] = %

华为C语言笔试题集合

①华为笔试题搜集 1.static有什么用途?(请至少说明两种)    1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.    2) 在模块内(但在函数体外),一个被声明为静态的变量能够被模块内所用函数訪问,但不能被模块外其他函数訪问.它是一个本地的全局变量.    3) 在模块内,一个被声明为静态的函数仅仅可被这一模块内的其他函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用 2.引用与指针有什么差别?    1) 引用必须被初始化,指针不必.    2)

C语言求两个数中最大公约数

在C语言中如何求两个数的最大公约数呢?下面用三种方法进行求解. 方法一:穷举法. 先比较两个数的大小,然后找出较小数t,最后判断t为何值时两个数都能整除,此方法效率较低. 代码如下: #include<stdio.h> int main() {      int num1,num2,temp,i;      scanf("%d%d",&num1,&num2);      if(num1>num2)      {            temp=num1

求两个数的最大公约数和最小公倍数 C语言

C程序设计第八章的第一道题目,求两个数的最大公约数和最小公倍数.需要注意一下几点: 1.最大公约数和最小公倍数间的关系: 设两个数是a,b最大公约数是p,最小公倍数是q 那么有这样的关系:ab=pq 所以q=ab/p.2.任意整数和0的公约数是该整数的所有约数,所以它们的最大公约数为该整数本身.3.碾转相除法:被除数%除数=余数,如果余数不为0,就让原来的除数做为被除数,余数作为除数,再进行运算 被除数%除数=余数,直到得到的余数为0为止,此时的除数就是最大公约数. #include <stdi