A. 計算機二級c語言主要考點
引用。。:
數據結構與演算法
1 演算法
演算法:是指解題方案的准確而完整的描述。
演算法不等於程序,也不等計算機方法,程序的編制不可能優於演算法的設計。
演算法的基本特徵:是一組嚴謹地定義運算順序的規則,每一個規則都是有效的,是明確的,此順序將在有限的次數下終止。特徵包括:
(1)可行性;
(2)確定性,演算法中每一步驟都必須有明確定義,不充許有模稜兩可的解釋,不允許有多義性;
(3)有窮性,演算法必須能在有限的時間內做完,即能在執行有限個步驟後終止,包括合理的執行時間的含義;
(4)擁有足夠的情報。
演算法的基本要素:一是對數據對象的運算和操作;二是演算法的控制結構。
指令系統:一個計算機系統能執行的所有指令的集合。
基本運算和操作包括:算術運算、邏輯運算、關系運算、數據傳輸。
演算法的控制結構:順序結構、選擇結構、循環結構。
演算法基本設計方法:列舉法、歸納法、遞推、遞歸、減斗遞推技術、回溯法。
演算法復雜度:演算法時間復雜度和演算法空間復雜度。
演算法時間復雜度是指執行演算法所需要的計算工作量。
演算法空間復雜度是指執行這個演算法所需要的內存空間。
2 數據結構的基本基本概念
數據結構研究的三個方面:
(1)數據集合中各數據元素之間所固有的邏輯關系,即數據的邏輯結構;
(2)在對數據進行處理時,各數據元素在計算機中的存儲關系,即數據的存儲結構;
(3)對各種數據結構進行的運算。
數據結構是指相互有關聯的數據元素的集合。
數據的邏輯結構包含:
(1)表示數據元素的信息;
(2)表示各數據元素之間的前後件關系。
數據的存儲結構有順序、鏈接、索引等。
線性結構條件:
(1)有且只有一個根結點;
(2)每一個結點最多有一個前件,也最多有一個後件。
非線性結構:不滿足線性結構條件的數據結構。
3 線性表及其順序存儲結構
線性表由一組數據元素構成,數據元素的位置只取決於自己的序號,元素之間的相對位置是線性的。
在復雜線性表中,由若干項數據元素組成的數據元素稱為記錄,而由多個記錄構成的線性表又稱為文件。
非空線性表的結構特徵:
(1)且只有一個根結點a1,它無前件;
(2)有且只有一個終端結點an,它無後件;
(3)除根結點與終端結點外,其他所有結點有且只有一個前件,也有且只有一個後件。結點個數n稱為線性表的長度,當n=0時,稱為空表。
線性表的順序存儲結構具有以下兩個基本特點:
(1)線性表中所有元素的所佔的存儲空間是連續的;
(2)線性表中各數據元素在存儲空間中是按邏輯順序依次存放的。
ai的存儲地址為:adr(ai)=adr(a1)+(i-1)k,,adr(a1)為第一個元素的地址,k代表每個元素占的位元組數。
順序表的運算:插入、刪除。 (詳見14--16頁)
4 棧和隊列
棧是限定在一端進行插入與刪除的線性表,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。
棧按照「先進後出」(filo)或「後進先出」(lifo)組織數據,棧具有記憶作用。用top表示棧頂位置,用bottom表示棧底。
棧的基本運算:(1)插入元素稱為入棧運算;(2)刪除元素稱為退棧運算;(3)讀棧頂元素是將棧頂元素賦給一個指定的變數,此時指針無變化。
隊列是指允許在一端(隊尾)進入插入,而在另一端(隊頭)進行刪除的線性表。rear指針指向隊尾,front指針指向隊頭。
隊列是「先進行出」(fifo)或「後進後出」(lilo)的線性表。
隊列運算包括(1)入隊運算:從隊尾插入一個元素;(2)退隊運算:從隊頭刪除一個元素。
循環隊列:s=0表示隊列空,s=1且front=rear表示隊列滿
5 線性鏈表
數據結構中的每一個結點對應於一個存儲單元,這種存儲單元稱為存儲結點,簡稱結點。
結點由兩部分組成:(1)用於存儲數據元素值,稱為數據域;(2)用於存放指針,稱為指針域,用於指向前一個或後一個結點。
2008-2-21 10:07 回復 鬥牛士 黛石Sara 2樓在鏈式存儲結構中,存儲數據結構的存儲空間可以不連續,各數據結點的存儲順序與數據元素之間的邏輯關系可以不一致,而數據元素之間的邏輯關系是由指針域來確定的。
鏈式存儲方式即可用於表示線性結構,也可用於表示非線性結構。
線性鏈表,head稱為頭指針,head=null(或0)稱為空表,如果是兩指針:左指針(llink)指向前件結點,右指針(rlink)指向後件結點。
線性鏈表的基本運算:查找、插入、刪除。
6 樹與二叉樹
樹是一種簡單的非線性結構,所有元素之間具有明顯的層次特性。
在樹結構中,每一個結點只有一個前件,稱為父結點,沒有前件的結點只有一個,稱為樹的根結點,簡稱樹的根。每一個結點可以有多個後件,稱為該結點的子結點。沒有後件的結點稱為葉子結點。
在樹結構中,一個結點所擁有的後件的個數稱為該結點的度,所有結點中最大的度稱為樹的度。樹的最大層次稱為樹的深度。
二叉樹的特點:(1)非空二叉樹只有一個根結點;(2)每一個結點最多有兩棵子樹,且分別稱為該結點的左子樹與右子樹。
二叉樹的基本性質:
(1)在二叉樹的第k層上,最多有2k-1(k≥1)個結點;
(2)深度為m的二叉樹最多有2m-1個結點;
(3)度為0的結點(即葉子結點)總是比度為2的結點多一個;
(4)具有n個結點的二叉樹,其深度至少為[log2n]+1,其中[log2n]表示取log2n的整數部分;
(5)具有n個結點的完全二叉樹的深度為[log2n]+1;
(6)設完全二叉樹共有n個結點。如果從根結點開始,按層序(每一層從左到右)用自然數1,2,….n給結點進行編號(k=1,2….n),有以下結論:
①若k=1,則該結點為根結點,它沒有父結點;若k>1,則該結點的父結點編號為int(k/2);
②若2k≤n,則編號為k的結點的左子結點編號為2k;否則該結點無左子結點(也無右子結點);
③若2k+1≤n,則編號為k的結點的右子結點編號為2k+1;否則該結點無右子結點。
滿二叉樹是指除最後一層外,每一層上的所有結點有兩個子結點,則k層上有2k-1個結點深度為m的滿二叉樹有2m-1個結點。
完全二叉樹是指除最後一層外,每一層上的結點數均達到最大值,在最後一層上只缺少右邊的若干結點。
二叉樹存儲結構採用鏈式存儲結構,對於滿二叉樹與完全二叉樹可以按層序進行順序存儲。
二叉樹的遍歷:
(1)前序遍歷(dlr),首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹;
(2)中序遍歷(ldr),首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹;
(3)後序遍歷(lrd)首先遍歷左子樹,然後訪問遍歷右子樹,最後訪問根結點。
7 查找技術
順序查找的使用情況:
(1)線性表為無序表;
(2)表採用鏈式存儲結構。
二分法查找只適用於順序存儲的有序表,對於長度為n的有序線性表,最壞情況只需比較log2n次。
8 排序技術
排序是指將一個無序序列整理成按值非遞減順序排列的有序序列。
交換類排序法:(1)冒泡排序法,需要比較的次數為n(n-1)/2; (2)快速排序法。
插入類排序法:(1)簡單插入排序法,最壞情況需要n(n-1)/2次比較;(2)希爾排序法,最壞情況需要o(n1.5)次比較。
選擇類排序法:(1)簡單選擇排序法,
最壞情況需要n(n-1)/2次比較;(2)堆排序法,最壞情況需要o(nlog2n)次比較。
B. 全國計算機等級考試二級C語言考試內容有些什麼
分筆試和上機考:
一、筆試 選擇40題,前10題為公共基礎知識
(1)、填空15題,前5題為公共基礎知識
(2)、只有C部分的前10題(即11~20)每題1分,其餘填空選擇都是2分,滿分100分,時間90分鍾。
二、上機 填空、改錯和程序設計題
(1)填空題一般有2到3個空,需要刪除對應的空後,在刪除的位置填上正確的答案。(30分)
(2)、改錯題的錯誤在/********found******/下面,不要改動其它的地方。(2~3個,30分)。
(3)、然後就是程序設計題啦,40分,考試時間90分鍾,上機考試每題完成後一定記得運行。
(2)c語言二級考試考點擴展閱讀
1、熟悉Visual C++6. 0集成開發環境。
2、掌握結構化程序設計的方法,具有良好的程序設計風格。
3、掌握程序設計中簡單的數據結構和演算法並能閱讀簡單的程序。
4、在Visual C++6. 0集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力。
C. 計算機二級 C語言考試的常考點和重點是什麼
我9月份剛考完。基本來說每章的內容都有涉及,筆試重點在於字元、數組、指針、函數、共用體等,上機重點在鏈表、文件。此外,公共基礎也不可忽視。建議買本全真試卷做一下。我用的是新思路的,還不錯。
D. 計算機二級C語言考試內容有那些
二級計算機是國家計算機等級考試的一部分,主要考察的是C語言的計算機編程能力。考核內容包括計算機語言與基礎程序設計能力,要求參試者掌握一門計算機語言。具體考點如下:1、C語言程序的結構。需重點了解程序的構成,main函數和其他函數,源程序的書寫格式。2、數據類型及其運算。包括C的數據類型(基本類型,構造類型,指針類型,無值類型)及其定義方法以及C運算符的種類、運算優先順序和結合性等。3、基本語句。需要了解掌握表達式語句,空語句,復合語句。以及輸入輸出函數的調用,正確輸入數據並正確設計輸出格式等。4、選擇結構程序設計,各類語句以及選擇結構嵌套。5、循環結構程序設計,理解各類循環、語句以及循環的嵌套。6、會一維數組和二維數組的定義、初始化和數組元素的引用。7、庫函數的正確調用,函數的定義方法、正確調用。8、文件操作,如文件的打開、關閉、讀寫、定位。9、地址與指針變數的概念,地址運算符與間址運算符。10、結構體與共同體。11、位運算符的含義和使用。12、編譯預處理等。
E. 計算機二級c語言常見知識點
計算機二級c語言常見知識點
資料庫是為了更容易地組織、存儲和檢索大量數據。資料庫由資料庫管理系統管理,通過資料庫模型和查詢語言來存儲、創建、維護和搜索數據。下面是我整理的關於計算機二級c語言常見知識點,歡迎大家參考!
計算機二級c語言常見知識點 篇1
文件
【考點1】文件類型指針
文件指針是一個指向結構體類型的指針,定義格式為:FILE *指針變數名。在使用文件時,都需要先定義文件指針。
【考點2】文本文件與二進制文件
文本形式存放的是字元的ASCII碼,二進制形式存放的是數據的二進制。例如「100」如果是文本形式就是存儲』1』、 』0』、 』0』三個字元的ASCII碼(00110001 00110000 00110000),如果是二進制形式就把100轉化成二進制(01100100)。
【考點3】打開文件
文件的打開形式:
FILE *fp;
fp=fopen(「c:lab.c」,」rb」);。
fopen函數的前面一部分為文件名,後面一部分為文件的使用方式。其中r代表讀,w代表寫,a代表添加,b代表二進制位的。
【考點4】文件函數
判斷文件結束feof函數,移動文件指針位置fseek函數,獲得文件位置ftell函數,文件位置移到開頭rewind函數,文件字元輸入輸出fgetc函數和fputc函數,文件輸入輸出fscanf函數和fprintf函數,文件字元串輸入輸出fgets函數和fputs函數,讀寫二進制文件fread函數和fwrite函數。
對C語言的深入探討
【考點1】編譯預處理
凡以#開頭的這一行,都是編譯預處理命令行,編譯預處理不加分號,不佔運行時間。宏替換僅是簡單的文本替換,如#define f(x) (x)*(x)和#define f(x) x*x替換f(2+2)時就有區別,前者展開為(2+2)*(2+2),後者為2+2*2+2。
如果源文件f2.c中有#include"f1.c"可以理解為把源文件f1.c原樣包含到f2.c中,使f1.c和f2.c融合到一起成為一個C程序編譯。所以一個C程序必有主函數,但一個C源文件未必有主函數。
【考點2】標識符作用域
局部變數是在函數內或復合語句內定義的變數,作用域為定義它的函數內。局部變數有三種類型:自動auto,寄存器register和靜態static。
自動變數隨著函數的使用與否創建消失;寄存器變數分配在cpu中,沒有內存地址;靜態變數佔用固定存儲單元,在程序執行過程不釋放,直到程序運行結束。
全局變數是在函數外定義的變數,作用域從定義它的位置到整個源文件結束為止,生存期為整個程序運行期間。全局變數都是靜態變數。
【考點3】動態存儲分配
malloc(size)用來創建size個位元組的連續存儲空間,返回值類型為void *型。malloc函數常用於動態創建鏈表結點,如int *p; p=(int *)malloc(sizeof(int));。
calloc(n,size)創建n個同一類型的連續存儲空間,可以理解為n個malloc。
int *p; p=(int *) calloc (10,sizeof(int));。p指向首地址。
free(p)釋放動態分配的存儲單元。
【考點4】main函數的參數
還有main(int argc,char **argv) {}
這種含有參數的題目,是很呆板的題目。第一個參數是表示輸入的字元串的數目,第二個參數是指向存放的字元串。
【考點5】函數指針
函數指針的用法(*f)()記住一個例子:
int add(int x, int y)
{....}
main()
{ int (*f)();
f=add;
}
賦值之後:合法的調用形式為
1、add(2,3);
2、f(2,3);
3、(*f)(2,3);
計算機二級c語言常見知識點 篇2
【考點1】函數的定義
函數:是具有一定功能的一個程序塊;是C 語言的基本組成單位。
函數的首部為:函數類型 函數名(類型1 形參1,類型2 形參2,……)。在函數定義中不可以再定義函數,即不能嵌套定義函數。函數類型默認為int型。
【考點2】庫函數
調用C語言標准庫函數時要包含include命令,include命令行以#開頭,後面是「」或<>括起來的後綴為」.h」的頭文件。以#開頭的一行稱為編譯預處理命令行,編譯預處理不是C語言語句,不加分號,不佔運行時間。
【考點3】函數的返回值
函數通過return語句返回一個值,返回的值類型與函數類型一樣。return語句只執行一次,執行完或函數體結束後退出函數。
【考點4】函數的聲明
函數要「先定義後調用」,或「先聲明再調用後定義」。函數的聲明一定要有函數名、函數返回值類型、函數參數類型,但不一定要有形參的名稱。
【考點5】函數的調用
程序從上往下執行,當碰到函數名後,把值傳給調用函數,當程序得到了返回值或調用函數結束,再順序往下執行。
【考點6】函數的參數及值傳遞
形式參數簡稱形參,是定義函數時函數名後面括弧中的參數。實在參數簡稱實參,是調用函數時函數名後面括弧中的`參數。實參和形參分別占據不同的存儲單元。實參向形參單向傳遞數值。
「傳值」與「傳址」的區別:傳數值的話,形參的變化不會改變實參的變化。傳地址的話,形參的變化就有可能改變實參所對應的量。(考試的重點)
函數的參數,返回數值(示意圖)。
【考點7】函數的遞歸調用
函數直接或間接地調用自己稱為函數的遞歸調用。遞歸調用必須有一個明確的結束遞歸的條件。在做遞歸題時可把遞歸的步驟一步步寫下來,不要弄顛倒了。
【考點8】要求掌握的庫函數
sqrt()算術平方根函數,fabs()絕對值函數,sin()正弦函數,sin(3.14159/180*30);,pow()冪函數,23是由pow(2,3)表示的。
;F. 計算機二級c語言考什麼
計算機二級包括二級C,二級C++,其需要學習的內容如下:
1、二級C
DOS命令,計算機組成原理,多媒體、資料庫操作、計算機網路、C語言程序設計、上機考試。
2、二級C++
按照新大綱需要學習的內容有:C++語言概述、C++語言數據類型、運算符和表達式、基本控制語句、數組、指針與引用、函數、類和對象繼承、模板等內容。
二級考試時間為120分鍾;
系統環境:Windows 7、Visual C++2010 學習版(Visual C++ 2010 Express)、Visual Basic6.0、Access2010、NetBeans、My SQL(Community 5.5.16);Visual Studio 2010、MS Office2010、Python3.5.2 版本及以上 IDLE。
(6)c語言二級考試考點擴展閱讀
教育部考試中心確定從2013年上半年開始,實施無紙化的NCRE,二級6個科目是:二級C,二級VB,二級VFP、二級JAVA、二級ACCESS、二級C++。取消「Delphi語言程序設計」科目(代碼:62)。
自2018年3月考試起,NCRE將執行2018版考試大綱,二級取消「Visual FoxPro 資料庫程序設計」科目(代碼:27),2017年 12 月是其最後一次組考。新增「Python 語言程序設計」科目(代碼:66),考試時長:120 分鍾,2018 年 9 月首次開考。
參考資料:網路——計算機二級
G. 計算機二級C語言上機改錯題考點總結
對上機考試改錯題的做題方法和總結,改錯題的錯誤主要分為以下幾類:
1、if或while語句
若錯誤行是if或者while語句,則要注意以下點:
1)首先判斷是否正確書寫if或while關鍵字;
2)然後看有沒有用小括弧把整個表達式括起來,若沒有則加上小括弧;
3)若條件表達式中有指針變數而且沒有指針運算符時,則加上指針運算符;
4)若if條件表達式中只有一個等於號即數學等號(=),則要改寫成兩個等於號即邏輯等號(= =);
5) 若if條件表達式為其他的比較運算符,則一般是進行逆轉或加一個等於號;
2、for語句
若錯誤行是for語句,則要注意以下幾點:
1)首先判斷for有沒有書寫正確;
2)然後看for中的表達式是不是用分號(;)隔開,若不是則改為分號。
記住是分號(;),不是逗號(,)!
3) 再者,分析for中的三個表達式,是否符合題意;
第一個表達式表示起始條件,
第二個表達式表示終止條件,
第三個表達式表示循環變數的變化。
3、return語句
若錯誤行為return語句,則要注意以下幾點:
1)首先看是不是正確書寫return關鍵字;
2)然後看是不是缺少分號,若是則加上分號即可;
3)再者判斷return後的變數或表達式是否正確;
這種錯誤需要根據題意來分析,分析返回變數或表達式的值和類型。
4、賦值語句
若錯誤行是賦值語句,則要看賦值是否正確,然後看賦值運算符是否寫正確。
5、定義語句
若錯誤行是定義語句,則要注意:
1)首先分析變數類型名是否寫對;
2)然後分析給變數賦初值是否正確;
3)若以上均不是,則看是不是少定義了某個變數或少了花括弧;
6、表達式錯誤問題:
若錯誤行中有整數1除以某個表達式或變數時,必須把整數1改為1.0;若變數或表達式是整型時,則只能進行強制類型轉換。
7、字元串類問題
若錯誤行中有字元串結束符,則特別要要注意結束符有沒有寫錯。但是要區分清楚字元『o』和數字』0』。
8、指針類問題
若錯誤行中有指針變數,並且該變數名之前沒有指針運算符,則一般都是加上指針運算符;
9、函數首部類問題:
若錯誤行是函數首部,則要注意:
1)首先看該行最後有沒有分號,若有則刪掉分號;若中間有分號則要改為逗號;
2)形參和實參類型不一致問題
①若實參是個地址或數組名或指針變數名,則對應的形參肯定是指針或數組;
②若實參是二維數組名,則對應的形參應該是指針數組或是二維數組;
③若後面用到某形參的時候有指針運算符,則該形參比為指針類型;
④若形參是二維數組或指向M個元素的`指針變數,則該二維的長度必須與main中對於數組的第二維的長度相同。
3)函數類型不一致問題
①若函數中沒有return語句,則函數類型為void;
②若函數中有return語句,則函數的類型必須與rerun後的變數類型一致;
記住,調用函數的類型與main中的該函數的類型一致!
10.語法錯誤問題:
1)語句缺少分號。若錯誤號中語句沒有以分號結束則加上分號;
2)變數名不一致。C語言是區分大小寫的,若錯誤行中有大寫字母一般都改為小寫字母;
11.邏輯錯誤問題:
這種題型主要是表達式錯誤,占的題量比較多而且我們沒有統一的做題方法,需要我們具體問題具體分析。
12.書寫錯誤問題:
特別注意我們的注釋部分,注釋是以/*開始,以*/結尾,不能有多餘的,有也只能在/*和*/裡面。注意,比如「/***注釋部分*****/*/」是錯誤的!
H. 計算機二級C語言測試題及答案解析
2017年計算機二級C語言測試題及答案解析
全國計算機等級考試(National Computer Rank Examination,以下簡稱 NCRE),是經原國家教育委員會(現教育部)批准,由教育部考試中心主辦,面向社會,用於考查非計算機專業應試人員計算機應用知識與技能的全國性計算機水平考試體系。下面是2017年計算機二級C語言測試題及答案解析。歡迎閱讀。
2017年計算機二級C語言測試題及答案解析
1.(A )是構成C語言程序的基本單位。
A、函數
B、過程
C、子程序
D、子常式
2.C語言程序從 C 開始執行。
A、 程序中第一條可執行語句
B、 程序中第一個函數
C、 程序中的main函數
D、包含文件中的第一個函數
3、以下說法中正確的是( C )。
A、C語言程序總是從第一個定義的函數開始執行
B、在C語言程序中,要調用的函數必須在main( )函數中定義
C、C語言程序總是從main( )函數開始執行
D、C語言程序中的main( )函數必須放在程序的開始部分
4.下列關於C語言的說法錯誤的是( B ) 。
A、 C程序的工作過程是編輯、編譯、連接、運行
B、 C語言不區分大小寫。
C、 C程序的三種基本結構是順序、選擇、循環
D、C程序從main函數開始執行
5.下列正確的標識符是(C)。
A、-a1
B、a[i]
C、a2_i
D、int t
5~8題為相同類型題
考點:標識符的命名規則
只能由字母、數字、下劃線構成
數字不能作為標識符的開頭
關鍵字不能作為標識符
選項A中的“-” ,選項B中“[”與“]”不滿足(1);選項D中的int為關鍵字,不滿足(3)
6.下列C語言用戶標識符中合法的是(B )。
A、3ax
B、x
C、case
D、-e2 E)union
選項A中的標識符以數字開頭不滿足(2);選項C,E均為為關鍵字,不滿足(3);選項D中的“-”不滿足(1);
7.下列四組選項中,正確的C語言標識符是( C )。
A、 %x
B、a+b
C、a123
D、123
選項A中的“%” ,選項B中“+”不滿足(1);選項D中的標識符以數字開頭不滿足(2)
8、下列四組字元串中都可以用作C語言程序中的標識符的是( A)。
A、print _3d db8 aBc
B、Iam one_half start$it 3pai
C、str_1 Cpp pow while
D、Pxq My->book line# His.age
選項B中的“”,”$” ,選項D中“>”,”#”,”.”,”-”不滿足(1);選項C中的while為關鍵字,不滿足(3)
9.C語言中的簡單數據類型包括(D )。
A、整型、實型、邏輯型
B、整型、實型、邏輯型、字元型
C、整型、字元型、邏輯型
D、整型、實型、字元型
10.在C語言程序中,表達式5%2的結果是 C 。
A、2.5
B、2
C、1
D、3
%為求余運算符,該運算符只能對整型數據進行運算。且符號與被模數相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;
/為求商運算符,該運算符能夠對整型、字元、浮點等類型的數據進行運算,5/2=2
11.如果int a=3,b=4;則條件表達式"aA、 3
B、 4
C、 0
D、1
詳見教材P97.
表達式1?表達式2:表達式3
先計算表達式1,
若表達式1成立, 則選擇計算表達式2,並表達式2的值作為整個大表達式的值;
若表達式1不成立,則選擇計算表達式3,並將表達式3的值作為整個大表達式的值
此題中的aa為3,b為4。a12.若int x=2,y=3,z=4 則表達式x
A、4
B、3
C、2
D、0
E)1
13.C語言中,關系表達式和邏輯表達式的值是( B ) 。
A、0
B、 0或1
C、 1
D、‘T’或’F’
14. 下面( D )表達式的值為4.
A、 11/3
B、 11.0/3
C、 (float)11/3
D、 (int)(11.0/3+0.5)
14~16題為同一類型
詳見教材P54~56.
(1)相同數據類型的元素進行數學運算(+、-、*、/)得到結果還保持原數據類型。
(2)不同數據類型的元素進行數學運算,先要統一數據類型,統一的標準是低精度類型轉換為高精度的數據類型。
選項A,11與3為兩個整數,11/3結果的數據類型也應為整數,因此將3.666666的小數部分全部舍掉,僅保留整數,因此11/3=3.
選項B,11.0為實數,3為整數,因此首先要統一數據類型,將整型數據3轉換為3.0,轉換後數據類型統一為實型數據,選項B變為11.0/3.0,結果的數據類型也應為實型數據,因此選項B 11.0/3=3.666666
選項C,先將整數11強制類型轉換,轉換為實型11.0,因此選項C變為11.0/3,其後計算過程、結果與選項B同
選項D,首先計算11.0/3,其計算過程、結果與選項B同,得到3.666666;再計算3.666666+0.5=4.166666,最後將4.166666強制類型轉換為整型,即將其小數部分全部舍掉,結果為4
15.設整型變數 a=2,則執行下列語句後,浮點型變數b的值不為0.5的是( B)
A、b=1.0/a
B、b=(float)(1/A、
C、b=1/(float)a
D、b=1/(a*1.0)
16. 若“int n; float f=13.8;”,則執行“n=(int)f%3”後,n的值是(A)
A、1
B、4
C、4.333333
D、4.6
“(int)f“表示將f中的值強制類型轉換為整型,即將13.8的小數部分舍掉,轉換為13;然後計算13%3,結果為1,再將結果賦給變數n,因此n的值為1
17. 以下對一維數組a的正確說明是: D
A、char a(10);
B、 int a[];
C、int k=5,a[k];
D、char a[3]={‘a’,’b’,’c’};
詳見教材P143~144,一維數組的定義、初始化
類型符 數組名 [常量表達式]
類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;常量表達式是指數組的長度(數組中包含元素的個數),其值只能是整數,不可以是變數,而且從1開始計數。
選項A,常量表達式只能放在中括弧 [ ]中
選項B,只有在對數組初始化(即賦值)的時候才可以省略數組的長度,B中並未對a進行初始化。
選項C,常量表達式不能為變數。
18.以下能對一維數組a進行初始化的.語句是:( C )
A、int a[5]=(0,1,2,3,4,)
B、 inta(5)={}
C、 int a[3]={0,1,2}
D、 int a{5}={10*1}
詳見教材P145,一維數組的定義、初始化
選項B,D,常量表達式只能放在中括弧 [ ]中
選項A,數組可以看做是若干個相同數據類型元素的有序集合,因此以集合的形式對其初始化,使用{ }對其初始化,選項A用了().
19.在C語言中對一維整型數組的正確定義為 D 。
A、int a(10);
B、int n=10,a[n];
C、int n;a[n];
D、#define N 10
int a[N];
20、已知:int a[10]; 則對a數組元素的正確引用是( D )。
A、a[10]
B、a[3.5]
C、a(5)
D、a[0]
詳見教材P144,數組元素的引用
數組名[下標]
引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變數,且從0開始計數
int a[10]表示定義了一個包含10個整型數據的數組a,數組元素的邏輯地址下標范圍為0~9,即a[0] 表示組中第1個元素; a[1] 表示組中第2個元素; a[2] 表示組中第3個元素; ......;a[9] 表示組中第10個元素.
選項A,超過了數組a的邏輯地址下標范圍;
選項B,邏輯地址下標只能為整數
選項C,邏輯地址下標只能放在[ ]中
21.若有以下數組說明,則i=10;a[a[i]]元素數值是(C)。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A、10
B、9
C、6
D、5
先算a[a[i]]內層的a[i],由於i=10,因此a[i]即a[10].
a[10]對應下面數組中的元素為9. 因此a[a[i]]即為a[9]
a[9]對應下面數組中的元素為6. 因此a[9]即為6
22.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}}; 則數組a的第一維的大小為: ( B )
A、2
B、3
C、4
D、無確定值
5 7
D、3 6 9
二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括弧,數組就有幾行
23.對二維數組的正確定義是(C)
詳見教材P149~152,二維數組的定義、初始化
類型符 數組名 [常量表達式][常量表達式]
二維數組可以看做是矩陣
類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;第一個常量表達式是指數組的行數;第二個常量表達式是指數組的列數;常量表達式的值只能是整數,不可以是變數,而且從1開始計數。
一維數組初始化時可以省略數組長度
二維數組初始化時可以省略行數,但不能省略列數
選項A,B,都省略了列數
選項D,不符合二維數組定義的一般形式,行、列常量表達式應該放在不同的[]中
A、int a[ ][ ]={1,2,3,4,5,6};
B、int a[2] []={1,2,3,4,5,6};
C、int a[ ] [3]={1,2,3,4,5,6};
D、int a[2,3]={1,2,3,4,5,6};
24.已知int a[3][4];則對數組元素引用正確的是__C___
A、a[2][4]
B、a[1,3]
C、a[2][0]
D、a(2)(1)
詳見教材P150,數組元素的引用
數組名[下標] [下標]
引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變數,且從0開始計數
第一個[下標]表示行邏輯地址下標,第二個[下標]表示列邏輯地址下標。
本題圖示詳見P149圖6.7
因此a的行邏輯地址范圍0~2;a的列邏輯地址范圍0~3;
選項A,列邏輯地址下標超過范圍
選項B,D,的引用形式不正確。
25.C語言中函數返回值的類型是由 A 決定的.
A、函數定義時指定的類型
B、 return語句中的表達式類型
C、 調用該函數時的實參的數據類型
D、形參的數據類型
26. 在C語言中,函數的數據類型是指(A )
A、 函數返回值的數據類型
B、 函數形參的數據類型
C、 調用該函數時的實參的數據類型
D、任意指定的數據類型
27.在函數調用時,以下說法正確的是( B)
A、函數調用後必須帶回返回值
B、實際參數和形式參數可以同名
C、函數間的數據傳遞不可以使用全局變數
D、主調函數和被調函數總是在同一個文件里
28. 在C語言中,表示靜態存儲類別的關鍵字是: ( C )
A、 auto
B、 register
C、static
D、extern
29.未指定存儲類別的變數,其隱含的存儲類別為(A )。
A、auto
B、static
C、extern
D、register
30. 若有以下說明語句:
struct student
{ int num;
char name[ ];
float score;
}stu;
則下面的敘述不正確的是: (D )
A、 struct是結構體類型的關鍵字
B、 struct student 是用戶定義的結構體類型
C、 num, score都是結構體成員名
D、 stu是用戶定義的結構體類型名
31.若有以下說明語句:
struct date
{ int year;
int month;
int day;
}brithday;
則下面的敘述不正確的是__C___.
A、 struct是聲明結構體類型時用的關鍵字
B、 struct date 是用戶定義的結構體類型名
C、 brithday是用戶定義的結構體類型名
D、year,day 都是結構體成員名
32. 以下對結構變數stul中成員age的非法引用是 B
struct student
{ int age;
int num;
}stu1,*p;
p=&stu1;
A、 stu1.age
B、 student.age
C、 p->age
D、(*p).age
33.設有如下定義:
struck sk
{ int a;
float b;
}data;
int *p;
若要使P指向data中的a域,正確的賦值語句是 C
A、 p=&a;
B、 p=datA、a;
C、p=&datA、a;
D、*p=datA、a;
34.設有以下說明語句:
typedef struct stu
{ int a;
float b;
} stutype;
則下面敘述中錯誤的是( D )。
A、struct是結構類型的關鍵字
B、struct stu是用戶定義的結構類型
C、a和b都是結構成員名
D、stutype是用戶定義的結構體變數名
35.語句int *p;說明了 C 。
A、p是指向一維數組的指針
B、p是指向函數的指針,該函數返回一int型數據
C、p是指向int型數據的指針 // 指針的定義教材P223
D、p是函數名,該函數返回一指向int型數據的指針
36.下列不正確的定義是(A )。
A、int *p=&i,i;
B、int *p,i;
C.int i,*p=&i;
D、int i,*p;
選項A先定義一個整型指針變數p,然後將變數i的地址賦給p。然而此時還未定義變數i因此編譯器無法獲得變數i的地址。(A與C對比,選項C先定義變數i,則在內存中為i分配空間,因此i在內存空間的地址就可以確定了;然後再定義p,此時可以為p賦i的地址,C正確)
37. 若有說明:int n=2,*p=&n,*q=p,則以下非法的賦值語句是: (D )
A、p=q
B、*p=*q
C、n=*q
D、p=n
p,q同為整型指針變數,二者裡面僅能存放整型變數的地址。
選項A,q中為地址,因此可將此地址賦給p
選項B,*p表示p所指向對象n的內容,即一個整數;*q表示q所指向對象的內容,由於在定義q時為其初始化,將p中n的地址給q,因此p中存放n的地址,*q表示q所指向對象n的內容.因此*p=*q 相當於 n=n;
選項C,n=*q 等價於n=n;
選項D,p中只能存放地址,不能將n中的整數值賦給p
38.有語句:int a[10],;則 B 是對指針變數p的正確定義和初始化。
A、int p=*a;
B、int *p=a;
C、int p=&a;
D、int *p=&a;
選項A,a是數組名,不是指針變數名,因此不可用*標注數組名a
選項C,a是數組名,數組名就是地址,無需再用地址符號。而且在定義指針變數p時,應在變數名前加*,標明p是指針變數
選項D,a是數組名,數組名就是地址,無需再用地址符號。
39.若有說明語句“int a[5],*p=a;”,則對數組元素的正確引用是( C )。
A、a[p]
B、p[a]
C、*(p+2)
D、p+2
首先定義一個整型數組a,a的長度為5,然後定義一個指針變數p,並同時對p進行初始化,將數組a的地址賦給p。因此此時p中存放的數組a的首地址,即數組中第一個元素a[0]的地址。
對於數組元素下標的引用(詳見p144), 一般形式 數組名[下標] 其中下標為邏輯地址下標,從0開始計數,方括弧中的下標可以是變數,可以是表達式,但結果一定要是整數。
選項A,p中存放的是地址,不是整數,不能做數組元素的下標
選項B,a是數組名,數組名就是地址,不是整數,不能做數組元素的下標
選項C,(重點!!!詳見p231~234) p+2表示指向同一數組中的下兩個元素的地址,當前p指向a[0],則p+2表示a[2]的地址,因此*(p+2)表示a[2]的內容
40. 有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;
則數值為9的表達式是 B
A、 *P+9
B、 *(P+8)
C、 *P+=9
D、P+8
(重點!!!詳見p231~234)
首先定義一個整型數組a,a的長度為5,然後定義一個指針變數P,並同時對P進行初始化,將數組a的地址賦給P。因此此時P中存放的數組a的首地址,即數組中第一個元素a[0]的地址。
數組中9對應的是a[8], 選項B,P+8表示數組中後8個元素的地址,即a[8]的地址。*(P+8)則表示該地址內所存放的內容,即a[8]的值。
選項A,*P表示P所指向對象的內容,此時P指向a[0], *P即a[0]的值1. *P+9=1+9=10
選項C,*P表示P所指向對象的內容,此時P指向a[0], *P即a[0]的值。因此*P+=9 即*P =*P+9, 等價於a[0]=a[0]+9.
選項D,P+8表示數組中後8個元素的地址,即a[8]的地址,而非a[8]中的值。
41. 在C語言中,以 D 作為字元串結束標志
A、’ ’
B、’ ’
C、 ’0’
D、’