- 相關推薦
C語言軟件開發(fā)筆試題目(精選5套)
在日常學習、工作生活中,我們都不可避免地會接觸到試題,試題有助于被考核者了解自己的真實水平。什么樣的試題才是好試題呢?下面是小編收集整理的C語言軟件開發(fā)筆試題目,希望對大家有所幫助。
C語言軟件開發(fā)筆試題目 1
(1)什么是預編譯,何時需要預編譯:
答案:
1、總是使用不經(jīng)常改動的大型代碼體。
2、程序由多個模塊組成,所有模塊都使用一組標準的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預編譯為一個預編譯頭。
預編譯又稱為預處理,是做些代碼文本的替換工作。處理#開頭的指令嗎,比如拷貝#include包含的文件代碼,#define宏定義的替換,條件編譯等,就是為編譯做的預備工作的階段,主要處理#開始的預編譯指令,預編譯指令指示了在程序正式編譯前就由編譯器進行的.操作,可以放在程序中的任何位置。c編譯系統(tǒng)在對程序進行通常的編譯之前,先進行預處理。c提供的預處理功能主要有以下三種:1)宏定義 2)文件包含 3)條件編譯。
(2)char* const p, char const* p,const char*p 上述三個有什么區(qū)別?
答案:
char * const p; //常量指針,p 的值不可以修改
char const * p;//指向常量的指針,指向的常量值不可以改
const char *p;//和char const *p等價
(3)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 是數(shù)組變量,它們有各自的內存空間;而str5,str6,str7,str8是指針,它們指向相同的常量區(qū)域,
(4)以下代碼中的兩個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;
答案:函數(shù)內的sizeof 有問題。根據(jù)語法,sizeof 如用于數(shù)組,只能測出靜態(tài)數(shù)組的大小,無法檢測動態(tài)分配的或外部數(shù)組大小。函數(shù)外的str 是一個靜態(tài)定義的數(shù)組,因此其大小為6,因為還有\(zhòng)0,函數(shù)內的str 實際只是一個指向字符串的指針,沒有任何額外的與數(shù)組相關的信息,因此sizeof 作用于上只將其當指針看,一個指針為4 個字節(jié),因此返回4。
(5)一個32 位的機器,該機器的指針是多少位答案:
指針是多少位只要看地址總線的位數(shù)就行了。80386 以后的機子都是32 的數(shù)據(jù)總線。所以指針的位數(shù)就是4 個字節(jié)了。
C語言軟件開發(fā)筆試題目 2
(1)算法的時間復雜度是指_______。
A)執(zhí)行算法程序所需要的時間
B)算法程序的長度
C)算法執(zhí)行過程中所需要的基本運算次數(shù)
D)算法程序中的指令條數(shù)
答案:C
評析:所謂算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量。
(2)下列敘述中正確的是________。
A)線性表是線性結構B)棧與隊列是非線性結構
C)線性鏈表是非線性結構D)二叉樹是線性結構
答案:A
評析:一般將數(shù)據(jù)結構分為兩大類型:線性結構與非線性結構。線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。
(3)下面關于完全二叉樹的敘述中,錯誤的是_________。
A)除了最后一層外,每一層上的結點數(shù)均達到最大值
B)可能缺少若干個左右葉子結點
C)完全二叉樹一般不是滿二叉樹
D)具有結點的完全二叉樹的深度為[log2n]+1
答案:B
評析:滿二叉樹指除最后一層外每一層上所有結點都有兩個子結點的二叉樹。完全二叉樹指除最后一層外,每一層上的`結點數(shù)均達到最大值,在最后一層上只缺少右邊的若干子結點(葉子結點)的二叉樹。
C語言筆試題答案篇
(1)結構化程序設計主要強調的是_________。
A)程序的規(guī)模B)程序的易讀性
C)程序的執(zhí)行效率D)程序的可移植性
答案:B
評析:結構化程序設計主要強調的是結構化程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試,以保證程序的正確性。
(2)在軟件生命周期中,能準確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是________。
A)概要設計B)詳細設計C)可行性分析D)需求分析
答案:D
評析:需求分析是對待開發(fā)軟件提出的需求進行分析并給出詳細定義,即準確地確定軟件系統(tǒng)的功能。編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。
(3)數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是_________。
A)控制流B)加工C)數(shù)據(jù)存儲D)源和潭
答案:A
評析:數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。數(shù)據(jù)流圖中的主要圖形元素有:加工(轉換)、數(shù)據(jù)流、存儲文件(數(shù)據(jù)源)、源和潭。
(4)軟件需求分析一般應確定的是用戶對軟件的__________。
A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求
答案:D
評析:軟件需求分析中需要構造一個完全的系統(tǒng)邏輯模型,理解用戶提出的每一功能與性能要求,是用戶明確自己的任務。因此,需求分析應確定用戶對軟件的功能需求和非功能需求。
C語言軟件開發(fā)筆試題目 3
(1)下述關于數(shù)據(jù)庫系統(tǒng)的敘述中正確的是________。
A)數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余
B)數(shù)據(jù)庫系統(tǒng)避免了一切冗余
C)數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致
D)數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)
答案:A
評析:由數(shù)據(jù)的共享自身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數(shù)據(jù)的不一致性。所謂數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)的不同出現(xiàn)應保持相同的值。
(2)關系表中的每一橫行稱為一個________。
A)元組B)字段C)屬性D)碼
答案:A
評析:在關系數(shù)據(jù)庫中,關系模型采用二維表來表示,簡稱“表”。二維表是由表框架及表元組組成。在表框架中,按行可以存放數(shù)據(jù),每行數(shù)據(jù)稱為元組。
(3)數(shù)據(jù)庫設計包括兩個方面的設計內容,它們是________。
A)概念設計和邏輯設計B)模式設計和內模式設計
C)內模式設計和物理設計D)結構特性設計和行為特性設計
答案:A
評析:數(shù)據(jù)庫設計可分為概念設計與邏輯設計。概念設計的目的是分析數(shù)據(jù)間內在語義關聯(lián),在此基礎上建立一個數(shù)據(jù)的抽象模型。邏輯設計的主要工作是將ER圖轉換為指定的RDBMS中的關系模型。
(4)請讀程序:
#include
main
{
int a;float b,c;
scanf(“%2d%3P%4f’,&a,&b,&C);
printf(” a=%d,b=%ec。%f ”,a,b,C);
}
若運行時從鍵盤上輸入9876543210l,則上面程序的輸出結果是________。
A)a=98,b=765,c=432 1
B)a=1 0,b=432,c=8765
C)a=98,b=765.000000,c=432 1.000000
D)a=98,b=765.0,c=432 1.0
答案:C
評析:scanf把用戶從鍵盤錄入的數(shù)字的第1、2位存入整型變量a;把第3、4、5位存入單精度實型變量b,把第6、7、8、9位存入單精度實型變量c,用戶錄入的第10位被scanf遺棄。這時變量a、b、c的值分別為:98、765.000000、4321.000000。
(5)一個良好的算法由下面的基本結構組成,但不包括__________。
A)順序結構B)選擇結構C)循環(huán)結構D)跳轉結構
答案:D
評析:1966年,Bohra和Jacopini提出了以下三種基本結構,用這三種基本結構作為表示一個良好算法的基本單元:1、順序結構;2、選擇結構;3、循環(huán)結構。
(6)請選出以下程序的輸出結果________。
#include
sub(x,y,z)
int x,y,星符號z:
{星符號z變化,所以此次函數(shù)被調用后,a的值為y-x=-5,同理可知,在sub(7,a,&b)后,b的`值發(fā)生變化,其值為-5-7=-12,在sub(a,b,&C)后,c的值發(fā)生變化,其值為-12-(-5)=-7。
(7)下面程序在屏幕上的輸出是________。
main
{
printf(”ab c”);
}
A)ab c B)a c C)abc D)ab c
答案:B
評析:c語言中允許使用一種特殊形式的字符常量,、就是以一個“”開頭的字符序列,這樣的字符稱為“轉義字符”。常用的轉義字符有:,換行;,水平制表;,退格;,回車。
(8)若x是整型變量,pb是基類型為整型的指針變量,則正確的賦值表達式是_______。
A)pb=&x; B)pb=x; C)星符號pb=星符號、/)還包括自增自減運算符(++、–),在c語言解析表達式時,它總是進行貪婪咀嚼,這樣,該表達式就被解析為i++ ++ +i,顯然該表達式不合c語言語法。
(10)若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元
int星符號int) D)(int星符號)
答案:D
評析:不論p是指向什么類型的指針變量,都可以通過強制類型轉換的方法使之類型一致,強制類型轉換的格式為(數(shù)據(jù)類型+)。
(11)下面程序輸出的結果是__________。
main
{
int i=5,J=9,x;
x=(I==j?i:(j=7));
printf(” %d,%d”,I,J);
}
A)5,7 B)5,5 C)語法錯誤D)7,5
答案:A
評析:條件表達式的一般形式為:表達式I?表達式2:表達式3;先求解表達式1,若為真則求解表達式2;若表達式l的值為假,則求解表達式3。本題中先判斷i==j,不等,執(zhí)行j=7;然后執(zhí)行x=7。故本題為A。
C語言軟件開發(fā)筆試題目 4
(1)下列敘述中正確的是
A.棧是“先進先出”的線性表
B.隊列是“先進先出”的線性表
C.循環(huán)隊列是非線性結構
D.有序性表既可以采用順序存儲結構,也可以采用鏈式存儲結構
(2)支持子程序調用的數(shù)據(jù)結構是
A.棧
B.樹
C.隊列
D.二叉樹
(3)某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數(shù)是
A.10
B.8
C.6
D.4
(4)下列排序方法中,最壞情況下比較次數(shù)最少的是
A.冒泡排序
B.簡單選擇排序
C.直接插入排序
D.堆排序
(5)軟件按功能可以分為:應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是
A.編譯軟件
B.操作系統(tǒng)
C.教務管理系統(tǒng)
D.匯編程序
(6)下面敘述中錯誤的是
A.軟件測試的目的`是發(fā)現(xiàn)錯誤并改正錯誤
B.對被調試的程序進行“錯誤定位”是程序調試的必要步驟
C.程序調試通常也稱為Debug
D.軟件測試應嚴格執(zhí)行測試計劃,排除測試的隨意性
(7)耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是
A.提高耦合性降低內聚性有利于提高模塊的獨立性
B.降低耦合性提高內聚性有利于提高模塊的獨立性
C.耦合性是指一個模塊內部各個元素間彼此結合的緊密程度
D.內聚性是指模塊間互相連接的緊密程度
(8)數(shù)據(jù)庫應用系統(tǒng)中的核心問題是
A.數(shù)據(jù)庫設計
B.數(shù)據(jù)庫系統(tǒng)設計
C.數(shù)據(jù)庫維護
D.數(shù)據(jù)庫管理員培訓
(9)有兩個關系R,S如下:
R
ABC
a32
b01
c21
S
AB
a3
b0
c2
由關系R通過運算得到關系S,則所使用的運算為
A.選擇
B.投影
C.插入
D.連接
(10)將E-R圖轉換為關系模式時,實體和聯(lián)系都可以表示為
A.屬性
B.鍵
C.關系
D.域
C語言軟件開發(fā)筆試題目 5
。1)下列數(shù)據(jù)結構中,屬于非線性結構的是
A.循環(huán)隊列
B.帶鏈隊列
C.二叉樹
D.帶鏈棧
。2)下列數(shù)據(jù)結果中,能夠按照“先進后出”原則存取數(shù)據(jù)的是
A.循環(huán)隊列
B.棧
C.隊列
D.二叉樹
。3)對于循環(huán)隊列,下列敘述中正確的是
A.隊頭指針是固定不變的
B.隊頭指針一定大于隊尾指針
C.隊頭指針一定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
(4)算法的空間復雜度是指
A.算法在執(zhí)行過程中所需要的計算機存儲空間
B.算法所處理的數(shù)據(jù)量
C.算法程序中的語句或指令條數(shù)
D.算法在執(zhí)行過程中所需要的臨時工作單元數(shù)
。5)軟件設計中劃分模塊的一個準則是
A.低內聚低耦合
B.高內聚低耦合
C.低內聚高耦合
D. 高內聚高耦合
(6)下列選項中不屬于結構化程序設計原則的是
A.可封裝。
B. 自頂向下
C.模塊化
D. 逐步求精
。7)軟件詳細設計產(chǎn)生的圖如下:
該圖是
A.N-S圖
B.PAD圖
C.程序流程圖
D. E-R圖
(8)數(shù)據(jù)庫管理系統(tǒng)是
A.操作系統(tǒng)的一部分
B.在操作系統(tǒng)支持下的系統(tǒng)軟件
C.一種編譯系統(tǒng)
D. 一種操作系統(tǒng)
。9)在E-R圖中,用來表示實體聯(lián)系的圖形是
A.橢圓圖
B.矩形
C.菱形
D. 三角形
(10)有三個關系R,S和T如下:
其中關系T由關系R和S通過某種操作得到,該操作為
A.選擇
B.投影
C.交
D.并
。11)以下敘述中正確的是
A.程序設計的任務就是編寫程序代碼并上機調試
B.程序設計的任務就是確定所用數(shù)據(jù)結構
C.程序設計的任務就是確定所用算法
D.以上三種說法都不完整
(12)以下選項中,能用作用戶標識符的是
A.void
B.8_8
C._0_
D.unsigned
。13)閱讀以下程序
#include
main()
{ int case; float printF;
printf(“請輸入2個數(shù):”);
scanf(“%d %f”,&case,&pjrintF);
printf(“%d %f ”,case,printF);
}
該程序編譯時產(chǎn)生錯誤,其出錯原因是
A.定義語句出錯,case是關鍵字,不能用作用戶自定義標識符
B.定義語句出錯,printF不能用作用戶自定義標識符
C.定義語句無錯,scanf不能作為輸入函數(shù)使用
D.定義語句無錯,printf不能輸出case的值
。14)表達式:(int)((double)9/2)-(9)%2的值是
A.0
B.3
C.4
D.5
(15)若有定義語句:int x=10;,則表達式x-=x+x的值為
A.-20
B.-10
C.0
D.10
(16)有以下程序
#include
main()
{ int a=1,b=0;
printf(“%d,”,b=a+b);
printf(“%d ”,a=2*b);
}
程序運行后的輸出結果是
A.0,0
B.1,0
C.3,2
D.1,2
。17)設有定義:int a=1,b=2,c=3;,以下語句中執(zhí)行效果與其它三個不同的是
A.if(a>B. c=a,a=b,b=c;
B.if(a>B. {c=a,a=b,b=c;}
C.if(a>B. c=a;a=b;b=c;
D.if(a>B. {c=a;a=b;b=c;}
。18)有以下程序
#include
main()
{ int c=0,k;
for (k=1;k<3;k++)
switch (k)
{ default: c+=k
case 2: c++;break;
case 4: c+=2;break;
}
printf(“%d ”,C.;
}
程序運行后的輸出結果是
A.3
B.5
C.7
D.9
(19)以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是
A.if((a>b)&&(b>C.) k=1;
else k=0;
B.if((a>b)||(b>C. k=1;
else k=0;
C.if(a<=B. k=0;
else if(b<=C.k=1;
D.if(a>B. k=1;
else if(b>C.k=1;
else k=0;
20)有以下程序
#include
main()
{ char s[]={“012xy”};int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>=’a’&&s[i]<=’z’) n++;
printf(“%d ”,n);
}
程序運行后的輸出結果是
A.0
B.2
C.3
D.5
(21)有以下程序
#include
main()
{ int n=2,k=0;
while(k++&&n++>2);
printf(“%d %d ”,k,n);
}
程序運行后的輸出結果是
A.0 2
B.1 3
C.5 7
D.1 2
。22)有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是
A.char a=’a’;
B.char a=’ ’;
C.char a=’aa’;
D.char a=’x2d’;
。23)有以下程序
#include
main()
{ char c1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d ”,c1,c2);
}
已知字母A的ASCII碼為65,程序運行后的輸出結果是
A.E,68
B.D,69
C.E,D
D.輸出無定值
。24)有以下程序
#include
void fun(int p)
{ int d=2;
p=d++; printf(“%d”,p);}
main()
{ int a=1;
fun(a); printf(“%d ”,a);}
程序運行后的'輸出結果是
A.32
B.12
C.21
D.22
(25)以下函數(shù)findmax擬實現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯導致不能實現(xiàn)預定功能
#define MIN -2147483647
int findmax (int x[],int n)
{ int i,max;
for(i=0;i
{ max=MIN;
if(max
return max;
}
造成錯誤的原因是
A.定義語句int i,max;中max未賦初值
B.賦值語句max=MIN;中,不應給max賦MIN值
C.語句if(max
D.賦值語句max=MIN;放錯了位置
。26)有以下程序
#include
main()
{ int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(“%d,%d,%d,%d ”,m,n,*p,*q);
}
程序運行后的輸出結果是
A.1,2,1,2
B.1,2,2,1
C.2,1,2,1
D.2,1,1,2
。27)若有定義語句:int a[4][10],*p,*q[4];且0≤i<4,則錯誤的賦值是
A.p=a
B.q[i]=a[i]
C.p=a[i]
D.p=&a[2][1]
(28)有以下程序
#include
#include
main()
{ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];
printf(“%d,”,strlen(p));printf(“%s ”,p);
}
程序運行后的輸出結果是
A.9,One*World
B.9,One*Dream
C.10,One*Dream
D.10,One*World
。29)有以下程序
#include
main()
{ int a[ ]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{ case 0:switch(a[i]%2)
{case 0:a[i]++;break;
case 1:a[i]--;
}break;
case 1:a[i[=0;
}
for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“ ”);
}
A.3 3 4 4
B.2 0 5 0
C.3 0 4 0
D.0 3 0 4
。30)有以下程序
#include
#include
main()
{ char a[10]=”abcd”;
printf(“%d,%d ”,strlen(a),sizeof(a));
}
程序運行后的輸出結果是
A.7,4
B.4,10
C.8,8
D.10,10
。31)下面是有關C語言字符數(shù)組的描述,其中錯誤的是
A.不可以用賦值語句給字符數(shù)組名賦字符串
B.可以用輸入語句把字符串整體輸入給字符數(shù)組
C.字符數(shù)組中的內容不一定是字符串
D.字符數(shù)組只能存放字符串
。32)下列函數(shù)的功能是
fun(char * a,char * b)
{ while((*b=*a)!=’’) {a++,b++;} }
A.將a所指字符串賦給b所指空間
B.使指針b指向a所指字符串
C.將a所指字符串和b所指字符串進行比較
D.檢查a和b所指字符串中是否有’’
(33)設有以下函數(shù)
void fun(int n,char * s) {……}
則下面對函數(shù)指針的定義和賦值均是正確的是
A.void (*pf)(); pf=fun;
B.viod *pf(); pf=fun;
C.void *pf(); *pf=fun;
D.void (*pf)(int,char);pf=&fun;
。34)有以下程序
#include
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a);printf(“%d ”,s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序運行以后的輸出結果是
A.7
B.8
C.9
D.10
。35)有以下程序
#include
#define f(x) x*x*x
main()
{ int a=3,s,t;
s=f(a+1);t=f((a+1));
printf(“%d,%d ’,s,t);
}
程序運行后的輸出結果是
A.10,64
B.10,10
C.64,10
D.64,64
。36)下面結構體的定義語句中,錯誤的是
A.struct ord {int x;int y;int z;}; struct ord a;
B.struct ord {int x;int y;int z;} struct ord a;
C.struct ord {int x;int y;int z;} a;
D.struct {int x;int y;int z;} a;
(37)設有定義:char *c;,以下選項中能夠使字符型指針c正確指向一個字符串的是
A.char str[ ]=”string”;c=str;
B.scanf(“%s”,C.;
C.c=get);
D.*c=”string”;
。38)有以下程序
#include
#include
struct A
{ int a; char b[10]; double c;};
struct A f(struct A t);
main()
{ struct A a={1001,”ZhangDa”,1098.0};
a=f(a);jprintf(“%d,%s,%6.1f ”,a.a,a.b,a.C.;
}
struct A f(struct A t)
( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )
程序運行后的輸出結果是
A.1001,ZhangDa,1098.0
B.1001,ZhangDa,1202.0
C.1001,ChangRong,1098.0
D.1001,ChangRong,1202.0
。39)若有以下程序段
int r=8;
printf(“%d ”,r>>1);
輸出結果是
A.16
B.8
C.4
D.2
。40)下列關于C語言文件的敘述中正確的是
A.文件由一系列數(shù)據(jù)依次排列組成,只能構成二進制文件
B.文件由結構序列組成,可以構成二進制文件或文本文件
C.文件由數(shù)據(jù)序列組成,可以構成二進制文件或文本文件
D.文件由字符序列組成,其類型只能是文本文件
【C語言軟件開發(fā)筆試題目】相關文章:
C語言筆試題目10-09
C語言筆試系列題目收集分享08-23
C/C++筆試題目大全08-22
C/C++ 筆試、面試題目05-30
金正科技機試C語言筆試題目07-11
C++類型筆試題目08-01
C++筆試題目分享08-07
文思c++筆試題目10-12
普天C++筆試題目06-10