当前位置:首页 » 编程语言 » c语言宏定义比较三个数的大小
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言宏定义比较三个数的大小

发布时间: 2022-12-19 06:03:35

c语言:从键盘输入3个整数,输出绝对值最大的数。

比较优化的写法就是这样。
还可以改成宏定义#define Max(a,b) ( a>b ? a : b ) 来替换
#include <stdio.h>
#include <math.h>
void main()
{
int i,a[3];
printf("Input 3 numbers: ")
for(i=0;i<3;i++)
{
scanf("%d",&a[i]);
a[i] = abs(a[i]);
}
printf("\nThe number with maximum absolute value is %d\n", (a[0]>a[1] ? a[0] : a[1]) > a[2] ? (a[0]>a[1] ? a[0] : a[1]) : a[2] );
//宏定义替换printf("%d",Max(Max(a[0],a[1]),a[2]));
}

❷ C语言写一个函数,能实现从三个整数中挑选出最大值,并返回。要求在主函数中完成数据的输

#include "stdio.h"
int max(int,int);
void main(void)
{
int a,b,c;
printf("请输入a、b、c的值:\n");
scanf("%d%d%d",&a,&b,&c);
printf("最大值为:%d\n",max(max(a,b),c));
}
int max(int a,int b)
{
return a>b?a:b;
}
编译通过,其实这些题自己想一下就能写,并且大部分关于C语言的书上都有这样的一道题,编程最怕懒,多动手,多动脑,才能把编程学好!

❸ C语言: 定义一个宏,比较a、b的大小,不要用大于、小于和IF运算符

代码如下:

#include "stdio.h"

void main()

{

float a, b ,c;

printf ("请输入三个数,会为你从大到小排列! ");

scanf("%f %f %f",&a,&b,&c);

if(a>b>c){printf("%f,%f,%f",a,b,c);}

else if(a>c&&c>b){printf("%f,%f,%f",a,c,b);}

else if(b>a&&a>c){printf("%f,%f,%f",b,a,c);}

else if(b>c&&c>a){printf("%f,%f,%f",b,c,a);}

else if(c>b&&b>a){printf("%f,%f,%f",c,b,a);}

else if(c>a&&a>b){printf("%f,%f,%f",c,a,b);}

//编译器不识别三个连续的符号运算,必须用且(&&)和或(||)he否(!)

}

(3)c语言宏定义比较三个数的大小扩展阅读

C语言中宏定义的优点

方便程序的修改

使用简单宏定义可用宏代替一个在程序中经常使用的常量,这样在将该常量改变时,不用对整个程序进行修改,只修改宏定义的字符串即可,而且当常量比较长时, 可以用较短的有意义的标识符来写程序,这样更方便一些。

相对于==全局变量==两者的区别如下:

1、宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以。

2、宏定义的只是一段字符,在编译的时候被替换到引用的位置。在运行中是没有宏定义的概念的。而变量在运行时要为其分配内存。

3、宏定义不可以被赋值,即其值一旦定义不可修改,而变量在运行过程中可以被修改。

4、宏定义只有在定义所在文件,或引用所在文件的其它文件中使用。 而全局变量可以在工程所有文件中使用,只要再使用前加一个声明就可以了。换句话说,宏定义不需要extern。

❹ 使用C语言编写程序求三个数中的最大值。

#include<stdio.h>
void main(){
int a,b,c;
int max;
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max<b) max =b;
if(max<c) max= c;
printf("The max is:%d",max);
}

实现的方法有很多,随便在窗口上给你写了一个,你自己试试吧!类型如果变了就把变量的定义类型改一下就行了。如果想使用泛型,就比较复杂了。原理很简单,需要写成一个传递泛型的函数,可能会涉及到模板等,比较复杂。

❺ C语言求三个数据中最小值用带参数的宏实现

#include<stdio.h>
#definemin(x,y)(x)>(y)?(y):(x)
intmain()
{
inta,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("min:%d ",min(min(a,b),c));
return0;
}

宏定义min(x,y)求x,y中较小的数,这里的三目运算目注意要括号

然后输出叠加两个min

当然宏定义也可以带三个参数,但是就写得比较长,不易阅读



作答不易,望采纳

❻ C语言中 #define MAX(x,y) (x)>(y) (x):(y) 是什么意思啊

三目运算,这条语句实现了两数比较大小 返回较大数的功能
具体就是:如果条件x>y成立,就输出x,否则就输出y。由于是宏定义,x和y都需要用括号包围。

❼ C语言分别用函数和带参的宏,从3个数中找出最大数.

程序如下:

#definemax1(a,b,c)((a)>(b)?(a):(b))>(c)?((a)>(b)?(a):(b)):(c)//宏定义求最大值

#include<stdio.h>

intmax(intx,inty,intz)//定义函数求最大值

{

intmax1;

inta=y>z?y:z;

max1=x>a?x:a;

returnmax1;

}

intmain()

{

inta,b,c;

printf("输入三个数: ");

scanf("%d%d%d",&a,&b,&c);

printf("函数调用结果:%.3f ",float(max(a,b,c)));//强制转换为浮点数

printf("宏定义结果:%.3f ",float(max1(a,b,c)));

getchar();

return0;

}

运行截图如下:

❽ c语言输入三个数,输出其中最大数.要求自定义函数max(a,b),其功能是找出并返回a,b

需要依次在电脑中输入#include<stdio.h>main(){int a,b,c;int big;printf("请输入3个数 ");scanf("%d %d %d",&a,&b,&c);big=(a>b)?a:b;big=(big>c)?big:c;printf("最大数是%d ",big);}这些代码。

等到上面的代码输入好之后就可以测试运行,这时候电脑上就会显示结果正确。当EOF的宏定义超出char型数据所表示的范围时,这样就会出错,这种错误很难预料。

(8)c语言宏定义比较三个数的大小扩展阅读:

注意事项:

1、char的取值范围究竟是[-128,127]还是[0-255]取决于编译器。GCC编译器中的char表示signed char。所以应该将tmp的类型改成int 型,防止出现错误。

2、C总是按值传递,可以模拟按引用传递,定义接受指针的函数,在调用时使用 & 操作符。事实上向函数传入数组 (传入指针的情况参见问题 6.4 及其它) 时,编译器本质上就是在模拟按引用传递。

3、左值就是只能出现在=号的左边,可以被赋值。右值是只能出现在=号的右端,不能被赋值也不能自增。

❾ C语言 3个数比大小

输入50个数,求最大值。(求多个数的最大值的通用方法)
#include<stdio.h>
main()
{
int i,a;
int max;
printf("please input 50 numbers:");
scanf("%d",&a);
max = a;
for(i=2;i<=50;i++){
scanf("%d",&a);
if(a>max)
max=a;
}
printf("max=%d",max);

}

利用宏定义,求三个数中的最大值
#include <stdio.h>
#define MAX(x,y) ((x)>(y)?(x):(y))
void main()
{
int a, b, c;
printf("input 3 numbers:");
scanf("%d%d%d",&a,&b,&c);
printf("MAX is %d.\n", MAX(a,MAX(b,c)));

}

输入三个数,求其中的最大值。
#include<stdio.h>
main()
{
int a,b,c,max;
printf("please input 3 numbers:\n");
scanf("%d %d %d ",&a,&b,&c);
max=a;
if(b>c)
{if(b>max) max=b;}
else if(c>a)
max=c;
printf("max=%d",max);
}

输入三个整数,用空格分开,求其中的最大值 (if-else)
#include<stdio.h>
main()
{
int a,b,c,max;
printf("请输入三个整数,用空格分开。");
scanf("%d %d %d",&a,&b,&c);
if(a>b)
max=a;
else
max=b;
if(c>max)
max=c;
printf("你输入的三个数中最大的是%d\n",max);
}

输入三个数,求其中的最大值((a>b)?a:b)>c?((a>b)?a:b):c)
#include<stdio.h>
int main()
{
int a,b,c;
int max;
printf("input 3 numbers");
scanf("%d %d %d",&a,&b,&c);
printf("max=%d",((a>b)?a:b)>c?((a>b)?a:b):c);
return 0;
}

输入三个数,求其中的最大值 (用三元运算符)
#include<stdio.h>
int main(void)
{
int a,b,c,max;
printf("input 3 numbers:");
scanf("%d %d %d",&a,&b,&c);
max=a>b?a:b;
max=c>max?c:max;
printf("max=%d",max);
return 0;
}

用交换法求输入的三个数中的最大值
#include<stdio.h>
main()
{
int x,y,z,t;
printf("请输入三个数,并用空格分开:");
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;}/*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;}/*交换z,y的值*/
printf("最大值是%d\n",z);
}