c語言topic函數(shù) topic語言學(xué)

strlen 是什么意思

C語言中strlen是求字符串長度的函數(shù),其完整聲名為:int strlen(const char* str);其中str為待求長度的字符串,要使用這個函數(shù)必須在程序開始處加上#include string.h,你清楚了嗎?

成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、長順網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為長順等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

嵌入式C語言

Linux C編程一站式學(xué)習(xí)這本書,我感覺不錯,還是免費的,GPL的,感覺講得蠻詳細(xì)的,而且比較細(xì)節(jié)...

本書有以下特點:

不是孤立地講C語言,而是和編譯原理、操作系統(tǒng)、計算機(jī)體系結(jié)構(gòu)結(jié)合起來講?;蛘哒f,本書的內(nèi)容只是以C語言為載體,真正講的是計算機(jī)的原理和程序的原理。

強調(diào)基本概念和基本原理,在編排順序上非常重視概念之間的依賴關(guān)系,每次引入一個新的概念,只依賴于前面章節(jié)已經(jīng)講過的概念,而絕不會依賴后面章節(jié)要講的概念。有些地方為了敘述得完整,也會引用后面要講的內(nèi)容,比如說“有關(guān)XX我們到XX章再仔細(xì)講解”,凡是這種引用都不是必要的依賴,可以當(dāng)它不存在,只管繼續(xù)往下看就行了。

盡量做到每個知識點直到要用的時候才引入。過早引入一個知識點,講完了又不用它,讀者很快就會遺忘,這是不符合認(rèn)知規(guī)律的。

如果僅僅是應(yīng)用,那么在 LINUX下還是在windows 編程相差不是特別大的,系統(tǒng)都會提供api讓你調(diào)用...但windows下IDE做得相對較好些,linux 下要自己寫makefile組織工程,不過現(xiàn)在應(yīng)該也有IDE的一些工具提供應(yīng)用編程的吧,不過在linux下,makefile 很重要,還是有必要了解的..

至于嵌入式,主要是可移動,是為某個專門功能開發(fā)的,記得就是計算機(jī)的簡化版..

C語言學(xué)習(xí)

教了多年《C程序設(shè)計》課程,大多學(xué)生覺的這門課程難學(xué)。其實,按照我們現(xiàn)在的教學(xué)大綱和教學(xué)要求,只要同學(xué)們掌握一些方法,克服心理上畏難、不輕言放棄,是完全可以學(xué)好的。

《C程序設(shè)計》的內(nèi)容很豐富,按照我們現(xiàn)在的教學(xué)大綱,教學(xué)的主要內(nèi)容是基礎(chǔ)知識、四種結(jié)構(gòu)的的程序設(shè)計、函數(shù)與數(shù)組的應(yīng)用和一些簡單的算法。在學(xué)習(xí)時,同學(xué)們應(yīng)該把主要精力放在這些部分,通過實踐(練習(xí)和上機(jī)調(diào)試等熟練掌握。當(dāng)然,在初學(xué)C語言時,可能會遇到有些問題理解不透,或者表達(dá)方式與以往數(shù)學(xué)學(xué)習(xí)中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進(jìn)行學(xué)習(xí),待學(xué)完后面的章節(jié)知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學(xué)最欠缺,大多學(xué)不好的就是因為一開始遇到困難就放棄,曾經(jīng)和好多同學(xué)談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節(jié)課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎么說自己聽不懂呢?相應(yīng)的根本就沒學(xué)習(xí),又談何學(xué)的好?

學(xué)習(xí)C語言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學(xué)習(xí)知識的重要方法,就是說,學(xué)習(xí)后面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學(xué)生最不易做到的,然而卻又是最重要的。比如:在C語言中最典型的是關(guān)于結(jié)構(gòu)化程序設(shè)計構(gòu)思,不管是那種教材,一開始就強調(diào)這種方法,這時也許你不能充分體會,但是學(xué)到函數(shù)時,再回頭來仔細(xì)體會,溫故知新,理解它就沒有那么難了。學(xué)習(xí)C語言就是要經(jīng)過幾個反復(fù),才能前后貫穿,積累應(yīng)該掌握的C知識。

那么,我們?nèi)绾螌W(xué)好《C程序設(shè)計》呢?

一.學(xué)好C語言的運算符和運算順序

這是學(xué)好《C程序設(shè)計》的基礎(chǔ),C語言的運算非常靈活,功能十分豐富,運算種類遠(yuǎn)多于其它程序設(shè)計語言。在表達(dá)式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達(dá)式更為簡單,但初學(xué)者往往會覺的這種表達(dá)式難讀,關(guān)鍵原因就是對運算符和運算順序理解不透不全。當(dāng)多種不同運算組成一個運算表達(dá)式,即一個運算式中出現(xiàn)多種運算符時,運算的優(yōu)先順序和結(jié)合規(guī)則顯得十分重要。在學(xué)習(xí)中,只要我們對此合理進(jìn)行分類,找出它們與我們在數(shù)學(xué)中所學(xué)到運算之間的不同點之后,記住這些運算也就不困難了,有些運算符在理解后更會牢記心中,將來用起來得心應(yīng)手,而有些可暫時放棄不記,等用到時再記不遲。

先要明確運算符按優(yōu)先級不同分類,《C程序設(shè)計》運算符可分為15種優(yōu)先級,從高到低,優(yōu)先級為1 ~ 15,除第2、3級和第14級為從右至左結(jié)合外,其它都是從左至右結(jié)合,它決定同級運算符的運算順序。下面我們通過幾個例子來說明:

(1) 5*8/4%10 這個表達(dá)式中出現(xiàn)3種運算符,是同級運算符,運算順序按從左至右結(jié)合,因此先計算5 *8=40,然后被4除,結(jié)果為10,最后是%(求余數(shù))運算,所以表達(dá)式的最終結(jié)果為10%10 = 0;

(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;

對于c=++a*b來說,按表中所列順序,+ +先執(zhí)行,*后執(zhí)行,所以+ + a執(zhí)行后,a的值為4,由于+ +為前置運算,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了;而對于d=a++*b來說,由于a + +為后置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算后其值加1,值為5。 這個例子執(zhí)行后,a的值為5,b的值為5,c的值為20,d的值也是20;

(3)(a = 3,b = 5,b+ = a,c = b* 5)

例子中的“,”是逗號結(jié)合運算,上式稱為逗號表達(dá)式,自左向右結(jié)合,最后一個表達(dá)式的結(jié)果值就是逗號表達(dá)式的結(jié)果,所以上面的逗號表達(dá)式結(jié)果為40,a的值為3,b的值為8,c的值為40。

(4)a=5;b=6;c=ab?a:b;

例中的ab?a:b是一個三目運算,它的功能是先做關(guān)系運算ab部分,若結(jié)果為真,則取問號后a的值,否則取冒號后b的值,因此c的值應(yīng)該為6,這個運算可以用來代替if…else…語句的簡單應(yīng)用。

二.學(xué)好C語言的四種程序結(jié)構(gòu)

(1)順序結(jié)構(gòu)

順序結(jié)構(gòu)的程序設(shè)計是最簡單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。

例如;a = 3,b = 5,現(xiàn)交換a,b的值,這個問題就好象交換兩個杯子水,這當(dāng)然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為: c = a; a = b; b = c; 執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執(zhí)行結(jié)果就變成a = b = c = 5,不能達(dá)到預(yù)期的目的,初學(xué)者最容易犯這種錯誤。 順序結(jié)構(gòu)可以獨立使用構(gòu)成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。

(2) 分支結(jié)構(gòu)

順序結(jié)構(gòu)的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用分支結(jié)構(gòu)。分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句。分支結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計算,設(shè)計這類程序時往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計分析與語言分開,使得問題簡單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。

學(xué)習(xí)分支結(jié)構(gòu)不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執(zhí)行的功能,嵌套結(jié)構(gòu)也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結(jié)構(gòu)。

①if(條件)

{

分支體

}

這種分支結(jié)構(gòu)中的分支體可以是一條語句,此時“{ }”可以省略,也可以是多條語句即復(fù)合語句。它有兩條分支路徑可選,一是當(dāng)條件為真,執(zhí)行分支體,否則跳過分支體,這時分支體就不會執(zhí)行。如:要計算x的絕對值,根據(jù)絕對值定義,我們知道,當(dāng)x=0時,其絕對值不變,而x0時其絕對值是為x的反號,因此程序段為:if(x0) x=-x;

②if(條件)

{分支1}

else

{分支2}

這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行分支1,否則執(zhí)行分支2,分支1和分支2都可以是1條或若干條語句構(gòu)成。如:求ax^2+bx+c=0的根

分析:因為當(dāng)b^2-4ac=0時,方程有兩個實根,否則(b^2-4ac0)有兩個共軛復(fù)根。其程序段如下:

d=b*b-4*a*c;

if(d=0)

{x1=(-b+sqrt(d))/2a;

x1=(-b-sqrt(d))/2a;

printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);

}

else

{r=-b/(2*a);

i =sqrt(-d)/(2*a);

printf(“x1=%8.4f+%8.4fi\n”r, i);

printf(“x2=%8.4f-%8.4fi\n”r,i)

}

③嵌套分支語句:其語句格式為:

if(條件1) {分支1};

else if(條件2) {分支2}

else if(條件3) {分支3}

……

else if(條件n) {分支n}

else {分支n+1}

嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套后,語句結(jié)構(gòu)變得非常復(fù)雜,對于程序的閱讀和理解都極為不便,建議嵌套在3重以內(nèi),超過3重可以用下面的語句。

④switch開關(guān)語句:該語句也是多分支選擇語句,到底執(zhí)行哪一塊,取決于開關(guān)設(shè)置,也就是表達(dá)式的值與常量表達(dá)式相匹配的那一路,它不同if…else 語句,它的所有分支都是并列的,程序執(zhí)行時,由第一分支開始查找,如果相匹配,執(zhí)行其后的塊,接著執(zhí)行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應(yīng)用時要特別注意開關(guān)條件的合理設(shè)置以及break語句的合理應(yīng)用。

(3)循環(huán)結(jié)構(gòu):

循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機(jī)特長的程序結(jié)構(gòu),C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do –while循環(huán)和for循環(huán)。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因為強制改變程序的順序經(jīng)常會給程序的運行帶來不可預(yù)料的錯誤,在學(xué)習(xí)中我們主要學(xué)習(xí)while、do…while、for三種循環(huán)。常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的重點在于弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環(huán)的格式和執(zhí)行順序,將每種循環(huán)的流程圖理解透徹后就會明白如何替換使用,如把while循環(huán)的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個死循環(huán),這是初學(xué)者的一個常見錯誤。

在學(xué)完這三個循環(huán)后,應(yīng)明確它們的異同點:用while和do…while循環(huán)時,循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語句1中進(jìn)行的;while 循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而do…while循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說do…while的循環(huán)體最少被執(zhí)行一次,而while 循環(huán)和for就可能一次都不執(zhí)行。另外還要注意的是這三種循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán),而goto語句與if構(gòu)成的循環(huán),是不能用break和 continue語句進(jìn)行控制的。

順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),其實不管哪種結(jié)構(gòu),我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結(jié)構(gòu)相互結(jié)合以實現(xiàn)各種算法,設(shè)計出相應(yīng)程序,但是要編程的問題較大,編寫出的程序就往往很長、結(jié)構(gòu)重復(fù)多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設(shè)計成模塊化結(jié)構(gòu)。

(4)模塊化程序結(jié)構(gòu)

C語言的模塊化程序結(jié)構(gòu)用函數(shù)來實現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個模塊都編寫成一個C函數(shù),然后通過主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)來實現(xiàn)一大型問題的C程序編寫,因此常說:C程序=主函數(shù)+子函數(shù)。 因些,對函數(shù)的定義、調(diào)用、值的返回等中要尤其注重理解和應(yīng)用,并通過上機(jī)調(diào)試加以鞏固。

三.掌握一些簡單的算法

編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應(yīng)的編程語言寫出代碼。這就要求掌握算法,根據(jù)我們的《C程序設(shè)計》教學(xué)大綱中,只要求我們掌握一些簡單的算法,在掌握這些基本算法后,要完成對問題的分析就容易了。如兩個數(shù)的交換、三個數(shù)的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些算法的內(nèi)在含義,其中選擇法排序和冒泡法排序稍難,但只要明白排序的具體過程,對代碼的理解就不難了。如用選擇法對10個不同整數(shù)排序(從小到大),選擇法排序思路:設(shè)有10個元素a[1]~a[10],將a[1]與a[2]~a[10]比較,若a[1]比a[2]~a[10]都小,則不進(jìn)行交換,即無任何操作;若a[2]~a[10] 中有一個比a[1]小,則將其中最大的一個(假設(shè)為a)與a[1]交換,此時a[1]中存放了10個中最小的數(shù)。第二輪將a[2]與a[3]~a[10]比較,將剩下9個數(shù)中的最小者a與a[2]交換,此時a[2] 中存放的10個數(shù)中第2小的數(shù);依此類推,共進(jìn)行9輪比較,a[1]到a[10]就已按從小到大的順序存放。即每一輪都找出剩下數(shù)中的最小一個,代碼如下:

for(i=1;i=9;i++)

for(j=i+1;j=10;j++)

if(aa[j]

{temp=a;

a=a[j];

a[j]=temp;

}

結(jié)語:當(dāng)我們把握好上述幾方面后,只要同學(xué)們能克服畏難、厭學(xué)、上課能專心聽講,做好練習(xí)與上機(jī)調(diào)試,其實C語言并不難學(xué)。

參考資料:;f=15;t=000968

請問c語言getchar()和putchar()函數(shù)的用法,最好是介紹個網(wǎng)站看看

getchar()是到緩沖區(qū)讀取第一個字符

首先,從鍵盤輸入許多字符,最后回車后,所有字符包括回車放到緩沖區(qū)

這時才開始循環(huán)執(zhí)行g(shù)etchar(),讀入一個字符判斷是否回車,不是就繼續(xù)讀,是回車就退出循環(huán)(之所以說是順序接受一行字符,是因為它取的始終是緩沖區(qū)中第一個字符,每取一個緩沖區(qū)的字符少一個,也就是順序讀取了

getchar()與putchar()都是輸入輸出一個字符的函數(shù),但是在使用getchar()輸入字符時你可以輸入不止一個字符,但是在區(qū)字符式只是第一個字符有效,所以你用putchar()輸出時輸出的是第一個字符

getchar和putchar的用法說明:

用C語言表示反正弦,反余弦,反正切函數(shù)

計算反正切函數(shù)(使用歐拉變換公式,精度很高),反正切函數(shù)的級數(shù)展開公式:

f(x) = x - x^3/3 + x^5/5 +...+ (-1)^k * x^(2k+1)/(2k + 1)+...

當(dāng)|x| 1時,級數(shù)絕對值發(fā)散,無法直接使用歐拉公式計算。因此可以通過下面的公式

進(jìn)行等價轉(zhuǎn)換之后再進(jìn)行計算。

等價轉(zhuǎn)換公式:

a) ATan(1/x) = Pi/2 - ATan(x)

b) ATan(-x) = - ATan(x)

特殊情況

0 = ArcTan(0)

Pi/2 = ArcTan(無窮大)

//

// 歐拉公式

//

// sum是和,term是通項值,jterm初始為1,以后按1遞增。wrksp是工作單元,視jterm的

// 最大值而定。

//

void eulsum(int nterm,double *sum,double term,int jterm,double wrksp[])

{

double tmp,dum;

if(jterm == 1)

{

nterm = 1;

wrksp[1] = term;

*sum = 0.5 * term;

}

else

{

tmp = wrksp[1];

wrksp[1] = term;

for(int j=1; j = nterm; j++)

{

dum = wrksp[j+1];

wrksp[j+1] = 0.5 * (wrksp[j] + tmp);

tmp = dum;

}

if(fabs(wrksp[nterm + 1]) = fabs(wrksp[nterm]))

{

*sum = *sum + 0.5 * wrksp[nterm + 1];

nterm = nterm + 1;

}

else

{

*sum = *sum + wrksp[nterm + 1];

}

}

}

級數(shù)計算就不用我給代碼了吧。

新聞名稱:c語言topic函數(shù) topic語言學(xué)
本文地址:http://muchs.cn/article44/hjchhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、搜索引擎優(yōu)化、軟件開發(fā)、品牌網(wǎng)站設(shè)計、網(wǎng)站制作外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)