我知道你為什么會錯了,因為你輸入數(shù)據(jù)的方式不對,正確的如:(3.5,4.5\n)就可以了,你么有好的習慣,也有么調式的經(jīng)驗,如果你輸入錯誤如:(3.5 4,5)或者(3,5 回車 4,5) 就會出錯,因為你的b變量沒有得到數(shù)據(jù)或者數(shù)據(jù)溢出了,調試的結果是這樣的 b= -1.0737418e+008 float,
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供隨州網(wǎng)站建設、隨州做網(wǎng)站、隨州網(wǎng)站設計、隨州網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、隨州企業(yè)網(wǎng)站模板建站服務,十載隨州做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
正確的代碼如:scanf("%f,%f,",a,b); (3.5,4.5)比較等于4,注意是道號,輸入也要加道號
正確的代碼如:scanf("%f %f,",a,b); (3.5 4.5)比較等于4 ,%f后面是空格,你輸入的數(shù)后也需要是空格或者回車
你這代碼錯太多了,比如float比較的是兩個實數(shù),但你實際是int 類型結果,所以你的代碼只是用與2個int類型的整數(shù)比較,可以看看郝斌的C語言視頻有詳細講這個Max函數(shù)的
一起學習,謝謝
#includestdio.h
#define
N
100
int
input(char*a,char*b)//輸入兩個字符串
{
printf("Input
the
first
information:\n");
fgets(a,N,stdin);
printf("Input
the
secend
information:\n");
fgets(b,N,stdin);
}
int
my_strcmp(char*a,char*b)//比較字符串每個字符的大小
{
while((*a!='\0')(*b!='\0'))
{
if(*a*b)
{
return
0;
}
else
if(*a*b)
{
return
1;
}
else
{
a++;
b++;
}
}
if((*a=='\0')(*b!='\0'))//字符串b比字符串a(chǎn)長
{
return
1;
}
else
if((*a!='\0')(*b=='\0'))//字符串a(chǎn)比字符串b長
{
return
0;
}
else
{
return
2;
}
}
int
main()
{
char
a[N]={0};
char
b[N]={0};
int
net2=0;
input(a,b);//調用輸入函數(shù)
net2=my_strcmp(a,b);//調用比較大小函數(shù)
if(0==net2)//輸出大小
{
printf("ab\n");
}
else
if(1==net2)
{
printf("ab\n");
}
else
{
printf("a=b\n");
}
return
0;
}
擴展資料:
一、return在函數(shù)中的作用
我們如果將函數(shù)看做一個加工廠,參數(shù)就是我們向加工廠投入的原料,具體的函數(shù)功能實際上就是加工的過程,而return語句代表返回值,就是加工廠在實現(xiàn)加工之后給“投資人”的成品。
二、return語句的特點
1、在函數(shù)當中,遇到return語句之后就意味著函數(shù)運行的結束,在此之后的代碼是不運行的。
2、它不支持任何運算也沒有任何內建方法,和任何其他的數(shù)據(jù)類型比較是否相等時永遠返回false,也可以將None賦值給任何變量。
3、執(zhí)行到return語句時,會退出函數(shù),return之后的語句不再執(zhí)行。但將return語句放在try語句塊中,是個例外。
三、return的默認值:return函數(shù)默認的返回值為undefined。
代碼如下:
#include "stdio.h"
void main()
{
float a, b ,c;
printf ("請輸入三個數(shù),會為你從大到小排列!\n");
scanf("%f %f %f",a,b,c);
if(abc){printf("%f,%f,%f",a,b,c);}
else if(accb){printf("%f,%f,%f",a,c,b);}
else if(baac){printf("%f,%f,%f",b,a,c);}
else if(bcca){printf("%f,%f,%f",b,c,a);}
else if(cbba){printf("%f,%f,%f",c,b,a);}
else if(caab){printf("%f,%f,%f",c,a,b);}
//編譯器不識別三個連續(xù)的符號運算,必須用且()和或(||)he否(?。?/p>
}
擴展資料
C語言中宏定義的優(yōu)點
方便程序的修改
使用簡單宏定義可用宏代替一個在程序中經(jīng)常使用的常量,這樣在將該常量改變時,不用對整個程序進行修改,只修改宏定義的字符串即可,而且當常量比較長時, 可以用較短的有意義的標識符來寫程序,這樣更方便一些。
相對于==全局變量==兩者的區(qū)別如下:
1、宏定義在編譯期間即會使用并替換,而全局變量要到運行時才可以。
2、宏定義的只是一段字符,在編譯的時候被替換到引用的位置。在運行中是沒有宏定義的概念的。而變量在運行時要為其分配內存。
3、宏定義不可以被賦值,即其值一旦定義不可修改,而變量在運行過程中可以被修改。
4、宏定義只有在定義所在文件,或引用所在文件的其它文件中使用。 而全局變量可以在工程所有文件中使用,只要再使用前加一個聲明就可以了。換句話說,宏定義不需要extern。
第一種方法:
輸入兩個數(shù)值。
比較大小。
輸出結果。
以整型為例,代碼如下:
#include?
int?main()
{
int?a,b;
scanf("%d%d",a,b);
if(ab)?printf("%d%d\n",a,b);
else?if(a?==?b)?printf("%d=%d\n",a,b);
else?printf("%d%d\n",a,b);
}
第二種方法:
#include
using namespace std;int main()
{
int nA,nB;
cinnAnB;//讀入兩個數(shù)
if (nA nB)
{
cout"nA nB"endl;
}
else
{
if (nA == nB)
{
cout"nA == nB"endl;
}
else
{
cout"nA nB"endl;
}
}
}
第三種方法:
#include
void main()
{
int a,b;? //定義兩個變量
scanf("%d? ?%d",a,b);? ?//從鍵盤輸入值分別給這兩個變量
if(ab)? ? //判斷a是否大于b
printf("a 大于b");
else if(a==b)? ? //判斷a是否等于b
printf("a 等于b");
else? ? ?//若上面兩種情況都沒有發(fā)生則a小于b
printf("a 小于b");
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規(guī)格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業(yè)平臺。
二十世紀八十年代,為了避免各開發(fā)廠商用的C語言語法產(chǎn)生差異,由美國國家標準局為C語言制定了一套完整的美國國家標準語法,稱為ANSI C,作為C語言最初的標準。目前2011年12月8日,國際標準化組織(ISO)和國際電工委員會(IEC)發(fā)布的C11標準是C語言的第三個官方標準,也是C語言的最新標準,該標準更好的支持了漢字函數(shù)名和漢字標識符,一定程度上實現(xiàn)了漢字編程。
#define zuida(a,b,c) ((a)(b)?(ac?a:c):(bc?b:c))
程序編譯時會【原樣替換,不作運算】宏,故程序中宏zuida(a,b,c)等價于((a)(b)?(ac?a:c):(bc?b:c))
所以遇到宏直接把它還原成它等價的語句即可
經(jīng)查詢三目運算符運算規(guī)則如下: b ? x:y,先計算條件b,然后進行判斷。如果b的值為true,取x的值;否則,取y的值。
( {(a)(b)?【(ac?a:c)】:【(bc?b:c)】} )
①Y/N ? ②Y/N ?a:c : ③Y/N?b:c
Y/N ? A : B
分別計算②③的運算結果為A、B最后計算①的結果:真或假,真就取值A假就取B,所以這個宏就是求三個數(shù)的最大數(shù)的
文章標題:c語言用宏寫比較大小函數(shù) 比較大小C語言
網(wǎng)頁地址:http://www.muchs.cn/article2/hggsic.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設、定制網(wǎng)站、商城網(wǎng)站、移動網(wǎng)站建設、企業(yè)建站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)