⑴ c語言中運算順序有哪些規律
優先順序是對多個函數並列時候優先演算法的特權,沒有注意優先順序的順序就會把演算法出錯,這些優先順序是必須記住的。下面的是我自己總結的關於C優先順序的口訣.當然,應用這個口訣的前提是你必須認識所有的C語言的運算符。優先決括弧成員第一; //括弧運算符[]() 成員運算符. -全體單目第二; //所有的單目運算符比如++ -- +(正) -(負) 指針運算*&乘除餘三,加減四; //這個"余"是指取余運算即%移位五,關系六; //移位運算符:<< ,關系: < = <= 等等於(與)不等排第七; //即== !=位與異或和位或; //這幾個都是位運算: 位與(&)異或(^)位或(|)"三分天下"八九十;邏輯或跟與; //邏輯運算符:|| 和 &&十二和十一; //注意順序:優先順序(||) 底於 優先順序(&&)條件高於賦值
⑵ 大學c語言怎麼學
1.學C語言重要的是你的邏輯思維和堅持學習的恆心,學編程特別是語言就要多看,多思考,多練,也就是多敲代碼.
2.就C語言來說,是編程者應該好好學的一門語言,因為它是你日後要學的其他一些更高級的面向對象的編程語言的基礎,學好了C語言,日後學高端語言就相對容易一些,而且在學習C語言的同時你的邏輯思維也開始形成.總之他是你經常聽到的VB
C++
JAVA
.NET等等語言的一個基礎.
3.學習C在學校主要看你們那講師的水平了,有實際軟體開發經驗的老師會讓你聽的很輕松就理解了,要是只會照本喧照的老師那就會把其實不是太復雜的問題將的很復雜並難以理解(在傳統學校里是很常見的).其實C語言也並不是非常難學.如果你認真去學把該理解的東西理解了學好C是沒有問題的,3個月也夠了.
但是這種水平也只是說你把C語言基本學會了,對以後的學習打了個不錯的基礎.
4.如果你想找編程的工作向軟體開發的方向努力的話,那麼你應該有一個正確的明確的方向規劃.3
4個月把C語言的核心語法和指針
數組等學好
理解了,會用,然後對做些小的程序練習加以鞏固.然後隨著你學習的接觸你會學VB
SQL資料庫
ORACLE
C++
JAVA
JSP
ASP.NET
.NET等等現代所用的高級語言,工作中大都也是用這些高級的面向對象的語言在編程.
總之編程,編程,再編程...這就是訣竅!
對於初學者來說,自己寫程序有點兒困難,那就先按書上的例子來,一定要上機親手實踐,不管這個程序有多麼的簡單..
希望我的回答對你有幫助!
⑶ C語言中有哪些實用的編程技巧
這篇文章主要介紹了C語言高效編程的幾招小技巧,本文講解了以空間換時間、用數學方法解決問題以及使用位操作等編輯技巧,並給出若干方法和代碼實例,需要的朋友可以參考下
引言:
編寫高效簡潔的C語言代碼,是許多軟體工程師追求的目標。本文就工作中的一些體會和經驗做相關的闡述,不對的地方請各位指教。
第1招:以空間換時間
計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率問題,我們就有了解決問題的第1招——以空間換時間。
例如:字元串的賦值。
方法A,通常的辦法:
代碼如下:
#define LEN 32
char string1 [LEN];
memset (string1,0,LEN);
strcpy (string1,「This is a example!!」);
方法B:
代碼如下:
const char string2[LEN] =「This is a example!」;
char * cp;
cp = string2 ;
(使用的時候可以直接用指針來操作。)
從上面的例子可以看出,A和B的效率是不能比的。在同樣的存儲空間下,B直接使用指針就可以操作了,而A需要調用兩個字元函數才能完成。B的缺點在於靈 活性沒有A好。在需要頻繁更改一個字元串內容的時候,A具有更好的靈活性;如果採用方法B,則需要預存許多字元串,雖然佔用了大量的內存,但是獲得了程序 執行的高效率。
如果系統的實時性要求很高,內存還有一些,那我推薦你使用該招數。
該招數的變招——使用宏函數而不是函數。舉例如下:
方法C:
代碼如下:
#define bwMCDR2_ADDRESS 4
#define bsMCDR2_ADDRESS 17
int BIT_MASK(int __bf)
{
return ((1U << (bw ## __bf)) - 1) << (bs ## __bf);
}
void SET_BITS(int __dst, int __bf, int __val)
{
__dst = ((__dst) & ~(BIT_MASK(__bf))) | /
(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))
}
SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);
方法D:
代碼如下:
#define bwMCDR2_ADDRESS 4
#define bsMCDR2_ADDRESS 17
#define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)
#define BIT_MASK(__bf) (((1U << (bw ## __bf)) - 1) << (bs ## __bf))
#define SET_BITS(__dst, __bf, __val) /
((__dst) = ((__dst) & ~(BIT_MASK(__bf))) | /
(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))
SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);
函數和宏函數的區別就在於,宏函數佔用了大量的空間,而函數佔用了時間。大家要知道的是,函數調用是要使用系統的棧來保存數據的,如果編譯器里有棧檢查 選項,一般在函數的頭會嵌入一些匯編語句對當前棧進行檢查;同時,CPU也要在函數調用時保存和恢復當前的現場,進行壓棧和彈棧操作,所以,函數調用需要 一些CPU時間。而宏函數不存在這個問題。宏函數僅僅作為預先寫好的代碼嵌入到當前程序,不會產生函數調用,所以僅僅是佔用了空間,在頻繁調用同一個宏函 數的時候,該現象尤其突出。
D方法是我看到的最好的置位操作函數,是ARM公司源碼的一部分,在短短的三行內實現了很多功能,幾乎涵蓋了所有的位操作功能。C方法是其變體,其中滋味還需大家仔細體會。
第2招:數學方法解決問題
現在我們演繹高效C語言編寫的第二招——採用數學方法來解決問題。
數學是計算機之母,沒有數學的依據和基礎,就沒有計算機的發展,所以在編寫程序的時候,採用一些數學方法會對程序的執行效率有數量級的提高。
舉例如下,求 1~100的和。
方法E
代碼如下:
int I , j;
for (I = 1 ;I<=100; I ++){
j += I;
}
方法F
代碼如下:
int I;
I = (100 * (1+100)) / 2
這個例子是我印象最深的一個數學用例,是我的計算機啟蒙老師考我的。當時我只有小學三年級,可惜我當時不知道用公式 N×(N+1)/ 2 來解決這個問題。方法E循環了100次才解決問題,也就是說最少用了100個賦值,100個判斷,200個加法(I和j);而方法F僅僅用了1個加法,1 次乘法,1次除法。效果自然不言而喻。所以,現在我在編程序的時候,更多的是動腦筋找規律,最大限度地發揮數學的威力來提高程序運行的效率。
第3招:使用位操作
實現高效的C語言編寫的第三招——使用位操作,減少除法和取模的運算。
在計算機程序中,數據的位是可以操作的最小數據單位,理論上可以用「位運算」來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做數據變換使用,但是,靈活的位操作可以有效地提高程序運行的效率。舉例如下:
方法G
代碼如下:
int I,J;
I = 257 /8;
J = 456 % 32;
方法H
int I,J;
I = 257 >>3;
J = 456 - (456 >> 4 << 4);
在字面上好像H比G麻煩了好多,但是,仔細查看產生的匯編代碼就會明白,方法G調用了基本的取模函數和除法函數,既有函數調用,還有很多匯編代碼和寄存 器參與運算;而方法H則僅僅是幾句相關的匯編,代碼更簡潔,效率更高。當然,由於編譯器的不同,可能效率的差距不大,但是,以我目前遇到的MS C ,ARM C 來看,效率的差距還是不小。相關匯編代碼就不在這里列舉了。
運用這招需要注意的是,因為CPU的不同而產生的問題。比如說,在PC上用這招編寫的程序,並在PC上調試通過,在移植到一個16位機平台上的時候,可能會產生代碼隱患。所以只有在一定技術進階的基礎下才可以使用這招。
第4招:匯編嵌入
高效C語言編程的必殺技,第四招——嵌入匯編。
「在熟悉匯編語言的人眼裡,C語言編寫的程序都是垃圾」。這種說法雖然偏激了一些,但是卻有它的道理。匯編語言是效率最高的計算機語言,但是,不可能靠著它來寫一個操作系統吧?所以,為了獲得程序的高效率,我們只好採用變通的方法 ——嵌入匯編,混合編程。
舉例如下,將數組一賦值給數組二,要求每一位元組都相符。
代碼如下:
char string1[1024],string2[1024];
方法I
代碼如下:
int I;
for (I =0 ;I<1024;I++)
*(string2 + I) = *(string1 + I)
方法J
代碼如下:
#ifdef _PC_
int I;
for (I =0 ;I<1024;I++)
*(string2 + I) = *(string1 + I);
#else
#ifdef _ARM_
__asm
{
MOV R0,string1
MOV R1,string2
MOV R2,#0
loop:
LDMIA R0!, [R3-R11]
STMIA R1!, [R3-R11]
ADD R2,R2,#8
CMP R2, #400
BNE loop
}
#endif
方法I是最常見的方法,使用了1024次循環;方法J則根據平台不同做了區分,在ARM平台下,用嵌入匯編僅用128次循環就完成了同樣的操作。這里有 朋友會說,為什麼不用標準的內存拷貝函數呢?這是因為在源數據里可能含有數據為0的位元組,這樣的話,標准庫函數會提前結束而不會完成我們要求的操作。這個 常式典型應用於LCD數據的拷貝過程。根據不同的CPU,熟練使用相應的嵌入匯編,可以大大提高程序執行的效率。
雖然是必殺技,但是如果輕易使用會付出慘重的代價。這是因為,使用了嵌入匯編,便限制了程序的可移植性,使程序在不同平台移植的過程中,卧虎藏龍,險象環生!同時該招數也與現代軟體工程的思想相違背,只有在迫不得已的情況下才可以採用。切記,切記。
⑷ c語言的學習方法
如果剛開始接觸c語言,聽不懂也正常,不要有畏懼的心理,有些小夥伴可能看到部分同學什麼都會,自己就很氣餒,因為這部分同學很可能接觸編程比較早,即使小孩學走路也有一個過程,剛開始有走路慾望->學會站立,腿部有力量->嘗試走路,不斷練習->學會走路。所以不要慌。
學C語言與走路一樣,剛開始一定要有學習的慾望,然後,再制定計劃,不斷練習,量變會引起質變,堅持下去就發現原來這么簡單。
歡迎關注公眾號:c語言與cpp編程
1、學習資料
書本推薦:《cprimerplus》難得的好書。老譚的書可看可不看,但是這本藍皮的cprimerplus是我案頭必備的參考書,後面還有完整的c99標准庫,所以適合當個參考書。注意區分一下《c++primer》和《cprimerplus》
如果覺得這幾本書還是有點難,那就先看《C語言程序設計》
有了經驗後要去看看,例子很經典。後來進階可以看看三劍客《c和指針》《c陷阱與缺陷》《c專家編程》
剛學C語言的話可以結合看下C語言編程經典100例;
編譯器:VS,DevC++,VC++,CodeBlocks,C-Free,TurboC。關於它們的特點網上介紹很多了,就不贅述了。講真,入門和基礎階段你用哪個無所謂,還是選自己喜歡的,不過對於初學者我們推薦DevC++。可能現在大學課堂用的還是VC++,剛入門自己習慣就行。
視頻推薦:有同學曾經說過,視頻這么好,上課就不用聽講了,這個是完全錯誤的,視頻是課堂補充,上課還是一定要好好聽講的,視頻可以查缺補漏,系統的學習一下。
上面提到的一些資料整理好了,可以下載:
鏈接:
提取碼:1234
學習方法:
1、過:學習一門新的語言,第一步就是把它所涉及的基礎知識大體過一點,不求深解,只求了解——第一遍:無需了解太過深入的理論,大體知道這門語言是什麼樣的,主要面向哪些場合,一些基本的語法格式是什麼樣的就可以了。
2、抄代碼:剛開始寫代碼,沒有多少人一上來就能立刻自己寫一個很完善很強大的代碼,甚至連基本的語法都會寫錯,這時候抄代碼就很關鍵了,從書上抄,從例子里抄,邊抄邊想,邊想邊回憶語法。
3、模仿改:自己會抄寫一些簡單的代碼,熟悉了一遍此語言的簡單語法後,但還不太清楚怎樣下手寫一個完整的代碼模塊,所以這一步要仿寫了,仿照給出的代碼寫一個屬於自己的代碼
4、勤調試:沒有人能一下子寫出完全正確的代碼,自己試著寫一些代碼,通過不斷調試來驗證自己的一些想法,繼續思考,再次驗證,來回折騰。熟悉一些基本的調試工具以及調試方法。
5、看n遍:出錯或遇到問題時,將代碼從頭看到尾,看了一遍又一遍,直到快全部記住時,總能找出問題原因,相信方法總會比問題多
6、練重復2-5步三遍以上,不解釋。
7、創新拿出一個完全沒有寫過的代碼,根據要求,一步步的寫出來。如果寫不出來,或者中間一堆錯誤,請參考第六步。
8、悟:主動找到寫代碼的感覺和成就感,並保持下去,世界上最難的語言就掌握了,將成為你軟體生涯永遠的工具。
⑸ C語言要怎樣自學有什麼竅門可以速成
我覺得哈,基礎的理論可以先放放,C語言編程主要是思想,你要學的主要核心就是語句---if,for,while之類的,把這幾個基礎的語句學好了,就想著把一些語句嵌套使用,再學函數,數組,會了之後就聯系語句,什麼調用子函數的,數組指針之類的就應該沒啥問題了,總之自己多想些程序來聯系,不會時再翻翻書,查查資料,總之我是學的很輕松的。一般的程序,腦海中一想就知道大概方向,然後不斷的調試,更改……一般編程都是這樣的,祝你學習愉快
⑹ C語言的數字規律
想了一個感覺比較簡單的方法,思路如下:先用冒泡法將所有的數字按大小順序排列,然後只要用一個循環,只要當前值和上一個值不相同時相應計數值加1,循環完就可以歸納出有多少個不同的數字。
程序如下,僅供參考:
void main()
{
int len=27;
int a[27]={0,0,0,0,22,22,22,33,45,45,45,45,67,1,1,1,22,45,81,0,0,0,33,91,22,45,76};
int i=0,k=0,n=0,temp=0;
for(i=0;i<len;i++)
{
for(int j=len-1;j>i;j--)
{
if (a[j] < a[j-1]) {
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
k=a[0];
for(i=0;i<len;i++)
{
if(a[i]!=k)
{
k=a[i];
n++;
}
}
printf("\n");
printf("%d ",n+1);
}
⑺ C語言的規則是什麼
只有一個規則
就是要符合C語言的語法
(1)C源程序是由一個主函數和若干個其它函數組成的。(2)函數名後必須有小括弧,函數體放在大括弧內。(3)C程序必須用小寫字母書寫。(4)每句的末尾加分號。(5)可以一行多句。(6)可以一句多行。(7)可以在程序的任何位置加註釋。一個完整的C語言程序,是由一個main()函數(又稱主函數)和若干個其它函數結合而成的,或僅由一個main()函數構成。
⑻ C語言的編寫看上去雜亂無章,其中的語法規律到底有哪些呀
先承認我沒編過程序,但是我想說你說的問題應該是C語言自身特點造成的,結構化的開發語言,就是數據和演算法的堆砌,所以看上去很亂。不要找語法規律了,因為程序語言基本上都是只有順序、選擇分支、和循環三種方式處理邏輯。從演算法入手看吧, 如果一個程序注釋寫的好,你應該能看懂,所謂演算法我也沒學過,但是我覺得無非就是解題的步驟和方法,一定存在一定得邏輯性的。
⑼ 請問什麼是c語言請說明原理和規律!拜託了!
一、C語言的特點:
1. C是高級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
2.C是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。
3.C語言功能齊全。具有各種各樣的數據類型,並引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的游戲。
4. C語言適用范圍大。適合於多種操作系統,如Windows、DOS、UNIX等等;也適用於多種機型。
C語言對編寫需要硬體進行操作的場合,明顯優於其它高級語言,有一些大型應用軟體也是用C語言編寫的。
二、 C語言的模型:
1.一個C語言源程序可以由一個或多個源文件組成。
2.每個源文件可由一個或多個函數組成。
3.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。
4.源程序中可以有預處理命令(包括include 命令、if命令、pragma命令),預處理命令通常應放在源文件或源程序的最前面。
5.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括弧「}」之後不能加分號。
6.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔