導讀:C語言是一門通用計算機編程語言,應用廣泛。在面試的時候刷一遍題庫,能夠幫助你加深各方面的知識點,使自己面試成功的幾率更大。下面小編為大家?guī)韈語言面試題及答案,希望能幫助到大家。
一、選擇題(1)~(10)每小題2分,(11)~(50)每小題1分,共60分)
在下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項涂寫在答題卡相應的位置上,答在試卷上不得分。
(1)在數(shù)據結構中,從邏輯上可以把數(shù)據結構分為_______。
A)動態(tài)結構和靜態(tài)結構 B)緊湊結構和非緊湊結構
C)線性結構和非線性結構 D)內部結構和外部結構
答案:C
評析:邏輯結構反映數(shù)據元素之間的邏輯關系,線性結構表示數(shù)據元素之間一對一的關系,非線性結構表示數(shù)據元素之間一對多或多對一的關系。
(2)若進棧序列為l,2,3,4,進棧過程中可以出棧,則下列選項中不可能的一個出棧序列是_______。
A)1,4,3,2 B)2,3,4,l
C)3,1,4,2 D)3,4, 2,1
答案:C
評析:棧是一種后進先出表,在選項c中,先出棧的是3,說明此時棧內必然有1,2,由于l先于2進棧,所以l不可能在2之前出棧,故選項C這種出棧序列是不可能的。
(3)排序方法中,將整個無序序列分割成若干小的子序列并分別進行插入排序的方法,稱為_______。
A)希爾排序 B)冒泡排序 C)插入排序 D)選擇排序
答案:A
評析:希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進行插入排序。
(4)在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關鍵碼值11,所需的關鍵碼比較次數(shù)為_______。
A)2 B)3 C)4 D)5
答案:C
評析:二分法查找是用關鍵碼與線性表的中間元素比較,然后根據比較結果來判斷是結束查找,還是在左邊或者右邊子表按相同的方法繼續(xù)查找。本題中,與ll比較的關鍵碼分別為15,8,10,12四個。
(5)對于n個結點的單向鏈表(無表頭結點),需要指針單元的個數(shù)至少為_______。
A)n-1 B)n C)n+l D)2n
答案:C
評析:在n個結點的單向鏈表(無表頭結點)中,每個結點都有一個指針單元(即指針域),加上頭指針,至少需要n+1個指針單元。
(6)在軟件開發(fā)過程中,軟件結構設計是描述_______。
A)數(shù)據存儲結構 B)軟件體系結構 C)軟件結構測試 D)軟件控制過程
答案:B
評析:從工程管理的角度來看,軟件設計分為兩步完成:概要設計和詳細設計。概要設計(又稱結構設計)將軟件需求轉化為軟件體系結構、確定系統(tǒng)級接口、全局數(shù)據結構或數(shù)據庫模式。
(7)模塊本身的內聚是模塊獨立性的重要性度量因素之一。在7類內聚中,具有最強內聚 的一類是_______。
A)順序性內聚 B)過程性內聚 C)邏輯性內聚 D)功能性內聚
答案:D
評析:內聚性是一個模塊內部各元素間彼此結合的緊密程度的度量。內聚共有7類,它們之間的內聚性由弱到強排列順序為:偶然內聚、邏輯內聚、時間內聚、過程內聚、通信內聚、順序內聚和功能內聚。
(8)數(shù)據存儲和數(shù)據流都是_______,僅僅是所處的狀態(tài)不同。
A)分析結果 B)事件 C)動作 D)數(shù)據
答案:D
評析:數(shù)據流圖有4種成分:源點或終點、處理、數(shù)據存儲和數(shù)據流。數(shù)據存儲是處于靜止狀態(tài)的數(shù)據,數(shù)據流是處于運動中的數(shù)據。
(9)數(shù)據的完整性是指數(shù)據的正確性、有效性和_______。
A)可維護性 B)獨立性 C)安全性 D)相容性
答案:D
評析:數(shù)據模型的完整性規(guī)則是給定的數(shù)據模型中數(shù)據及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據模型的數(shù)據庫狀態(tài)及其狀態(tài)的變化,以保證數(shù)據的正確性、有效性和相容性。
(10)關系代數(shù)運算是以_______為基礎的運算。
A)關系運算 B)謂詞運算 C)集合運算 D)代數(shù)運算
答案:C
評析:關系代數(shù)運算是以關系代數(shù)作為運算對象的一組高級運算的集合。它的基本操作是并、交、差、笛卡爾積,另外還包垂直分割(投影)、水平分割(選擇)、關系的結合(連接)等。
(11)能將高級語言程序轉換成目標語言程序的是_______。
A)調試程序 B)解釋程序 C)編譯程序 D)編輯程序
答案:C
評析:用高級語言編寫的程序稱為“源程序”,而計算機只能識別和執(zhí)行由0和l組成的二進制指令,所以高級語言必須先用一種稱為“編譯程序”的軟件,把源程序翻譯成二進制形式的“目標程序”。
(12) _______是構成c語言程序的基本單位。
A)函數(shù) B)過程 C)子程序 D)子例程
答案:A
評析:c程序是由函數(shù)構成的。一個c源程序至少包含一個main函數(shù),也可以包含一個main函數(shù)和若干個其他函數(shù),因此,函數(shù)是c程序的基本單位。
(13)可以在C語言中用做用戶標識符的是_______。
A)void B)as_b3 C)for D)2c
define _123 -abc Do
WORD If cas SIG
答案:B
評析:在c語言中規(guī)定,標識符只能由字母、數(shù)字和下劃線三種符號所組成,而且第一個字符必須是字母或下劃線。另外還需要注意的是關鍵字不能作標識符。選項A中void,C中for都為關鍵字,D中2c以字母開頭。
(14)若有以下類型說明語句:
char w;int x;float y,z;
則表達式w*x+z-y的結果為________類型。
A)float B)char C)int D)double
答案:A
評析:在進行運算時,不同類型的數(shù)據參加運算,需要先將其轉換成同一類型的數(shù)據,然后再進行運算。轉換的順序由低到高為:char,short→int→unsigned→long→double→float,故結果為float型。
(15)main(()
{ float x=123A56;
printf(“%-5.2f ”,x);
}
以上程序輸出的結果是________。
A)123.4 B)123.5 C)123.45 D)123.46
答案:D
評析:f格式符,用來輸出實數(shù),以小數(shù)的形式輸出。“%-m.nf”的含義是:輸出數(shù)據共占m列,其中n位小數(shù),如果輸出位數(shù)小于m。則右端補空格。如果總長度大于列數(shù),則按實際情況四舍五入輸出。
(16)下面語句的輸出結果是________。
Printf(“%d\n”,strlen(“\t\”\065\xff\n”));
A)14 B)8
C)5 D)輸出項不合法,無正常輸出
答案:C
評析:在c語言中,以“\”開頭的字符均為轉義字符,其中“\”后可跟l~3位八進制數(shù)或在“\”后跟字母x及l(fā)~2位十六進制數(shù),以此來代表一個特定的字符。
(17)下列程序的輸出結果是________。
main()
{ int a=0,b=0,c=0;
if(++a>0lI++b>0)++c;
printf(“\na=%d,b=%d,c=%d”,a,b,C);
}
A)a=0,b=0,c=0 B)a=l,b=l,c=1
C)a=l,b=O, c=I D)a=0, b=1.c=1
答案:C
評析:
“︱︱”是或運算,它有個“短路”的特點需要特別注意,當“︱︱”運算符左邊的表達式的值為真時,則程序就不再對“︱︱”右邊的表達式的值去進行運算,而是使得整個表達式的值直接為真。
(18)下列程序的輸出結果是_________。
Main()
{ int i;
for(i=1;i+l;i++)
{ if(i>4){printlf(”%d”,i++);break;}
}
printf(“%d”,i++);
}
A)55 B)56
C)程序錯誤,沒有輸出 D)循環(huán)條件永遠為真,死循環(huán)
答案:B
評析:本程序中有個for循環(huán),但注意到for循環(huán)的條件是“i+l”,也就是只要i+l的值為真(非零值均為真),就執(zhí)行循環(huán)。當i=l的時,i+l的值為真,判斷if條件不成立,執(zhí)行i++,輸出i的值為5。
(19)下列程序的輸出結果是_________。
#define A 100
main()
{ int i=O,sum=O;
do{ if(I==(i/2)*2)continue;
sum+=i;
}while(++i<A);
printf(“%d\n”,sum);
}
A)2500 B)2050 C)4 D)O
答案:A
評析:本題程序的功能是求1到_99之問(包括1和99)所有奇數(shù)之和。程序中的while循環(huán)的終止條件為++i=100,在while循環(huán)體內,如果i是偶數(shù),則執(zhí)行continue,跳過這一次循環(huán),去執(zhí)行下一次循環(huán),否則求和。最后輸出的值是1到99之間(包括l和99)所有奇數(shù)之和(1+99)*50/2=2500。
(20)下列程序的輸出結果是_________。
main()
{ int I=3;
switch(i)
{ case 1:
case 2:printf(”%d”,i);
case 3:
case 4:break;
default:printf(”O(jiān)K”);
}
}
A)0 B)3 C)OK D)沒有任何輸出
答案:D
評析:在本題中,i的值為3,由于“case 3:”后面沒有break語句,所以繼續(xù)向下執(zhí)行“case 4:”后面的語句,由于“case 4:”后面的語句為break強行退出switch語句,所以,本題沒有任何輸出。
(21)下列程序執(zhí)行后的輸出結果是________。
main()
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,k=2:
for(I=0;i<3;i++)
{printf(”%d”,m[k][i]);}
}
A)456 B)258 C)369 D)789
答案:C
評析:根據二維數(shù)組的定義得出:m[O][O]=1,m[O][1]=4,m[O][2]=7,m[1][0]=2,rail][1]=5,m[1][2]=8,m[2][0]=3,m[2][l]=6,m[2][2]=9,所以本題的輸出是第3行的值m[2][0],m[2][1],m[2][2],即369。
(22)設已定義洱口k為int類型變量,則以下for循環(huán)語句_________。
for(i=0;k=-1,k=1;i++,k++)
printf(”****\n”);
A)判斷循環(huán)結束的條件不合法 B)是無限循環(huán)
C)循環(huán)一次也不執(zhí)行 D)循環(huán)只執(zhí)行一次
答案:B
評析:本題定義了一個for循環(huán),它的循環(huán)變量是i,但由于本題并沒有去設置循環(huán)條件,所以循環(huán)的條件永遠默認為真,即無限次執(zhí)行循環(huán)。
(23)下面程序的輸出結果是___________。
unsigned fun(unsigned num)
{ unsigned k=1;
do{
k*=num%lO;
num/=lO;
}while(num);
return(k);
}
main()
{ unsigned n。26;
printf(”%d\n”,fun(n));
}
A)0 B)4 C)12 D)無限次循環(huán)
答案:C
評析:本題定義了一個fun函數(shù),用于num求和,具體執(zhí)行過程如下:
num=26:k=k*(num%10)=1*(26%10),所以k=6,num=num/10=2;
num=2:k=k*(num%10)=6*(2%10),所以k=12,num=num/lO=O;
num=O:while條件不成立,所以返回k的值12.
(24)已知字母A的ASCII碼值是65,字母a的ASCII碼值是97,以下程序_______。
main()
{ char a=‘A’;
int b=20;
printf(“%d,%o”,(a=a+a,a+b,b),a+‘a’-‘A’,b);
}
A)表達式非法,輸出零或不確定值
B)因輸出項過多,無輸出或輸出不確定值
C)輸出結果為20,141
D)輸出結果為20,141,20
答案:C
評析:本題中首先輸出逗號表達式“a=a+a,a+b,b”的值,即是20。然后以八進制的形式輸出a+‘a’-‘A’的值為97對應的八進制數(shù)141,由于最后一個表達式b沒有對應輸出格式的輸出項表列就不會輸出。
(25)C語言函數(shù)返回值的類型是由__________決定的。
A)return語句中的表達式類型 B)調用函數(shù)的主調函數(shù)類型
C)調用函數(shù)時臨時 D)定義函數(shù)時所指定的函數(shù)類型
答案:D
評析:函數(shù)值的類型應當是在定義函數(shù)時指定的。在定義函數(shù)時對函數(shù)值說明的類型一般應該和return語句中的表達式類型一致,如果不_致,則以函數(shù)類型為準,即函數(shù)類型決定返回值的類型。
(26)下列程序執(zhí)行后輸出的結果是___________。
int d=l:
fun(int p)
{ int d。5;
d+=p++;
printf(”%d,”,d);
}
main()
{ int a=3;
fun(a);
d+=a++:
printf(”%d\n”,d);
}
A)8,12 B)9,13 C)8,4 D)9,5
答案:C
評析:本題執(zhí)行過程如下:首先調用fun函數(shù),使得實參a的值3傳遞給形參p,得到局部變量d=8,打印出局部變量d的值8;返回主函數(shù)執(zhí)行“d+=a++”,此處的d為全局變量,所以d=1+3=4(由于本題是值傳遞,所以在函數(shù)fun中對p值的改變并不能引起a的改變),故本題的輸出是8,4。
(27)已知下面的程序段,正確的判斷是_________。
#define A 3
#define B(A)((_A+1)‘a)
int a=3:
……
X=3*(A+B(7));
A)程序錯誤,不允許嵌套定義 B)X=93
C)X=8l D)程序錯誤,宏定義不允許有參數(shù)
答案:C
評析:本題的宏定義是合法的,宏定義展開為3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。
(28)定義int*swap()指的是_______。
A)一個返回整型值的函數(shù)swap()
B)一個返回指向整型值指針的函數(shù)swap()
C)一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值
D)以上說法均錯
答案:B
評析:一個函數(shù)可以帶回一個整型值、字符值、實型值等,但是也可以帶回指針型數(shù)據,即地址。本題的定義中,包括括號和·號,由于f)優(yōu)先級高于t。故它是一個返回整型指針的函數(shù)。
(29)以下程序段的輸出結果是__________。
main()
{ char s1[10],s2[10],s3[10];
scanf(”%s”,s1);gets(s2);gets(s3);
puts(s 1);puts(s2);puts(s3);
}
輸入數(shù)據如下: (此處代表回車符)
aaa
bbb
A)aaa B)aaa C)aaa\0bbb\0 D)aaabbb
bbb
bbb
答案:B
評析:scanf是標準的輸入函數(shù),在輸入字符串aaa時,實際的內容為“aaa 邹城市| 镇宁| 肇庆市| 手游| 大理市| 游戏| 修水县| 肃南| 正阳县| 瑞金市| 新绛县| 蚌埠市| 高雄县| 丹江口市| 中阳县| 来凤县| 汝州市| 武宣县| 剑川县| 英山县| 资溪县| 辉南县| 临夏县| 澄江县| 射洪县| 高唐县| 遂川县| 前郭尔| 夹江县| 油尖旺区| 蕲春县| 江华| 江源县| 保靖县| 塔河县| 陈巴尔虎旗| 绍兴市| 平安县| 海伦市| 顺平县| 泗阳县|