㈠ c語言函數比較大小
如果按你的方法來比較大小,而且是7個數字,也就是a~g,你後面少比較了g,而且最後的j也未必是最大,需要改為:
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還有存儲數據呢
h = max(c,d);
j = max(e,f);
a = max(a,g); //還要和g比較
h = max(a,h); //接著還要比較a和h誰大
j = max(h,j); //這個才是最後結果,最大的一個
printf("abcdef da shi%d",j);
getch();
}
如果要比較大小的數比較多,建議使用數組存儲,用個for循環就搞定了,如下:
#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);
}
㈡ C語言的比較兩個時間的函數
1、方法一:若時間為結構體變數,比較兩個時間的大小,而且不能改變時間的值,可以是:
int timecmp(date_t* date1,date_t* date2)
{
if(date1-> year==date1-> year)
return memcmp(date1, date2,sizeof(date_t));
else
return date1-> year-date2-> year
}
2、方法二:
long getTimeInterval(const char *t1, const char *t2) {
struct tm tm1, tm2;
time_t start, end;
double diff;
memset(&tm1, 0, sizeof(tm1));
memset(&tm2, 0, sizeof(tm2));
strptime(t1, "%Y%m%d", &tm1);
start = mktime(&tm1);
strptime(t2, "%Y%m%d", &tm2);
end = mktime(&tm2);
diff = difftime(start, end);
return d2l(diff);
}
調用:
printf("getTimeInterval=[%ld]\n", getTimeInterval("20101221", "20110326"));
printf("getTimeInterval=[%ld]\n", getTimeInterval("20101221", "20990326"));
第一行輸出:[-8208000]
第二行輸出:[1292860801]
3、補充:C語言時間函數:
(1)、獲得日歷時間函數:
可以通過time()函數來獲得日歷時間(Calendar Time),其原型為:time_t time(time_t * timer);
如果已經聲明了參數timer,可以從參數timer返回現在的日歷時間,同時也可以通過返回值返回現在的日歷時間,即從一個時間點(例如:1970年
1月1日0時0分0秒)到現在此時的秒數。如果參數為空(NUL),函數將只通過返回值返回現在的日歷時間,比如下面這個例子用來顯示當前的日歷時間:
(2)、獲得日期和時間函數:
這里說的日期和時間就是平時所說的年、月、日、時、分、秒等信息。從第2節我們已經知道這些信息都保存在一個名為tm的結構體中,那麼如何將一個日歷時間保存為一個tm結構的對象呢?
其中可以使用的函數是gmtime()和localtime(),這兩個函數的原型為:
struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);
其中gmtime()函數是將日歷時間轉化為世界標准時間(即格林尼治時間),並返回一個tm結構體來保存這個時間,而localtime()函數是將
日歷時間轉化為本地時間。比如現在用gmtime()函數獲得的世界標准時間是2005年7月30日7點18分20秒,那麼用localtime()函數
在中國地區獲得的本地時間會比世界標准時間晚8個小時,即2005年7月30日15點18分20秒。
㈢ C語言中sqort函數裡面的比較函數怎麼寫
#include<stdio.h>
#include<stdlib.h>
//
//ofelementsataddressespandq.
intcomparator(constvoid*p,constvoid*q)
{
//Getthevaluesatgivenaddresses
intl=*(constint*)p;
intr=*(constint*)q;
//bothodd,putthegreateroftwofirst.
if((l&1)&&(r&1))
return(r-l);
//botheven,putthesmalleroftwofirst
if(!(l&1)&&!(r&1))
return(l-r);
//liseven,putrfirst
if(!(l&1))
return1;
//lisodd,putlfirst
return-1;
}
//
voidprintArr(intarr[],intn)
{
inti;
for(i=0;i<n;++i)
printf("%d",arr[i]);
}
//
intmain()
{
intarr[]={1,6,5,2,3,9,4,7,8};
intsize=sizeof(arr)/sizeof(arr[0]);
qsort((void*)arr,size,sizeof(arr[0]),comparator);
printf("Outputarrayis ");
printArr(arr,size);
return0;
}
㈣ c語言字元串比較函數strcmp是什麼意思
(1)strcmp是比較兩個字元串的大小,兩個字元串相同時返回0,第一個字元串大於第二個字元串時返回一個正值,否則返回負值.
(2)比較兩個字元串的演算法是:逐個比較兩個串中對應的字元,字元大小按照ASCII碼值確定,從左向右比較,如果遇到不同字元,所遇第一對不同字元的大小關系就確定了兩個字元串的大小關系,如果未遇到不同字元而某個字元串首先結束,那麼這個字元串是較小的,否則兩個字元串相等。
(4)c語言比較函數擴展閱讀:
通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。
兩個字元串相等的充要條件是:長度相等,並且各個對應位置上的字元都相等。設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的存儲方式是順序存儲方式和鏈接存儲方式。
字元串或串(String)是由數字、字母、下劃線組成的一串字元。一般記為 s=「a1a2···an」(n>=0)。它是編程語言中表示文本的數據類型。在程序設計中,字元串(string)為符號或數值的一個連續序列,如符號串(一串字元)或二進制數字串(一串二進制數字)。
字元串數據類型是建模在形式字元串的想法上的數據類型。字元串是幾乎在所有編程語言中可以實現的非常重要和有用的數據類型。
在某些語言中它們可作為基本類型獲得,在另一些語言中做為復合類型獲得。多數高級語言的語法允許通常用某種方式引用起來的字元串來表示字元串數據類型的實例;這種元字元串叫做「文本」或「字元串文本」。
盡管形式字元串可以有任意(但有限)的長度,實際語言的字元串的長度經常被限制到一個人工極大值。一般的說,有兩種類型的字元串數據類型: 「定長字元串」,它有固定的極大長度並且不管是否達到了這個極大值都使用同樣數量的內存,和「變長字元串」,它的長度不是專斷固定的並且依賴於實際的大小使用可變數量的內存。
㈤ C語言strcmp函數是怎麼比較的
intstrcmp(constchar*str1,constchar*str2)//str1和str2指向兩個字元串
{
while(*str1++==*str2++)//依次進行比較,直到二者不同或遇到'