述職范文|C語言思想總結(精選十六篇)
發表時間:2024-10-20C語言思想總結(精選十六篇)。
C語言思想總結 <一>
怎么才能學好c語言呢?
1,要學習c語言的基本語言及程序結構,這時譚浩強的那本書就比較經典了。c語言學習心得。當然你不能只看書,要動手動寫代碼,去上機測試。因為很多時候寫程序就是一個測試,你就是再牛的程序員也不能可寫出沒有bug的程序,所以學會找出程序中的錯誤很重要。這也是你以后分析他人的程序的先決條件,不可偷懶只看書,這樣你是不可能學好一門計算機語言的。
2,分析他人寫的程序,網上有很多實例代碼,下載下來自己先看一下他們的實例是解決什么問題的,有時候很多經典的模塊可以為已所用的。不過,網上下的代碼中會存在很多問題,環境問題啊,編程習慣問題了,不過也好,在解決問題的過程中你會學到很多東西的,像我在分析網上下的代碼時就遇到了我平時沒有遇到的dos函數,masm與c語言的接合等方面的問題,學到了不少東西呢。
3,要是你再想學的深一點兒,那還得學習,,及,再深就要去分析linux內核或是驅動程序了,這因人而異。但不管怎么學,一定要有個方向,有計劃,這樣才會事半功倍。c語言學習心得。如果你能找到你想學習方面的高手指導,或是幾個人一起學的話那就更好了。
4,分析c語言函數的實現方法。這對你很好地使用函數會很有幫助的,再者很多大公司的筆試題就是讓你實現c語言的數,比如:中興的strcpy,阿里巴巴的strcmp,上海貝爾公司宣講會上一個技術總監說,要是誰能說出printf的實現方法及返回值,當場錄用。再者,c語言經過這么多年的考驗,仍然很熱門,可見其開發是多么經典啊,學習一下c函數實現,比學習任何書都要好。要是再有興趣的話就分析一下c的頭文件,這也是個不錯的學習方面。
C語言思想總結 <二>
assert用法(C語言)
assert宏的原型定義在中,其作用是如果它的條件返回錯誤,則終止程序執行,原型定義:
#include
void assert( int expression );
assert的作用是現計算表達式 expression ,如果其值為假(即為0),那么它先向stderr打印一條出錯信息,
然后通過調用 abort 來終止程序運行。
請看下面的程序清單badptr.c:
復制代碼 代碼如下:
#include
int main( void )
{
FILE *fp;
fp = fopen( "test.txt", "w" );//以可寫的方式打開一個文件,如果不存在就創建一個同名文件
assert( fp ); //所以這里不會出錯
fclose( fp );
fp = fopen( "noexitfile.txt", "r" );//以只讀的`方式打開一個文件,如果不存在就打開文件失敗
assert( fp ); //所以這里出錯
fclose( fp ); //程序永遠都執行不到這里來
return 0;
}
宏名: assert功 能: 測試一個條件并可能使程序終止
用 法: void assert(int test);
程序例:
復制代碼 代碼如下:
#include
struct ITEM {
int key;
int value;
};
/* add item to list, make sure list is not null */
void additem(struct ITEM *itemptr) {
assert(itemptr != NULL);
/* add item to list */
}
int main(void)
{
additem(NULL);
return 0;
}
assert() 宏用法注意:assert是宏,而不是函數。在C的assert.h頭文件中。assert宏的原型定義在中,其作用是如果它的條件返回錯誤,則終止程序執行,原型定義:
復制代碼 代碼如下:
#include
void assert( int expression );
assert的作用是先計算表達式expression,如果其值為假(即為0),那么它先向標準錯誤流stderr打印一條出錯信息,然后通過調用abort來終止程序運行;否則,assert()無任何作用。宏assert()一般用于確認程序的正常操作,其中表達式構造無錯時才為真值。完成調試后,不必從源代碼中刪除assert()語句,因為宏NDEBUG有定義時,宏assert()的定義為空。
C語言思想總結 <三>
1、C語言編寫的程序稱為源程序,又稱為編譯單位。
2、C語言書寫格式是自由的,每行可以寫多個語句,可以寫多行。
3、一個C語言程序有且只有一個main函數,是程序運行的起點。
第二節、熟悉vc++
1、VC是軟件,用來運行寫的C語言程序。
2、每個C語言程序寫完后,都是先編譯,后鏈接,最后運行。(.c—.obj—.exe)這個過程中注意.c和.obj文件時無法運行的,只有.exe文件才可以運行。(??迹。?/p>
1、標識符(必考內容):
合法的要求是由字母,數字,下劃線組成。有其它元素就錯了。
2、標識符分為關鍵字、預定義標識符、用戶標識符。
關鍵字:不可以作為用戶標識符號。main define scanf printf 都不是關鍵字。迷惑你的地方If是可以做為用戶標識符。因為If中的第一個字母大寫了,所以不是關鍵字。
預定義標識符:背誦define scanf printf include。記住預定義標識符可以做為用戶標識符。
十進制轉換成二進制、八進制、十六進制。
二進制、八進制、十六進制轉換成十進制。
1)C語言只有八、十、十六進制,沒有二進制。但是運行時候,所有的進制都要轉換成二進制來進行處理。(考過兩次)
a、C語言中的八進制規定要以0開頭。018的數值是非法的,八進制是沒有8的,逢8進1。
b、C語言中的十六進制規定要以0x開頭。
2)小數的合法寫法:C語言小數點兩邊有一個是零的話,可以不用寫。
1.0在C語言中可寫成1.
0.1在C語言中可以寫成.1。
3)實型數據的合法形式:
a、2.333e-1 就是合法的,且數據是2.333×10-1。
b、考試口訣:e前e后必有數,e后必為整數。請結合書上的例子。
4) 整型一般是4個字節, 字符型是1個字節,雙精度一般是8個字節:
long int x; 表示x是長整型。
unsigned int x; 表示x是無符號整型。
考試一定要注意:“/” 兩邊都是整型的話,結果就是一個整型。 3/2的結果就是1.
“/” 如果有一邊是小數,那么結果就是小數。 3/2.0的結果就是0.5
“%”符號請一定要注意是余數,考試最容易算成了除號。)%符號兩邊要求是整數。不是整數就錯了。[注意!!!]
2、賦值表達式:表達式數值是最左邊的數值,a=b=5;該表達式為5,常量不可以賦值。
2、int x,y;
x=y=10; 對滴,定義完成后,可以連續賦值。
3、賦值的左邊只能是一個變量。
a*=2+3;運行完成后,a的值是12。
一定要注意,首先要在2+3的上面打上括號。變成(2+3)再運算。
4、自加表達式:
自加、自減表達式:假設a=5,++a(是為6), a++(為5);
運行的機理:++a 是先把變量的數值加上1,然后把得到的數值放到變量a中,然后再用這個++a表達式的數值為6,而a++是先用該表達式的數值為5,然后再把a的數值加上1為6,
再放到變量a中。 進行了++a和a++后 在下面的程序中再用到a的話都是變量a中的6了。
5、逗號表達式:
優先級別最低。表達式的數值逗號最右邊的那個表達式的數值。
(2,3,4)的表達式的數值就是4。
z=(2,3,4)(整個是賦值表達式) 這個時候z的值為4。(有點難度哦?。?/p>
z= 2,3,4 (整個是逗號表達式)這個時候z的值為2。
補充:
1、空語句不可以隨意執行,會導致邏輯錯誤。
2、注釋是最近幾年考試的重點,注釋不是C語言,不占運行時間,沒有分號。不可以嵌套!
3、強制類型轉換:
一定是 (int)a 不是 int(a),注意類型上一定有括號的。
注意(int)(a+b) 和(int)a+b 的區別。 前是把a+b轉型,后是把a轉型再加b。
2、(int)a;
‘1’ 是字符占一個字節,”1”是字符串占兩個字節(含有一個結束符號)。
‘0’ 的ASCII數值表示為48,’a’ 的ASCII數值是97,’A’的ASCII數值是65。
大寫字母和小寫字母轉換的方法: ‘A’+32=’a’ 相互之間一般是相差32。
2)轉義字符:
轉義字符分為一般轉義字符、八進制轉義字符、十六進制轉義字符。
八進制轉義字符: ‘141’ 是合法的, 前導的0是不能寫的。
十六進制轉義字符:’x6d’ 才是合法的,前導的0不能寫,并且x是小寫。
char a = 65 ;
總的處理方法:幾乎所有的位運算的題目都要按這個流程來處理(先把十進制變成二進制再變成十進制)。
b = a<<2; 這種題目的計算是先要把a的十進制6化成二進制,再做位運算。
例2: 一定要記住,異或的位運算符號” ^ ”。0 異或 1得到1。
0 異或 0得到0。兩個女的生不出來。
考試記憶方法:一男(1)一女(0)才可以生個小孩(1)。
例3: 在沒有舍去數據的時候,<>右移一位表示除以2。
C語言思想總結 <四>
C語言功能強大,本書涉及知識結構全面、合理。是一門非常好的編程語言基礎語言。
C是一門學習邏輯、程序算法、算法實現很好的教程。通過第一學期C語言的學習,從而可以了解程序的設計編碼的過程。
C是一單進程、單線程執行,從頭到尾執行,學習難不小。但結構嚴謹的高級語言,可以很好學習編程規范和要求。
C語言是為以后學習其它語言打下基礎的語言。
二、好的學習方法: 基于上述學習目的并且也我們第一門編程語言。學習方法是: 課前預習,課后復習,認真做課堂、課后的作業,理解理論知識。 記住語法規則。 加強邏輯思維。 多動手,通過練習上機了解它的運行過程。 實踐—>理論—>再實踐,剛開始學習C語言時,按示例練習,并推動理論的學習,然后再自己多思考,多上機實踐。 常見問題: 1、有同學聽說C語言很難,剛學習到第二、三章時,于是說:老師,我不會呀!真的很難。我不知道如何學習? 分析: 1)心理作用,在沒有學習之前都認為很難了。學不會也正常。 2)前三章是基礎,對于沒有學習過編程語言的同學來說,新的專業名詞很多。 3)前三章是基礎,還不能完整的寫出一個C程序。于是,就不知道如何去用,在哪個時候用等很多的疑問。 問題的存在:過于著急,對新的事務領悟不夠。 解決方法:學習是循序漸進和積累的'過程,不要著急。這此知識都是為以后作鋪墊的。 2、有同學學到數組時,說:聽你上課時,我懂,但要我自己寫,我不知道如何寫?不知道如何開始? 分析: 1)邏輯性思想太亂。如果問:“如果班上有30個同學,要判斷成績是否及格,你將如何做?”;“當然先知道每個同學的成績,然后一個一個和60比較,如果大于等60,則及格,否則不及格?!?;“那么C語言來實現,如何做?”。聲明30個變量存儲成績?不是一個好辦法。如果聲明一個30元素的數組,是不是更合理。另外,如果要寫30個條件語句來判斷,也太過于繁鎖。如果用for循環是不是更加合理。 2)練習太少,有解決方法,但不能用C語言實現。 問題的存在:思路不清淅,練習太少。 解決方法:多上機練習,多思考,舉一反三。了解程序的運行過程和編碼。 三、學習要點和重點: 第一章至第四章的:基礎知識和理論知識必須要求能理解、領悟。也是學習其它語言的基礎。 第二章、第三章提到很多的專業名詞,如數據類型,變量與常量的區別,標識符的命名規則,表達式及各種運算符及輸入輸出函數基礎 五章和第六章:程序的基本結構,學習完前六章,要求能理解程序運行和編碼的過程。 將我們的算法用編程語言來實現,主要是學習程序設計的邏輯性。也是學習其它語言的基礎 第七章到第十一章:學習C語言的特色,更深入了解C語言。本章讓學員加強空間的想象力。 第十二章:是文件的操作??紤]的是如何將程序的輸出結果及相關信息用文件記錄下來。 四、學習難度: 與日常的自然語言的表達不完全相同,所有結果要通過計算才能得。計算機沒有想像能力和空間思維能力。計算機能運行,依靠程序員的嚴謹的命令來驅動。 語法格式多,知識點全面。應用時,要將零散的知識點有效有序的組合。 (1)下列關于棧的敘述中正確的是 1、情景創設教學法。課堂教學是獲取知識和技能的主要陣地,應當成為培養學生獨立思考的搖籃。情景創設教學方法把學習設置到簡單的、有意義的問題情境中,學生通過互相合作來解決這些問題,發現隱含于問題背后的科學知識,形成讓學生掌握解決問題的技能和提高自主學習的能力。例如,講解指針的基本概念,計算機中的所有數據都是順序存放在存儲器中的。一般把存儲器中的一個字節稱為一個內存單元,不同數據類型的值所占用的內存單元數亦不同。為了正確地訪問這些內存單元。內存單元的編號也叫地址,通常也把這個地址稱為指針。內存單元的指針和內存單元的內容是兩個不同的概念。為讓學生掌握并理解內存單元的'指針和內存單元的內容,我采用了情景創設的教學方法。我們到銀行去存、取款時,銀行工作人員將根據我們的賬號去查找存款單,找到之后在存單上寫入存款、取款的金額。在這里,賬號就是存單的指針,存款數就是存單的內容。這樣就能讓學生明白內存單元的指針和內存單元的內容之間的關系了。 2、主動探索、協作學習教學法。根據已有信息,從不同角度、不同方向思考問題,從多方面尋求多樣性答案的一種思維形式,是主動探索的教學方法。為走出傳統教學中的泥灘,教師應轉變教學觀念,砸碎應試教育的模式和框架,克服單純傳授知識的傾向,注重順向思維、逆向思維、多向思維的訓練,培養學生思維的深刻性、批判性和創新性。具體來講,就是要通過挖掘教材中能一題多解、一法多用、一題多變的教學內容,來引導學生主動探索,使他們的思考朝多種方向擴散,提出各種設想、多種解答。在指針教學中還可以進行協作學習中培養學生們的思維。協作學習是在解題中,盡可能利用自己已有的知識和經驗與同學一起討論,將不同的方法進行比較,從中確定出最佳方案。在教學中,引導學生從不同方向利用其他學科的理論,開闊思路,找出解決問題的多種方法。然后在眾多的解法中,經過歸納、判斷和比較,最終得出一個最優化的結論。比如在教學生如何通過指針引用數組元素,先請學生協作學習開闊思路用不同方法編寫“輸出數組中的全部元素”程序。 方法一:下標法 方法二:通過數組名計算數組元素地址,找出元素的值 方法三:用指針變量指向數組元素 通過該教學方法,這個知識點學生掌握得很好,找出解決問題的多種方法,能深刻地、高水平地掌握知識,并能把這些知識廣泛應用到學習新知識的過程中,舉一反三,提高了對知識的理解能力,使學習活動順利進行。 3、游戲案例導入教學法 在指針教學中通過游戲案例導入教學法可以營造學生獨立思考的心理氛圍。在分析指向多維數組的指針和指針變量中的“多維數組的地址”知識點,我先請同學做游戲,一個當“排長”,三個當“班長”,十二個當“戰士”,游戲是:有一個排,下設3個班,每個班有4名戰士。規定排長只管理到班,班長管理戰士。在排長眼里只有第0、1、2班。排長從第0班的起始位置走到第1班的起始位置,看來只走了一步,但實際上他跳過了4名戰士。為了找到某一班內某一個戰士,必須給兩個參數,即第i班第j個戰士,先找到第i班,然后由該班班長在本班范圍內找第j個戰士。這個戰士的位置就是a[i]+i.。開始時班長面對第0個戰士。注意,排長和班長的初始位置是相同的。但他們的“指向”是不同的。排長“指向”班,他走一步就跳過1個班,而班長“指向”戰士,走一步只是指向下一個戰士。可以看到排長是“宏觀管理”,只管班,班長則是“微觀管理”,管理到戰士。如果要找第1班第2個戰士,則先由排長找到第1班的班長,然后,由班長在本班范圍內找到第2個戰士。二維數組a相當于排長,每一行(即一維數組a[0]、a[1]、a[2])相當于班長,每一行中的元素(如a[1][2])相當于戰士。 請同學們打開書,仔細看插圖,邊看邊想:誰是排長?班長在哪兒?管多少個戰士? 這段游戲導入把貫穿全文的線索用三個問題串起來,讓學生從靜態的圖中找答案,思考、討論結果。這一過程學生的思維也是最活躍的,對問題的思考是深入而全方位的,這些問題激發了學生們的心理驅動力,在討論爭議中,讓學生迸發出創新思維的火花。 兩周的上機實習結束了,在這段時間內,我的C語言知識得到了溫習,編程能力得到了很大的'提高,我覺得這次實習很重要,而且是恰逢其時,當然通過自己編程的過程,也有了一些心得: 編程要的是正確的結果,體會的是艱辛的過程,收獲的是好心情。 首先編程的時候你不能覺得這是一個繁瑣的過程,在遇到出錯的時候要有信心解決,不要害怕出錯,不能忽略細節,尤其是對標點以及輸入輸出函數,要正確使用。其次,編程要有一個扎實的知識儲備,沒把課本看好,沒把例題看好,不會編出正確的程序,同時,如果不多看程序,不斷吸收別人的編程思想,就不會編出精彩的程序;當然也不能忽略與別人討論與請教,在這過程中,我們可以相互交流編程想法,找到解決問題的最佳路徑,這種團結協作的精神也是必須要有的。 兩周很短,編程的過程卻很漫長,思考,編程,改錯,運行,這就是編程的感覺。感謝幫助我,還有一起討論問題的同學,感覺老師細心的指導,在遇到小問題的時候,他也是很耐心的解答,感謝這次上機機會,讓我重新溫習了C語言,也讓我對明年的等級考試更有信心。在初學C語言的一個學期后,我們進行了C語言實訓階段,嘗試編寫一個比較復雜的程序系統。在這次實訓中,我對對C語言有了一個更深的了解認識,也對這個學期學的知識得到鞏固,還嘗試運行編程,每次運行程序成功,讓我對下面的項目就充滿信心。通過自己與同學合作編寫程序,最終把最初的理論知識轉化基本技能。這次的實訓,使我對C語言的學習產生濃厚的興趣。 通過這次實訓,也使我們發現了許多問題。 在實訓中,我們認識到自己還有很多的知識沒學好,基礎知識沒理清,而且許多東西還要去翻書,去上網搜索。而且遇到一些小錯誤運行不出來,就會煩躁不安,覺得有些自暴自棄或者抱怨項目的變態,以后要克服,盡量保持一顆良好的心態,學好C語言,也學好用C語言編寫一個按要求的系統。 一年來,我們已經學習了VB語言和C語言,在應用這些語言的過程中,我們的邏輯思維得到了加強,更重要的是我們把在數學上學習到的算法應用到計算機程序中,通過分析問題,調查研究,最終解決問題。盡管每次解決問題的過程不會都很順利,尤其是在出錯的時候總是很難解決那些很細微的錯誤,比如一個符號打錯,或者漏掉一個標點,檢查起來都會很麻煩,但是,每次成功的運行,得到的不僅僅是一個正確的結果,更多的是體會到了過程,有了一種成就感,特別是C語言,最能給我這種感覺。 還有就是對于未來,近程就是下學期,我覺得我還有許多方面需要提高。首先我要繼續學習好C語言的基礎知識,然后能在電腦上熟練的運用。然后每天都能寫一些程序,上網時候多看一些優秀的教程和優秀的代碼。遇到問題時多和同學討論,并且多弄出幾套方案,多鍛煉自己結局問題的能力和與同學合作的能力。 總之,這一切都成為我記憶里面的一個篇章,更是在C語言編程上的一個里程碑。 c語言中“%=”是什么意思? combine。剛開始是叫b語言,主要由kenTompson開發完成,后來又由Dennis.M.Ritchie在b語言的基礎上發展成c語言。所以現在一般說c語言都是由他兩發明的。 C語言是在B語言的基礎上發展起來的,它的根源可以追溯到ALGOL 60。1960年出現的ALGOL 60是一種面向問題的高級語言,它離硬件比較遠,不宜用來編寫系統程序。1963年英國的劍橋大學推出了CPL(Combined Programming Language)語言。CPL語言在ALGOL60的基礎上接近硬件一些,但規模比較大,難以實現。1967年英國劍橋大學的Matin Richards對CPL語言作了簡化,推出了BCPL(Basic Combined Programming Language)語言。1970年美國貝爾實驗室的Ken Thompson以BCPL語言為基礎,又作了進一步簡化,設計出了很簡單的而且很接近硬件的B語言(取BCPL的第一個字母),并用B語言寫了第一個UNIX操作系統,在PDP-7上實現。1971年在PDP-11/20上實現了B語言,并寫了UNIX操作系統,但B語言過于簡單,功能有限。1972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎上設計出了C語言(取BCPL的第二字母)。C語言既保持了BCPL和B語言的優點(精練,接近硬件) 又克服了它們的缺點(過于簡單,數據無類型等)。最初的C語言只是為描述和實現UNIX操作系統提供一種工作語言而設計的。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的%90以上用C改寫(即UNIX第5版。原來的UNIX操作系統是1969年由美國的貝爾實驗室的K.Thompson和D.M.Ritchie開發成功的,是用匯編語言寫的)。 C語言的模塊化程序結構用函數來實現,即將復雜的C程序分為若干模塊,每個模塊都編寫成一個C函數,然后通過主函數調用函數及函數調用函數來實現一大型問題的C程序編寫,下面就由小編為大家介紹一下C語言指針筆試題的文章,歡迎閱讀。 C語言指針筆試題篇1 1. char * const p; char const * p const char *p 上述三個有什么區別? char * const p; //常量指針,p的值不可以修改 char const * p;//指向常量的指針,指向的常量值不可以改 const char *p; //和char const *p 2. char str1 = “abc”; char str2 = “abc”; const char str3 = “abc”; const char str4 = “abc”; const char *str5 = “abc”; const char *str6 = “abc”; char *str7 = “abc”; char *str8 = “abc”; cout << ( str1 == str2 ) << endl; cout << ( str3 == str4 ) << endl; cout << ( str5 == str6 ) << endl; cout << ( str7 == str8 ) << endl; 打印結果是什么? 解答:結果是:0 0 1 1 str1,str2,str3,str4是數組變量,它們有各自的內存空間;而str5,str6,str7,str8是指針,它們指向相同的常量區域 3. 以下代碼中的兩個sizeof用法有問題嗎? void UpperCase( char str ) // 將 str 中的小寫字母轉換成大寫字母 { for( size_t i=0; i if( ‘a’<=str[i] && str[i]<=’z’ ) str[i] -= (‘a’-'A’ ); } char str = “aBcDe”; cout << “str字符長度為: ” << sizeof(str)/sizeof(str[0]) << endl; UpperCase( str ); cout << str << endl; 答:函數內的sizeof有問題。 根據語法,sizeof如用于數組,只能測出靜態數組的大小,無法檢測動態分配的或外部數組大小。 函數外的str是一個靜態定義的數組,因此其大小為6, 函數內的str實際只是一個指向字符串的指針,沒有任何額外的與數組相關的信息,因此sizeof作用于上只將其當指針看,一個指針為4個字節,因此返回4。 4. main { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf(“%d,%d”,*(a+1),*(ptr-1)); } 輸出結果是什么? 答案:輸出:2,5 *(a+1)就是a[1],*(ptr-1)就是a[4],執行結果是2,5 &a+1不是首地址+1,系統會認為加一個a數組的偏移,是偏移了一個數組的大小(本例是5個int) int *ptr=(int *)(&a+1); 則ptr實際是&(a[5]),也就是a+5 原因如下: &a是數組指針,其類型為 int (*)[5]; 而指針加1要根據指針類型加上一定的值,不同類型的指針+1之后增加的大小不同。 a是長度為5的int數組指針,所以要加 5*sizeof(int) 所以ptr實際是a[5] 但是prt與(&a+1)類型是不一樣的(這點很重要) 所以prt-1只會減去sizeof(int*) a,&a的地址是一樣的,但意思不一樣 a是數組首地址,也就是a[0]的地址,&a是對象(數組)首地址, a+1是數組下一元素的地址,即a[1],&a+1是下一個對象的地址,即a[5]. C語言指針筆試題篇2 1. 請問以下代碼有什么問題: int main { char a; char *str=&a; strcpy(str,”hello”); printf(str); return 0; } 答案:沒有為str分配內存空間,將會發生異常。問題出在將一個字符串復制進一個字符變量指針所指地址。雖然可以正確輸出結果,但因為越界進行內在讀寫而導致程序崩潰。 2. char* s=”AAA”; printf(“%s”,s); s[0]=’B'; printf(“%s”,s); 有什么錯? 答案: “AAA”是字符串常量。s是指針,指向這個字符串常量,所以聲明s的時候就有問題。 cosnt char* s=”AAA”; 然后又因為是常量,所以對是s[0]的賦值操作是不合法的。 3. int (*s[10])(int) 表示的是什么? 答案:int (*s[10])(int) 函數指針數組,每個指針指向一個int func(int param)的函數。 4. 有以下表達式: int a=248; b=4; int const c=21; const int *d=&a; int *const e=&b; int const *f const =&a; 請問下列表達式哪些會被編譯器禁止?為什么? *c=32;d=&b;*d=43;e=34;e=&a;f=0x321f; 答案: *c 這是個什么東東,禁止 *d 說了是const, 禁止 e = &a 說了是const 禁止 const *f const =&a; 禁止 5. #include #include void getmemory(char *p) { p=(char *) malloc(100); strcpy(p,”hello world”); } int main( ) { char *str=NULL; getmemory(str); printf(“%s/n”,str); free(str); return 0; } 分析一下這段代碼 答案:程序崩潰,getmemory中的malloc 不能返回動態內存, free對str操作很危險 博主:getmemory中p是形參,是一個指針變量,getmemory(str)調用后,傳入的是指針變量保存的對象地址,p=(char *) malloc(100)實際上是把申請的動態內存空間的首地址付給p指向的地址(即str指向的地址null),這個是錯誤的。應該修改成指向指針的指針void getmemory(char p),這樣malloc返回的地址付給*p(即str變量本身)。 6 char szstr[10]; strcpy(szstr,”0123456789″); 產生什么結果?為什么? 答案:長度不一樣,會造成非法的OS C語言指針筆試題篇3 11.要對絕對地址0100000賦值,我們可以用(unsigned int*)0100000 = 1234; 那么要是想讓程序跳轉到絕對地址是0100000去執行,應該怎么做? 答案:*((void (*)( ))0100000 ) ( ); 首先要將0100000強制轉換成函數指針,即: (void (*))0100000 然后再調用它: *((void (*))0100000); 用typedef可以看得更直觀些: typedef void(*) voidFuncPtr; *((voidFuncPtr)0100000); 12. 分析下面的程序: void GetMemory(char p,int num) { //p,指向指針的指針,*p,p指向的指針(即str),p,最終的對象,str指向的單元 *p=(char *)malloc(num); //申請空間首地址付給傳入的被p指向的指針,即str } int main { char *str=NULL; GetMemory(&str,100); //傳入指針變量本身的地址 strcpy(str,”hello”); free(str); if(str!=NULL) { strcpy(str,”world”); } printf(“\n str is %s”,str); 軟件開發網 getchar; } 問輸出結果是什么? 答案:輸出str is world。 free 只是釋放的str指向的內存空間,它本身的值還是存在的.所以free之后,有一個好的習慣就是將str=NULL. 此時str指向空間的內存已被回收,如果輸出語句之前還存在分配空間的操作的話,這段存儲空間是可能被重新分配給其他變量的, 盡管這段程序確實是存在大大的問題(上面各位已經說得很清楚了),但是通常會打印出world來。 這是因為,進程中的內存管理一般不是由操作系統完成的,而是由庫函數自己完成的。 當你malloc一塊內存的時候,管理庫向操作系統申請一塊空間(可能會比你申請的大一些),然后在這塊空間中記錄一些管理信息(一般是在你申請的內存 前面一點),并將可用內存的地址返回。但是釋放內存的時候,管理庫通常都不會將內存還給操作系統,因此你是可以繼續訪問這塊地址的。 13.char a[10]; strlen(a)為什么等于15? #include “stdio.h” #include “string.h” void main { char aa[10]; printf(“%d”,strlen(aa)); } 答案:sizeof和初不初始化,沒有關系; strlen和初始化有關。 14.char (*str)[20];/*str是一個數組指針,即指向數組的指針.*/ char *str[20];/*str是一個指針數組,其元素為指針型數據.*/ 15. #include #include #include #include #include #include typedef struct AA { int b1:5; int b2:2; }AA; void main { AA aa; char cc[100]; strcpy(cc,”0123456789abcdefghijklmnopqrstuvwxyz”); memcpy(&aa,cc,sizeof(AA)); cout << aa.b1 < cout << aa.b2 < } 輸出結果是多少? 答案:-16和1 首先sizeof(AA)的大小為4,b1和b2分別占5bit和2bit.經過strcpy和memcpy后,aa的4個字節所存放的值是: 0,1,2,3的ASC碼,即00110000,00110001,00110010,00110011所以,最后一步:顯示的是這4個字節的前5位,和 之后的2位分別為:10000,和01,因為int是有正負之分 每個應屆畢業生在學校畢業前都需要進行畢業實習,以下是由中國人才網提供一篇實習心得范文,提供給應屆畢業生寫心得時參考所用。更多實習材料盡在shixi/ 在科技高度發展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們學習它,有助于我們更好的了解計算機,與計算機進行交流,因此,c語言的學習對我們尤其重要。 在這個星期里,我們專業的學生在專業老師的帶領下進行了c語言程序實踐學習。在這之前,我們已經對c語言這門課程學習了一個學期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對里面的好多東西還是很陌生,更多的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難嘛。 由于時間的關系,我們的這次實踐課程老師并沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理。簡單界面程序。高級界面程序。程序的添加修改。用程序做一元線性回歸處理以及用c語言程序來畫粒度分布圖等這幾樣比較重要的時間操作。 上機實驗是學習程序設計語言必不可少的實踐環節,特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對于程序設計語言的學習目的,可以概括為學習語法規定、掌握程序設計方法、提高程序開發能力,這些都必須通過充分的實際上機操作才能完成。 學習c程序設計語言除了課堂講授以外,必須保證有不少于課堂講授學時的上機時間。因為學時所限,課程不能安排過多的統一上機實驗,所以希望學生有效地利用課程上機實驗的機會,盡快掌握用c語言開發程序的能力,為今后的繼續學習打下一個良好的基礎。為此,我們結合課堂講授的內容和進度,安排了12次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面: 1.加深對課堂講授內容的理解 課堂上要講授許多關于c語言的語法規則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。通過多次上機練習,對于語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握c語言的語法規定。對于一些內容自己認為在課堂上聽懂了,但上機實踐中會發現原來理解的偏差, C語言的靈活給程序的調試帶來了許多不便,尤其對初學C語言的人來說,經常會出一些連自己都不知道錯在哪里的錯誤,下面整理了一些常見錯誤,一起來看看吧! 1.書寫標識符時,忽略了大小寫字母的區別。 main() { int a=5; printf("%d",A); } 編譯程序把a和A認為是兩個不同的變量名,而顯示出錯信息。C認為大寫字母和小寫字母是兩個不同的字符。習慣上,符號常量名用大寫,變量名用小寫表示,以增加可讀性。 2.忽略了變量的類型,進行了不合法的運算。 main() { float a,b; printf("%d",a%b); } %是求余運算,得到a/b的整余數。整型變量a和b可以進行求余運算,而實型變量則不允許進行“求余”運算。 3.將字符常量與字符串常量混淆。 char c; c="a"; 在這里就混淆了字符常量與字符串常量,字符常量是由一對單引號括起來的單個字符,字符串常量是一對雙引號括起來的字符序列。C規定以“”作字符串結束標志,它是由系統自動加上的,所以字符串“a”實際上包含兩個字符:‘a'和‘',而把它賦給一個字符變量是不行的。 4.忽略了“=”與“==”的區別。 在許多高級語言中,用“=”符號作為關系運算符“等于”。如在BASIC程序中可以寫 if (a=3) then … 但C語言中,“=”是賦值運算符,“==”是關系運算符。如: if (a==3) a=b; 前者是進行比較,a是否和3相等,后者表示如果a和3相等,把b值賦給a。由于習慣問題,初學者往往會犯這樣的錯誤。 5.忘記加分號。 分號是C語句中不可缺少的一部分,語句末尾必須有分號。 a=1 b=2 編譯時,編譯程序在“a=1”后面沒發現分號,就把下一行“b=2”也作為上一行語句的一部分,這就會出現語法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分號。 { z=x+y; t=z/100; printf("%f",t); } 對于復合語句來說,最后一個語句中最后的'分號不能忽略不寫(這是和PASCAL不同的)。 6.多加分號。 對于一個復合語句,如: { z=x+y; t=z/100; printf("%f",t); }; 復合語句的花括號后不應再加分號,否則將會畫蛇添足。 又如: if (a%3==0); I++; 本是如果3整除a,則I加1。但由于if (a%3==0)后多加了分號,則if語句到此結束,程序將執行I++語句,不論3是否整除a,I都將自動加1。 再如: for (I=0;I<5;I++); {scanf("%d",&x); printf("%d",x);} 本意是先后輸入5個數,每輸入一個數后再將它輸出。由于for()后多加了一個分號,使循環體變為空語句,此時只能輸入一個數并輸出它。 7.輸入變量時忘記加地址運算符“&”。 int a,b; scanf("%d%d",a,b); 這是不合法的。Scanf函數的作用是:按照a、b在內存的地址將a、b的值存進去?!?a”指a在內存中的地址。 8.輸入數據的方式與要求不符。 ①scanf("%d%d",&a,&b); 輸入時,不能用逗號作兩個數據間的分隔符,如下面輸入不合法: 經過一個星期的上機實踐學習,使我對c語言有了更進一步的認識和了解,要想學好它要重在實踐,要通過不斷的上機操作才能更好地學習它,通過實踐,我也發現我的好多不足之處,首先是自己在指法上還不行,經常按錯字母,通過學習也有所改善;再有對c語言的一些標準庫函數不太了解,還有對函數調用的正確使用不夠熟悉,還有對c語言中經常出現的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。 通過實踐的學習,我認到學好計算機要重視實踐操作,不僅僅僅是學習c語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以后在學習過程中,我會更加注視實踐操作,使自己便好地學好計算機。 在這一學期中,我們以全面提高教學質量為宗旨,以采用幼兒園綜合活動叢書教材為主,繪本故事為輔為契機,實踐綱要精神,落實園本教研,致力于教學和管理的改革,大膽嘗試,教研工作取得了一定的成績,現簡要總結如下: 一、發揮課程內涵的最大效益 1.教研組的研究主題與年級組大主題相結合 我們的教研內容都是年級組大主題中的教材,如:呂品品誰的主意好、阮麗詩小鳥找家,力求在原有的水平上更上一個臺階,為此,我們在每次大教研前教師都要獨自、認真地備課,定下研討主題后,集組內教師的智慧修改教案,教學質量大大地提高了。由于幼兒園綜合活動叢書每個主題中的語言教材不多,所以我們借助繪本故事教學這一豐富的資源來完善我園語言教學內容。如:魏麗蓮一根羽毛也不能動、鮑妍花婆婆。 2.教育經驗的交流和互通 這學期我鼓勵教研組的成員聽年級組教師的隨堂課。同一節課多人執教后,她們都有自己的想法,在交流過程中吸取別人的長處,彌補自己的不足。為了帶動年級組語言教師共同發展,我們的每次教研活動都提前出“教研通告”,邀請執教同一學科的教師觀摩指導,共同進步。如:呂品品誰的主意好,符桃、阮美娣、史蘇超都參加了活動。 二、發揮示范作用,形成共同成長集體 1.公開教育教學活動 我們在自己組內教研的同時,也安排教師外出學習,將同行的優點學習運用進來,主動承擔匯報活動,將外出學習的新知識、新理念以組織教學活動或講座的形式展現給全園教師。如:魏麗蓮執教繪本一根羽毛也不能動。欣賞完她的匯報活動,我們感嘆教師對教材把握的精準度。 2.提升教師的業務素質 在每次小教研集體備課時,我們組內的教師都會帶好教材、圖片ppt邊演示邊聲情并茂地講故事。教師們在其樂融融的氛圍下不自不覺地提升了自身的業務水平。如:在幼兒園組織的“愛與責任”師德演講比賽中,阮麗詩榮獲三等獎,鮑妍榮獲一等獎,并代表園部參加市里比賽。 以上是近階段教研組的工作總結,在教學研究與實踐中還存在以下問題: 1.活動中教師如何有效拓展幼兒的經驗?如何使每一個環節更豐富和有效? 2.如何在教研活動中多關注不同層次教師能力的提高,采取有效途徑幫助教師在學習借鑒中獲得一些新的經驗? 以上問題有待我們在今后的教研活動中尋求有效方法與策略加以改進與提升。 特別要注意:c語言中是用非0表示邏輯真的,用0表示邏輯假的。 1)關系表達式: 表達式的數值只能為1(表示為真),或0(表示假) 當關系的表達是為真的時候得到1。如 9>8這個是真的,所以表達式的數值就是1; 2)邏輯表達式: 只能為1(表示為真),或0(表示假) a) 共有&& || ! 三種邏輯運算符號。 b) !>&&>|| 優先的級別。 c) 注意短路現象??荚嚤容^喜歡考到。 d) 要表示 x 是比0大,比10小的方法。0 3)if 語句 else 是與最接近的if且沒有else的相組合的。 4)條件表達式: 表達式1 ?表達式2 :表達式3 注意是當非0時候是表達式2的數值,當為0是就是表達式2的數值。 考試口訣:真前假后。 5)switch語句: a)一定要注意 有break 和沒有break的差別,書上(34頁)的兩個例子,沒有break時候,只要有一個case匹配了,剩下的都要執行,有break則是直接跳出了swiche語句。 b)switch只可以和break一起用,不可以和continue用。 c語言筆試題大全 以下是華為c語言筆試題大全, 1、局部變量能否和全局變量重名? 答:能,局部會屏蔽全局。要用全局變量,需要使用“::” 局部變量可以與全局變量同名,在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對于有些編譯器而言,在同一個函數內可以定義多個同名的局部變量,比如在兩個循環體內都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環體內 2、如何引用一個已經定義過的全局變量? 答:extern 可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯 3、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么? 答:可以,在不同的C文件中以static形式來聲明同名全局變量。 可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯 4、語句for( ;1 ;)有什么問題?它是什么意思? 答:和while(1)相同。 5、do……while和while……do有什么區別? 答:前一個循環一遍再判斷,后一個判斷以后再循環 6、請寫出下列代碼的輸出內容 #include main { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf(“b,c,d:%d,%d,%d”,b,c,d); return 0; } 答:10,12,120 1、static全局變量與普通的全局變量有什么區別?static局部變量和普通局部變量有什么區別?static函數與普通函數有什么區別? 全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。全局變量本身就是靜態存儲方式, 靜態全局變量當然也是靜態存儲方式。 這兩者在存儲方式上并無不同。這兩者的區別在于非靜態全局變量的作用域是整個源程序, 當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的.。 而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。由于靜態全局變量的作用域局限于一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。 從以上分析可以看出, 把局部變量改變為靜態變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量后是改變了它的作用域, 限制了它的使用范圍。 static函數與普通函數作用域不同。僅在本文件。只在當前源文件中使用的函數應該說明為內部函數(static),內部函數應該在當前源文件中說明和定義。對于可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件 static全局變量與普通的全局變量有什么區別:static全局變量只初使化一次,防止在其他文件單元中被引用; static局部變量和普通局部變量有什么區別:static局部變量只被初始化一次,下一次依據上一次結果值; static函數與普通函數有什么區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝 2、程序的局部變量存在于(堆棧)中,全局變量存在于(靜態區 )中,動態申請數據存在于( 堆)中。 3、設有以下說明和定義: typedef union {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;} too; DATE max; 則語句 printf(“%d”,sizeof(struct date)+sizeof(max));的執行結果是:___52____ 答:DATE是一個union, 變量公用空間. 里面最大的變量類型是int[5], 占用20個字節. 所以它的大小是20 data是一個struct, 每個變量分開占用空間. 依次為int4 + DATE20 + double8 = 32. 所以結果是 20 + 32 = 52. 當然...在某些16位編輯器下, int可能是2字節,那么結果是 int2 + DATE10 + double8 = 20 4、隊列和棧有什么區別? 隊列先進先出,棧后進先出 、寫出下列代碼的輸出內容 #include int inc(int a) { return(++a); } int multi(int*a,int*b,int*c) { return(*c=*a**b); } typedef int(FUNC1)(int in); typedef int(FUNC2) (int*,int*,int*); void show(FUNC2 fun,int arg1, int*arg2) { INCp=&inc; int temp =p(arg1); fun(&temp,&arg1, arg2); printf(“%d\n”,*arg2); } main() { int a; show(multi,10,&a); return 0; } 答:110 7、請找出下面代碼中的所以錯誤 說明:以下代碼是把一個字符串倒序,如“abcd”倒序后變為“dcba” 1、#include“string.h” 2、main() 3、{ 4、char*src=“hello,world”; 5、char* dest=NULL; 6、int len=strlen(src); 7、dest=(char*)malloc(len); 8、char* d=dest; 9、char* s=src[len]; 10、while(len--!=0) 11、d++=s--; 12、printf(“%s”,dest); 13、return 0; 14、} 答: 方法1: int main(){ char* src = “hello,world”; int len = strlen(src); char* dest = (char*)malloc(len+1);//要為\0分配一個空間 char* d = dest; char* s = &src[len-1];//指向最后一個字符 while( len-- != 0 ) *d++=*s--; *d = 0;//尾部要加\0 printf(“%s\n”,dest); free(dest);// 使用完,應當釋放空間,以免造成內存匯泄露 return 0; } 方法2: #include #include main() { char str[]=“hello,world”; int len=strlen(str); char t; for(int i=0; i { t=str[i]; str[i]=str[len-i-1]; str[len-i-1]=t; } printf(“%s”,str); return 0; } 1.-1,2,7,28,,126請問28和126中間那個數是什么?為什么? 第一題的答案應該是4^3-1=63 規律是n^3-1(當n為偶數0,2,4) n^3+1(當n為奇數1,3,5) 答案:63 2.用兩個棧實現一個隊列的功能?要求給出算法和思路! 設2個棧為A,B, 一開始均為空. 入隊: 將新元素push入棧A; 出隊: (1)判斷棧B是否為空; (2)如果不為空,則將棧A中所有元素依次pop出并push到棧B; (3)將棧B的棧頂元素pop出; 這樣實現的隊列入隊和出隊的平攤復雜度都還是O(1), 比上面的幾種方法要好, 3.在c語言庫函數中將一個字符轉換成整型的函數是atool()嗎,這個函數的原型是什么? 函數名: atol 功 能: 把字符串轉換成長整型數 用 法: long atol(const char *nptr); 程序例: #include #include int main(void) { long l; char *str = “98765432”; l = atol(lstr); printf(“string = %s integer = %ld\n”, str, l); return(0); } 2.對于一個頻繁使用的短小函數,在C語言中應用什么實現,在C++中應用什么實現? c用宏定義,c++用inline 3.直接鏈接兩個信令點的一組鏈路稱作什么? PPP點到點連接 4.接入網用的是什么接口? 5.voip都用了那些協議? 6.軟件測試都有那些種類? 黑盒:針對系統功能的測試??? 白合:測試函數功能,各函數接口 7.確定模塊的功能和模塊的接口是在軟件設計的那個隊段完成的? 概要設計階段 8.enum string { x1, x2, x3=10, x4, x5, }x; 問x= 0x801005,0x8010f4 ; 9.unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 請問p1+5= ; p2+5= ; 三.選擇題: 1.Ethternet鏈接到Internet用到以下那個協議? A.HDLC;B.ARP;C.UDP;D.TCP;E.ID 2.屬于網絡層協議的是: A.TCP;B.IP;C.ICMP;D.X.25 3.Windows消息調度機制是: A.指令隊列;B.指令堆棧;C.消息隊列;D.消息堆棧; 4.unsigned short hash(unsigned short key) { return (key>>)%256 } 請問hash(16),hash(256)的值分別是: A.1.16;B.8.32;C.4.16;D.1.32 四.找錯題: 1.請問下面程序有什么錯誤? int a[60][250][1000],i,j,k; for(k=0;k<=1000;k++) for(j=0;j<250;j++) for(i=0;i<60;i++) a[i][j][k]=0; 把循環語句內外換一下 2.#define Max_CB 500 void LmiQueryCSmd(Struct MSgCB * pmsg) { unsigned char ucCmdNum; ...... for(ucCmdNum=0;ucCmdNum { ......; } 死循環 3.以下是求一個數的平方的程序,請找出錯誤: #define SQUARE(a)((a)*(a)) int a=5; int b; b=SQUARE(a++); 4.typedef unsigned char BYTE int examply_fun(BYTE gt_len; BYTE *gt_code) { BYTE *gt_buf; gt_buf=(BYTE *)MALLOC(Max_GT_Length); ...... if(gt_len>Max_GT_Length) { return GT_Length_ERROR; } ....... } 五.問答題: 1.IP Phone的原理是什么? IPV6 2.TCP/IP通信建立的過程怎樣,端口有什么作用? 三次握手,確定是哪個應用程序使用該協議 3.1號信令和7號信令有什么區別,我國某前廣泛使用的是那一種? 4.列舉5種以上的電話新業務? 更多相關的筆試題目,大家敬請繼續閱讀:愛立信技術類筆試題java筆試題? 東軟筆試題國美智力筆試題目 在這個星期里,我們專業的學生在專業老師的帶領下進行了c語言程序實踐學習。在這之前,我們已經對c語言這門課程學習了一個學期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對里面的好多東西還是很陌生,更多的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難嘛。 由于時間的關系,我們的這次實踐課程老師并沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理.簡單界面程序.高級界面程序.程序的添加修改.用程序做一元線性回歸處理以及用c語言程序來畫粒度分布圖等這幾樣比較重要的時間操作。 上機實驗是學習程序設計語言必不可少的實踐環節,特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對于程序設計語言的學習目的,可以概括為學習語法規定、掌握程序設計方法、提高程序開發能力,這些都必須通過充分的實際上機操作才能完成。 學習c程序設計語言除了課堂講授以外,必須保證有不少于課堂講授學時的上機時間。因為學時所限,課程不能安排過多的統一上機實驗,所以希望學生有效地利用課程上機實驗的機會,盡快掌握用c語言開發程序的能力,為今后的繼續學習打下一個良好的基礎。為此,我們結合課堂講授的內容和進度,安排了12次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面: 1.加深對課堂講授內容的理解 課堂上要講授許多關于c語言的語法規則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。通過多次上機練習,對于語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握c語言的語法規定。對于一些內容自己認為在課堂上聽懂了,但上機實踐中會發現原來理解的偏差,這是由于大部分學生是初次接觸程序設計,缺乏程序設計的實踐所致。 學習c語言不能停留在學習它的語法規則,而是利用學到的知識編寫c語言程序,解決實際問題。即把c語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。 通過上機實驗來驗證自己編制的程序是否正確,恐怕是大多數同學在完成老師作業時的心態。但是在程序設計領域里這是一定要克服的傳統的、錯誤的想法。因為在這種思想支配下,可能你會想辦法去掩蓋程序中的錯誤,而不是盡可能多地發現程序中存在的問題。自己編好程序上機調試運行時,可能有很多你想不到的情況發生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發能力。 2.熟悉程序開發環境、學習計算機系統的操作方法 一個c語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環境下才能進行。所謂環境就是所用的計算機系統硬件、軟件條件,只有學會使用這些環境,才能進行程序開發工作。通過上機實驗,熟練地掌握c語言開發環境,為以后真正編寫計算機程序解決實際問題打下基礎。同時,在今后遇到其它開發環境時就會觸類旁通,很快掌握新系統的使用。 3.學習上機調試程序 完成程序的編寫,決不意味著萬事大吉。你認為萬無一失的程序,實際上機運行時可能不斷出現麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結果顯然是錯誤的。開發環境所提供的編譯系統無法發現這種程序邏輯錯誤,只能靠自己的上機經驗分析判斷錯誤所在。程序的調試是一個技巧性很強的工作,對于初學者來說,盡快掌握程序調試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調試高手一眼就看出錯誤所在。 通過這次為數不多的幾天計算機實踐學習,我們了解了一些關于c語言的知識,理解鞏固了我們c語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時它讓我知道,只要你努力,任何東西都不會太難。C語言思想總結 <五>
A)在棧中只能插入數據
B)在棧中只能刪除數據
C)棧是先進先出的線性表
D)棧是先進后出的線性表
(2)下列數據結構中,插入時不需要移動其他元素的是
A)有序線性鏈表
B)無序線性鏈表
C)棧和隊列
D)以上三種都是
(3)下列敘述中正確的是
A)同一個數據結構不管是采用何種存儲方式,其所占的存儲容量一定是相同的.
B)同一個數據結構采用不同的存儲方式,其所占的存儲容量一般是不同的
C)同一個有序表不管是采用何種存儲方式,都可以使用對分查找法
D)同一個有序表不管是采用何種存儲方式,都不能使用對分查找法
(4)數據結構分為邏輯結構和存儲結構,下列數據結構中不屬于存儲結構的是
A)線性鏈表
B)二叉鏈表
C)棧與隊列
D)循環隊列
(5)下列數據結構中,能直接使用堆排序法進行排序的是
A)完全二叉樹
B)線性鏈表
C)帶鏈的棧
D)帶鏈的隊列C語言思想總結 <六>
C語言思想總結 <七>
C語言思想總結 <八>
C語言思想總結 <九>
C語言思想總結 <十>
C語言思想總結 <十一>
C語言思想總結 <十二>
C語言思想總結 <十三>
C語言思想總結 <十四>
C語言思想總結 <十五>
ys575.COm避坑指南:
C語言思想總結 <十六>
述職報告之家小編為您推薦C語言思想總結專題,歡迎訪問:C語言思想總結
