當前位置:首頁 » 編程語言 » 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);
}