如果按你的方法來比較大小,而且是7個(gè)數(shù)字,也就是a~g,你后面少比較了g,而且最后的j也未必是最大,需要改為:
超過10年行業(yè)經(jīng)驗(yàn),技術(shù)領(lǐng)先,服務(wù)至上的經(jīng)營模式,全靠網(wǎng)絡(luò)和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務(wù)范圍包括了:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè),成都網(wǎng)站推廣,成都網(wǎng)站優(yōu)化,整體網(wǎng)絡(luò)托管,微信小程序定制開發(fā),微信開發(fā),APP應(yīng)用開發(fā),同時(shí)也可以讓客戶的網(wǎng)站和網(wǎng)絡(luò)營銷和我們一樣獲得訂單和生意!
main()
{
int a,b,c,d,e,f,g,h,j;
scanf("%d%d%d%d%d%d%d",a,b,c,d,e,f,g); //這里讀到g即可,后面沒用的
a = max(a,b); //不能把g的值覆蓋了,7個(gè)數(shù),g還有存儲(chǔ)數(shù)據(jù)呢
h = max(c,d);
j = max(e,f);
a = max(a,g); //還要和g比較
h = max(a,h); //接著還要比較a和h誰大
j = max(h,j); //這個(gè)才是最后結(jié)果,最大的一個(gè)
printf("abcdef da shi%d",j);
getch();
}
如果要比較大小的數(shù)比較多,建議使用數(shù)組存儲(chǔ),用個(gè)for循環(huán)就搞定了,如下:
#include stdio.h
void main()
{
int i, a[7], max = -32768;
for (i = 0; i 7; i++)
{
scanf ("%d", a[i]);
if (a[i] max) max = a[i];
}
printf ("max number is %d\n", max);
}
其實(shí)你這里主要問題是不能接收到兩個(gè)輸入的字符串。
你這里的接受規(guī)則是輸入兩個(gè)字符串并用 , 號分隔,比如:abc,abc
但是這里就有一個(gè)問題了!計(jì)算機(jī)怎么知道你輸入的,號是你輸入的第一個(gè)字符串的一個(gè)字符呢?還是你兩個(gè)字符串的分隔?
所以當(dāng)你輸入abc,abc的時(shí)候計(jì)算識別你的第一個(gè)字符串是abc,abc
第二個(gè)字符串為\n
所以你這里得到的始終是1
至于解決的辦法:
讓計(jì)算機(jī)識別你的分隔符號
那方法就很多了,比如 scanf("%s%s",a,b);輸入的時(shí)候用空白符(空格,tab,回車鍵)相間隔
從左到右,依次比較字母的ASCII碼的大小,遇到不同字符或'\0'結(jié)束。
基本形式:strcmp(str1,str2)
str1=str2時(shí),返回零;str1str2時(shí),返回負(fù)數(shù);str1str2時(shí),返回正數(shù)。
比如Apple和Banana比較,先比較第一個(gè)字母A和B,A的ASCII碼是65,B的是66,所以AppleBanana。
compare和computer比較,前4個(gè)字母相同,第五個(gè)字母a和u,a的ASCII碼是97,u的是117,所以comparecomputer。
擴(kuò)展資料:
特別注意:
strcmp(const char *s1,const char * s2)這里面只能比較字符串,即可用于比較兩個(gè)字符串常量,或比較數(shù)組和字符串常量,不能比較數(shù)字等其他形式的參數(shù)。
ANSI標(biāo)準(zhǔn)規(guī)定,返回值為正數(shù),負(fù)數(shù),0 。而確切數(shù)值是依賴不同的C實(shí)現(xiàn)的。
1、當(dāng)兩個(gè)字符串不相等時(shí),C標(biāo)準(zhǔn)沒有規(guī)定返回值會(huì)是1 或 -1,只規(guī)定了正數(shù)和負(fù)數(shù)。
2、有些會(huì)把兩個(gè)字符的ASCII碼之差作為比較結(jié)果由函數(shù)值返回。但無論如何不能以此條依據(jù)作為程序中的流程邏輯。
原型:extern int strcmp(const char *s1,const char * s2);
所在頭文件:string.h
功能:比較字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
說明:
當(dāng)s1s2時(shí),返回為負(fù)數(shù)
當(dāng)s1=s2時(shí),返回值= 0
當(dāng)s1s2時(shí),返回正數(shù)
即:兩個(gè)字符串自左向右逐個(gè)字符相比(按ASCII值大小相比較),直到出現(xiàn)不同的字符或遇'\0'為止。如:
"A""B" "a""A" "computer""compare"
特別注意:strcmp(const char *s1,const char * s2)這里面只能比較字符串,不能比較數(shù)字等其他形式的參數(shù)。
qsort的最后一個(gè)參數(shù)是一個(gè)函數(shù)指針。通過這個(gè)函數(shù)指針把自己寫的比較函數(shù)傳給qsort. 這樣的話qsort就可以知道如何比較大小,才能制定排序的標(biāo)準(zhǔn)。通過自己傳入不同的比較函數(shù),可以用qsort實(shí)現(xiàn)不同數(shù)據(jù)類型的排序。比如string, int, double, 甚至結(jié)構(gòu)體。
采用這種手段的話,就可以復(fù)用排序的邏輯,而不必要為所有的數(shù)據(jù)類型都提供一個(gè)qsort函數(shù)。
同理bSearch函數(shù)里面也需要比較函數(shù),道理是一樣的。