C語言只有字符數(shù)組有庫函數(shù)strcmp函數(shù),格式如下:
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、晉城網(wǎng)站維護(hù)、網(wǎng)站推廣。
int strcmp(const char *str1, const char *str2);
如果左邊小于右邊的字符串,函數(shù)返回-1
如果左邊字符串等于右邊字符串,函數(shù)返回0
如果左邊字符串大于右邊字符串,函數(shù)返回1
一般基本數(shù)據(jù)類型的比較都可以用關(guān)系運(yùn)算符,如果自定義的可以重載運(yùn)算符或者使用函數(shù)對(duì)象,如果用C語言的方式,自定義一個(gè)比較函數(shù)就可以了,庫函數(shù)中沒有這種普適類型的比較函數(shù)。
擴(kuò)展資料:
compare函數(shù)規(guī)則
當(dāng)s1s2時(shí),返回為負(fù)數(shù);
當(dāng)s1=s2時(shí),返回值= 0;
當(dāng)s1s2時(shí),返回正數(shù)。
即兩個(gè)字符串自左向右逐個(gè)字符相比(按ASCII值大小相比較),直到出現(xiàn)不同的字符或遇'\0'為止,如:
1."A""B" 2."A""AB" 3."Apple""Banana" 4."A""a" 5."compare""computer"
參考資料來源:百度百科-strcmp
;Key=0BlogID=382219PostID=4547421
以上網(wǎng)有詳細(xì)的說明
/*已經(jīng)上機(jī)通過測(cè)試:*/
#include stdlib.h
main()
{
int a[100],i; /*定義數(shù)組存放100個(gè)數(shù)*/
for(i=0;i100;i++)
a[i]=random(100); /*產(chǎn)生100以內(nèi)的數(shù)*/
for(i=0;i100;i++)
printf("%d ",a[i]); /*打印輸入*/
getch();
}
在C語言函數(shù)庫中包含了一個(gè)產(chǎn)生隨機(jī)數(shù)的函數(shù):
int rand( void );
在函數(shù)庫中對(duì)這個(gè)函數(shù)的說明是:
The rand function returns a pseudorandom integer in the range
0 to RAND_MAX. Use the srand function to seed the pseudorandom
-number generator before calling rand.
而在C語言函數(shù)庫中是這樣定義RAND_MAX的:
/* Maximum value returned by "rand" function
*/
#define RAND_MAX 0x7FFF
所以,函數(shù)int rand( void );返回的是一個(gè)界于0~32767(0x7FFF)之
間的偽隨機(jī)數(shù),包括0和32767。注意,這里產(chǎn)生的是偽隨機(jī)數(shù),不是真正意
義上的隨機(jī)數(shù),看下面的程序:
#include "stdlib.h"
#include "stdio.h"
void main( void )
{
/* Display a number. */
printf( " %6d\n", rand() );
getchar();
}
程序運(yùn)行的結(jié)果是:
346
多次運(yùn)行這個(gè)程序,發(fā)現(xiàn)每次產(chǎn)生的結(jié)果都是346(不同的機(jī)器可能產(chǎn)生
的結(jié)果不一樣),這就是所謂的偽隨機(jī)數(shù)。偽隨機(jī)數(shù)是通過一個(gè)公式來運(yùn)算
出來的,所以,每次產(chǎn)生的偽隨機(jī)數(shù)都一樣。那么,如何才能產(chǎn)生真正意義
上的隨機(jī)數(shù)呢?這就有一個(gè)隨機(jī)種子的問題。在C語言標(biāo)準(zhǔn)函數(shù)庫中,有這
么一個(gè)函數(shù):
void srand( unsigned int seed );
在《The c programming language》中對(duì)這個(gè)函數(shù)是這樣描述的:
srand uses seed(函數(shù)變量聲明中的seed) as the seed(隨機(jī)函數(shù)中種子
的意思) for a new sequence of pseudo-random numbers. The
initial seed is 1.
所以,要產(chǎn)生真正意義上的隨機(jī)數(shù),那么就要求每次提供的種子不一樣,一
般情況下,都設(shè)置時(shí)間為隨機(jī)函數(shù)的種子??聪旅娴囊欢纬绦颍?/p>
/* RAND.C: This program seeds the random-number generator
* with the time, then displays 10 random integers.
*/
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
void main( void )
{
int i;
/* Seed the random-number generator with current time so that
the numbers will be different every time we run.
將當(dāng)前時(shí)間設(shè)置成隨機(jī)函數(shù)的種子,所以每次產(chǎn)生的數(shù)都不一樣
*/
srand( (unsigned)time( NULL ) );
/* Display 10 numbers. */
for( i = 0; i 10;i++ )
printf( “ %6d\n”, rand() );
}
Output
6929
8026
21987
30734
20587
6699
22034
25051
7988
10104
每次運(yùn)行這個(gè)程序,產(chǎn)生的隨機(jī)數(shù)都不一樣,這樣就達(dá)到了隨機(jī)數(shù)的要求了
把題目認(rèn)認(rèn)真真看十遍,再讀十遍,希望你會(huì)有所領(lǐng)悟。
搞明白每個(gè)函數(shù)是干什么用的,再結(jié)合題目,想想如何利用他。
給你程序很容易,關(guān)鍵是要自己的思維會(huì)想的過彎來!加油吧,哥們!
算法是一系列解決問題的清晰指令,
換句話說就是能夠?qū)σ欢ㄒ?guī)范的輸入,
在有限時(shí)間內(nèi)獲得所要求的輸出。
算法常常含有重復(fù)的步驟和一些比較或邏輯判斷。
if一個(gè)算法有缺陷,or不適合于某個(gè)問題,
執(zhí)行這個(gè)算法將不會(huì)解決這個(gè)問題。
不同的算法可能用不同的時(shí)間、空間或效率來完成同樣的任務(wù)。
一個(gè)算法的優(yōu)劣可以用空間復(fù)雜度與時(shí)間復(fù)雜度來衡量。
算法的時(shí)間復(fù)雜度是指算法需要消耗的時(shí)間資源。
一般來說,計(jì)算機(jī)算法是問題規(guī)模n 的函數(shù)f(n),算法執(zhí)行的時(shí)間的增長率與f(n) 的增長率正相關(guān),稱作漸進(jìn)時(shí)間復(fù)雜度(Asymptotic Time Complexity)。時(shí)間復(fù)雜度用“O(數(shù)量級(jí))”來表示,稱為“階”。常見的時(shí)間復(fù)雜度有: O(1)常數(shù)階;O(log2n)對(duì)數(shù)階;O(n)線性階;O(n2)平方階。
算法的空間復(fù)雜度是指算法需要消耗的空間資源。
其計(jì)算和表示方法與時(shí)間復(fù)雜度類似,
一般都用復(fù)雜度的漸近性來表示。
同時(shí)間復(fù)雜度相比,空間復(fù)雜度的分析要簡單得多。
C語言中要編寫sin函數(shù),實(shí)質(zhì)上要利用sin的泰勒公式,然后根據(jù)泰勒公式,將其中的每一項(xiàng)進(jìn)行分解,最后用循環(huán),累加計(jì)算出最終結(jié)果
下面用for循環(huán)實(shí)現(xiàn)sin的算法,程序代碼如下:
#includestdio.h
#includemath.h
void main()
{
int i;
float x,sum,a,b; //sum代表和,a為分子,b為分母
char s;
printf("please input x");
scanf("%f",x);
s=1;
sum=0;
a=x; //分母賦初值
b=1; //分子賦初值
for(i=1;a/b=1e-6;i++)
{
sum=sum+s*a/b; //累加一項(xiàng)
a=a*x*x; //求下一項(xiàng)分子
b=b*2*i*(2*i+1); //求下一項(xiàng)分母
s*=-1;
}
printf("sum=%f\n",sum);
}
3. 關(guān)于上述程序的幾點(diǎn)說明:上述程序的計(jì)算結(jié)果精確到小數(shù)點(diǎn)后六位;上述程序運(yùn)用了sin的泰勒展開式 sin
x=x-x^3/3!+x^5/5! ...... ,程序中將sin泰勒公式中的每一項(xiàng)拆成了分子,分母以及每一項(xiàng)前的符號(hào)這三項(xiàng),以便于每一項(xiàng)的累加