c語(yǔ)言上機試題
C語(yǔ)言能以簡(jiǎn)易的方式編譯、處理低級存儲器。它是一門(mén)面向過(guò)程的、抽象化的通用程序設計語(yǔ)言,廣泛應用于底層開(kāi)發(fā)。一般只比匯編語(yǔ)言代碼生成的目標程序效率低10%~20%。因此,C語(yǔ)言可以編寫(xiě)系統軟件。所以,像這類(lèi)編程類(lèi)的課程沒(méi)有一定的試題練習是不能真正把知識學(xué)到家的。
下半年計算機二級c語(yǔ)言基礎試題
任何設計活動(dòng)都是在各種約束條件和相互矛盾的需求之間尋求一種平衡,程序設計也不例外。下面是小編收集的關(guān)于計算機二級c語(yǔ)言基礎試題,希望大家認真閱讀!
下半年計算機二級c語(yǔ)言基礎試題1
一、選擇:
1.給出以下定義:
char acX[ ]= "abcdefg";
char acY[ ]= {'a','b','c','d','e','f','g'};
則正確的敘述為( )
A) 數組acX和數組acY等價(jià) B) 數組acX和數組acY的長(cháng)度相同
C) 數組acX的長(cháng)度大于數組acY的長(cháng)度 D) 數組acX的長(cháng)度小于數組acY的長(cháng)度
答案:C
2.
void example(char acHello[])
{
printf("%d", sizeof(acHello));
return;
}
void main()
{
char acHello[] = "hello";
example(acHello);//數組名稱(chēng)作參數,傳的是地址,一個(gè)地址占四個(gè)字節
return;
}
的輸出是
A 4 B 5 C 6 D不確定
答案:A
3. 有以下程序段
char acArr[]= "ABCDE";
2017年全國計算機二級c語(yǔ)言考試題庫
C語(yǔ)言的設計目標是提供一種能以簡(jiǎn)易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語(yǔ)言。下面是小編整理的關(guān)于全國計算機二級c語(yǔ)言考試試題,歡迎參考!
5.3 填空題
1.如果將調用一個(gè)函數的'過(guò)程分為3個(gè)步驟,第1步是轉去執行被調用函數 ,第2步是執行被調用函數的語(yǔ)句 ,第3步是返回操作。
2.函數的存儲類(lèi)分兩種,它們分別是外部 函數和內部函數,其中內部 函數的存儲類(lèi)說(shuō)明不可省略,該說(shuō)明符是 static 。
3.使用關(guān)鍵字inline說(shuō)明的函數稱(chēng)為內聯(lián) 函數,具有相同函數名但具有不同實(shí)現的函數稱(chēng)為重載 函數。
4.在調用一個(gè)函數過(guò)程中可以直接或間接地調用該函數,則該函數稱(chēng)為被調用 函數。這種調用稱(chēng)為嵌套 調用。
5.在引用調用中,函數實(shí)參用變量名 ,形參用 引用名 。
5.5 編程題
1. 從鍵盤(pán)上輸入8個(gè)浮點(diǎn)數,編程求出其和以及平均值。要求寫(xiě)出求和以及平均值的函數。
答:編程如下:
#include
double s,sum(double b[],int n),average(int n);
void main()
{
double a[8];
cout<<"輸入8個(gè)double型數 ;";
for(int i=0;i<8;i++)
cin>>a[i];
2017年3月計算機二級c語(yǔ)言模擬試題
一、選擇題((1)—(10)、(21)—(40)每題2分,(11)—(20)每題1分,共70分)
(1)下列數據結構中,屬于非線(xiàn)性結構的是
A.循環(huán)隊列
B.帶鏈隊列
C.二叉樹(shù)
D.帶鏈棧
(2)下列數據結果中,能夠按照“先進(jìn)后出”原則存取數據的是
A.循環(huán)隊列
B.棧
C.隊列
D.二叉樹(shù)
(3)對于循環(huán)隊列,下列敘述中正確的是
A.隊頭指針是固定不變的
B.隊頭指針一定大于隊尾指針
C.隊頭指針一定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
(4)算法的空間復雜度是指
A.算法在執行過(guò)程中所需要的計算機存儲空間
B.算法所處理的數據量
C.算法程序中的語(yǔ)句或指令條數
D.算法在執行過(guò)程中所需要的臨時(shí)工作單元數
(5)軟件設計中劃分模塊的一個(gè)準則是
A.低內聚低耦合
B.高內聚低耦合
C.低內聚高耦合
D. 高內聚高耦合
(6)下列選項中不屬于結構化程序設計原則的是
A.可封裝
B. 自頂向下
C.模塊化
D. 逐步求精
(7)數據庫管理系統是
A.操作系統的一部分
B.在操作系統支持下的系統軟件
C.一種編譯系統
D. 一種操作系統
(8)在E-R圖中,用來(lái)表示實(shí)體聯(lián)系的圖形是
2017年全國計算機c語(yǔ)言程序設計考試試題及答案
《C語(yǔ)言程序設計》講述了C語(yǔ)言的基本概念、各種數據類(lèi)型的使用技巧、程序流程控制、數組、函數、指針以及有關(guān)程序設計的方法等內容。下面是小編整理的關(guān)于國計算機c語(yǔ)言程序設計考試試題及答案,歡迎參考!
一、單項選擇
1.下列變量名中,非法的是( C )。
A.A25 B.My_car
C.My-str D.abc
2.下列常量中,十六進(jìn)制int型常量是( A )。
A.0x5f B.x2a
C.046 D.7a
3.下列常量中,不是字符常量的是( B )。
A.'\n' B."y"
C.'x' D.'\7'
4.在函數體內定義了下述變量a,a的存儲類(lèi)為( D )。
int a;
A.寄存器類(lèi) B.外部類(lèi)
C.靜態(tài)類(lèi) D.自動(dòng)類(lèi)
5.下列關(guān)于變量存儲類(lèi)的描述中,錯誤的是( C )。
A.任何變量定義后都具有一個(gè)確定的存儲類(lèi)
B.變量的存儲類(lèi)確定了變量的`作用域和壽命
C.定義變量時(shí)沒(méi)有存儲類(lèi)說(shuō)明符者一律為自動(dòng)類(lèi)
D.內部靜態(tài)類(lèi)變量和外部靜態(tài)類(lèi)變量的存儲類(lèi)說(shuō)明符都是static
6.下列關(guān)于變量數據類(lèi)型的描述中,錯誤的是( A )。
A.定義變量時(shí)int型數據類(lèi)型可以省略
B.變量的數據類(lèi)型可以決定該變量占內存的字節數
C.變量的數據類(lèi)型是可以被強制的
2017年計算機c語(yǔ)言二級考試試題及答案
程序設計往往以某種程序設計語(yǔ)言為工具,給出這種語(yǔ)言下的程序。程序設計過(guò)程應當包括分析、設計、編碼、測試、排錯等不同階段。yjbys小遍小編整理了一套計算機c語(yǔ)言二級考試試題及答案,希望可以幫助大家!
一、單項選擇
1 下列數據中,為字符串常量的是()。 D
A、'A'
B、How do you do.
C、$abc
D、"house"
2 以下所列的C語(yǔ)言常量中,錯誤的是( )。 B
A、0xFF
B、1.2e0.5
C、2L
D、'\72'
3 以下程序的輸出結果是()。 D
main()
{float x=3.6;
int i;
i=(int)x;
printf("x=%f,i=%d\n",x,i);
}
A、x=3.600000,i=4
B、x=3 i=3.600000
C、x=3,i=3
D、x=3.600000,i=3
4 若k是整型,則以下程序段的執行結果是:( ) B
k=-3;
if(k<=0) printf("####")
else printf("&&&&");
A、####
B、有語(yǔ)法錯誤,無(wú)結果
yahoo在線(xiàn)筆試題(c語(yǔ)言)
當前位置: 選擇試題類(lèi)型>>答題
C試題
類(lèi)型:C試題 | 試題:55道試題(50道選擇題,5道問(wèn)答題)
注意: 答題過(guò)程如果您不提交答案,或者關(guān)閉瀏覽器退出,我們將不再允許您再次答題。
謝謝!
試題 選項
Question 1. (單選)
在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關(guān)鍵碼值11,所需的關(guān)鍵碼比
較次數為(3)
1. 2
2. 3
3. 4
4. 5
Question 2. (單選)
設散列表的存儲空間大小為19,所用散列函數為h(key)=key mod 19,用開(kāi)地址線(xiàn)性探查法解
決碰撞。散列表的當前
狀態(tài)如下:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 190 194 768 559 582 39
3 208.現要將關(guān)鍵碼
值75插入到該散列表中,其地址應為 (1)
1. 1
2. 11
3. 5
4. 15
Question 3. (單選)
作業(yè)管理的主要任務(wù)包括作業(yè)輸入、作業(yè)處理和作業(yè)輸出。其中作業(yè)處理的工作是Ⅰ.作業(yè)
調度 Ⅱ.作業(yè)控制 Ⅲ.
作業(yè)后備 (3)
1. 只有Ⅰ
2. 只有Ⅱ
3. Ⅰ和Ⅱ
4. 都是
Question 4. (單選)
系統為了管理文件,設置了專(zhuān)門(mén)的數據結構----文件控制塊(FC。FCB是在執行下列哪一個(gè)系
統調用時(shí)建立的? (1)
1. create
2. open
3. read
4. write
Question 5. (單選)
下面關(guān)于通道的敘述中,正確的是Ⅰ.通道相當于一個(gè)功能簡(jiǎn)單的處理機Ⅱ.通道完成數據輸
入輸出工作Ⅲ.通道與
CPU共用一個(gè)內存 (4)
1. Ⅰ和Ⅱ
2. Ⅰ和Ⅲ
3. Ⅱ和Ⅲ
4. 都是
Question 6. (單選)
互操作性是指在不同環(huán)境下的應用程序可以相互操作,交換信息。要使采用不同數據格式的
各種計算機之間能夠相
互理解,這一功能是由下面哪一層來(lái)實(shí)現的? (2)
1. 應用層
2. 表示層
3. 會(huì )話(huà)層
4. 傳輸層
Question 7. (單選)
在UNIX的Shell程序中,可以使用位置變量。若要指明Shell引用的最近后臺進(jìn)程的號碼,可
以使用位置變量 (2)
1. $$
2. $!
3. $#
4. $-
Question 8. (單選)
設二叉樹(shù)根結點(diǎn)的層次為0,一棵深度(高度)為k的滿(mǎn)二叉樹(shù)和同樣深度的完全二叉樹(shù)各有
f個(gè)結點(diǎn)和c個(gè)結點(diǎn),下列
關(guān)系式不正確的是: (2)
1. f>=c
2. c>f
3. f=2k+1-1
4. C>2k-1
Question 9. (單選)
單鏈表的每個(gè)結點(diǎn)中包括一個(gè)指針link,它指向該結點(diǎn)的后繼結點(diǎn),F要將指針q指向的新
結點(diǎn)插入到指針p指向的
單鏈表結點(diǎn)之后,下面的操作序列中哪一個(gè)是正確的? (3)
1. q:=p^.link; p^.link:=q^.link
2. p^.link:=q^.link; q:=P^.link
3. q^.link:=p^.link; p^.link:=q;
4. p^.link:=q; q^.link:=p^,link
Question 10. (單選)
某二叉樹(shù)結點(diǎn)的對稱(chēng)序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E。
該二叉樹(shù)結點(diǎn)的前序序
列為 (2)
1. E、G、F、A、C、D、B
2. E、A、C、B、D、G、F
3. E、A、G、C、F、B、D
4. E、G、A、C、D、F、B
Question 11. (單選)
某二叉樹(shù)結點(diǎn)的對稱(chēng)序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E。
該二叉樹(shù)對應的樹(shù)林包
括多少棵樹(shù)? (2)
1. 1
2. 2
3. 3
4. 4
Question 12. (單選)
某二叉樹(shù)結點(diǎn)的對稱(chēng)序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E。
該二叉樹(shù)對應的樹(shù)林結
點(diǎn)的層次次序序列為 (1)
1. E、G、F、A、C、D、B
2. E、A、C、B、D、G、F
3. E、A、G、C、F、B、D
4. E、G、A、C、D、F、B
Question 13. (單選)
假設就緒隊列中有10個(gè)進(jìn)程,系統將時(shí)間片設為200ms, CPU進(jìn)行進(jìn)程切換要花費10ms。則
系統開(kāi)銷(xiāo)所占的比率約
為 (2)
1. 1%
2. 5%
3. 10%
4. 20%
Question 14. (單選)
長(cháng)度相同但格式不同的2種浮點(diǎn)數,假設前者階碼長(cháng)、尾數短,后者階碼短、尾數長(cháng),其它
規定均相同,則它們可
表示的數的范圍和精度為: (2)
1. 兩者可表示的數的范圍和精度相同
2. 前者可表示的數的范圍大但精度低
3. 后者可表示的數的范圍大且精度高
4. 前者可表示的數的范圍大且精度高
Question 15. (單選)
所謂“變號操作”是指將一個(gè)整數變成絕對值相同但符號相反的另一個(gè)整數。假設使用補
碼表示的8位整數
X=10010101,則經(jīng)過(guò)變號操作后結果為:(4)
1. 1101010
2. 10101
3. 11101010
4. 1101011
Question 16. (單選)
設有一個(gè)用數組Q[1..m」表示的環(huán)形隊列,約定f為當前隊頭元素在數組中的位置,r為隊
尾元素的后一位置(按順
時(shí)針?lè )较?,若隊列非空,則計算隊列中元素個(gè)數的公式應為:(2)
1. r-f
2. (m+r-f) mod m
3. (m-r+f)mod m
4. (m-r-f) mod m
Question 17. (單選)
計算機最主要的工作特點(diǎn)是(2)
1. 存儲程序與自動(dòng)控制
2. 高速度與高精度
3. 可靠性與可用性
4. 有記憶能力
Question 18. (單選)
計算機中數據的表示形式是(3)
1. 八進(jìn)制
2. 十進(jìn)制
3. 二進(jìn)制
4. 十六進(jìn)制
Question 19. (單選)
下面列出的四種存儲器中,易失性存儲器是(1)
1. RAM
2. ROM
3. PROM
4. CD-ROM
Question 20. (單選)
I/O接口位于 (2)
1. 總線(xiàn)和設備之間
2. CPU和I/O設備之間
3. 主機和總線(xiàn)之間
4. CPU和主存儲器之間
Question 21. (單選)
計算機硬件能直接識別和執行的只有(4)
1. 高級語(yǔ)言
2. 符號語(yǔ)言
3. 匯編語(yǔ)言
4. 機器語(yǔ)言
Question 22. (單選)
具有多媒體功能的微型計算機系統中,常用的CD-ROM是(2)
1. 只讀型大容量軟盤(pán)
2. 只讀型光盤(pán)
3. 只讀型硬盤(pán)
4. 半導體只讀存儲器
Question 23. (單選)
微機中1K字節表示的'二進(jìn)制位數是(4)
1. 1000
2. 8x1000
3. 1024
4. 8x1024
Question 24. (單選)
下列字符中,ASCII碼值最小的是(2)
1. a
2. A
3. x
4. Y
Question 25. (單選)
OSI(開(kāi)放系統互聯(lián))參考模型的最低層是(3)
1. 傳輸層
2. 網(wǎng)絡(luò )層
3. 物理層
4. 應用層
Question 26. (單選)
在面向對象的系統中,系統責任的良好分配原則是(3)
1. 在類(lèi)之間均勻分配
2. 集中分配在少數控制類(lèi)中
3. 根據交互圖的消息進(jìn)行分配
4. 根據個(gè)人喜好進(jìn)行分配
Question 27. (單選)
在CMM模型中,對軟件成熟度有以下5個(gè)級別,請從低到高排序
a 初始級:
軟件過(guò)程的特點(diǎn)是無(wú)秩序的,偶爾甚至是混亂的。幾乎沒(méi)有什么過(guò)程是經(jīng)過(guò)定義的,成功依
賴(lài)于個(gè)人的努力。
b 優(yōu)化級:
利用來(lái)自過(guò)程和來(lái)自新思想、新技術(shù)的先導性試驗的定量反饋信息,使持續過(guò)程改進(jìn)成為
可能。
c 已定義級:
管理活動(dòng)和工程活動(dòng)兩方面的軟件過(guò)程均已文檔化、標準化、并集成到組織的標準軟件過(guò)
程。
d 已管理級:
已采集詳細的有關(guān)軟件過(guò)程和產(chǎn)品質(zhì)量的度量,無(wú)論軟件過(guò)程還是產(chǎn)品均得到定量了解和控
制。
e 可重復級:
已建立基本的項目管理過(guò)程去跟蹤成本、進(jìn)度和功能性。必要的過(guò)程紀律已經(jīng)就位,使具
有類(lèi)似應用的項目。能重
復以前的成功。
(3)
1. acdbe
2. adceb
3. aecdb
4. abcde
Question 28. (單選)
在下面所列舉的邏輯測試覆蓋中,測試覆蓋最強的是(3)
1. 條件覆蓋
2. 條件組合覆蓋
3. 語(yǔ)句覆蓋
4. 條件及判定覆蓋
Question 29. (單選)
一般來(lái)說(shuō),在軟件維護過(guò)程中,大部分工作是由什么引起的(3)
1. 適應新的軟件環(huán)境
2. 適應新的硬件環(huán)境
3. 用戶(hù)的需求改變
4. 程序的可靠性
Question 30. (單選)(2)
PSP是?
1. 團隊軟件過(guò)程
2. 個(gè)體軟件過(guò)程
3. 過(guò)程改進(jìn)過(guò)程
4. 質(zhì)量管理過(guò)程
Question 31. (單選)
假定a和b為int型變量,則執行以下語(yǔ)句后b的值為 (4)
a=1; b=10;
do { b-=a; a++; } while (b--<0);
1. 9
2. -2
3. -1
4. 8
Question 32. (單選)
設有以下宏定義:
#define N 3
#define Y(n) ( (N+1)*n)
則執行語(yǔ)句:z=2 * (N+Y(5+1));后,z的值為 (3)
1. 出錯
2. 42
3. 48
4. 54
Question 33. (單選)
執行以下程序段后,m的值為 (1)
int a[2][3]={ {1,2,3},{4,5,6} };
int m,*p;
p=a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
1. 15
2. 14
3. 13
4. 12
Question 34. (單選)
有以下程序
main()
{ char a[]="programming", b[]="language";
char *p1,*p2;
int i;
p1=a; p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i)) printf("%c",*(p1+i));
}
輸出結果是 (4)
1. gm
2. rg
3. or
4. ga
Question 35. (單選)
有以下程序
int fun(int x,int y,int *cp,int *dp)
{ *cp=x+y; *dp=x-y; }
main()
{ int a, b, c, d;
a=30; b=50;
fun(a,b,c,&d);
printf("%d,%d
", c, d);
}
輸出結果是 (3)
1. 50,30
2. 30,50
3. 80,-20
4. 80,20
Question 36. (單選)
下述標識符中, 合法的用戶(hù)標識符是(4)
1. A#C
2. getch
3. void
4. sizeOf
Question 37. (單選)
以下選項中合法的字符常量是(3)
1. A
2. '10'
3. 68
4. D
Question 38. (單選)
以下敘述正確的是 (3)
1. 在C程序中,main函數必須位于程序的最前面
2. C程序的每行中只能寫(xiě)一條語(yǔ)句
3. C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句
4. 在對一個(gè)C程序進(jìn)行編譯的過(guò)程中,可發(fā)現注釋中的拼寫(xiě)錯誤
Question 39. (單選)
以下敘述中不正確的是 (4)
1. 在不同的函數中可以使用相同名字的變量
2. 函數中的形式參數是局部變量
3. 在一個(gè)函數內定義的變量只在本函數范圍內有效
4. 在一個(gè)函數內的復合語(yǔ)句中定義的變量在本函數范圍內有效
Question 40. (單選)
設int類(lèi)型的數據長(cháng)度為2個(gè)字節,則 unsigned int 類(lèi)型數據的取值范圍是 (2)
1. 0~255
2. 0~65535
3. -32768~32767
4. -256~255
Question 41. (單選)
某文件中定義的靜態(tài)全局變量(或稱(chēng)靜態(tài)外部變量)其作用域是 (2)
1. 只限某個(gè)函數
2. 本文件
3. 跨文件
4. 不限制作用域
Question 42. (單選)
語(yǔ)句:printf("%d
",12 012);的輸出結果是 (3)
1. 12
2. 012
3. 8
4. 6
Question 43. (單選)
設int x=4; 則執行以下語(yǔ)句: x+=x-=x-x;后,x的值為 (3)
1. 0
2. 4
3. 8
4. 12
Question 44. (單選)
while(!x)中的(!x)與下面條件等價(jià)。 (4)
1. x==1
2. x!=1
3. x!=0
4. x==0
Question 45. (單選)
已知int i,a;執行語(yǔ)句: i=(a=2*3,a*5),a+6;后,變量i的值是 (3)
1. 6
2. 12
3. 30
4. 36
Question 46. (單選)
整型變量x和y的值相等、且為非0值,則以下選項中,結果為零的表達式是 (4)
1. x || y
2. x | y
3. x y
4. x ^ y
Question 47. (單選)
x、y、z被定義為int型變量,若從鍵盤(pán)給x、y、z輸入數據,正確的輸入語(yǔ)句是 (2)
1. INPUT x、y、z;
2. scanf("%d%d%d",x,&y,&z);
3. scanf("%d%d%d",x,y,z);
4. read("%d%d%d",x,y,z);
Question 48. (單選)
以下各選項企圖說(shuō)明一種新的類(lèi)型名,其中正確的是 (2)
1. typedef v1 int;
2. typedef int v3;
3. typedef v4: int;
4. typedef v2=int;
Question 49. (單選)
char x=3,y=6,z;
z=x^y<<2;
則z的二進(jìn)制值是 (2)
1. 10100
2. 11011
3. 11100
4. 11000
Question 50. (單選)
若有說(shuō)明:int i, j=2,*p=i;,則能完成i=j賦值功能的語(yǔ)句是 (2)
1. i=*p;
2. *p=*j;
3. i=j;
4. i=**p;
Question 51. (問(wèn)答)
給定一個(gè)整型變量a,寫(xiě)兩段代碼,第一個(gè)設置a的bit 3,第二個(gè)清除a的bit 3。在以上兩
個(gè)操作中,要保持其它
位不變。
a|=0x4;
int b=a0x7;
a>>=4;
a=(a<<4)|b;
Question 52. (問(wèn)答)
有雙向循環(huán)鏈表結點(diǎn)定義為:
struct node
{ int data;
struct node *front,*next;
};
有兩個(gè)雙向循環(huán)鏈表A,B,知道其頭指針為:pHeadA,pHeadB,請寫(xiě)一函數將兩鏈表中dat
a值相同的結點(diǎn)刪除
struct node
{ int data;
struct node *front,*next;
};
node* del(node *pHead){
if(pHead==pHead->next){
free(pHead);
return NULL;
}
node *p=pHead;
pHead->next->front=pHead->front;
pHead->front->next=pHead->next;
pHead=pHead->next;
free(p);
return pHead;
}
void delequ(node*pHeadA,node *pHeadB){
node *pA=pHeadA;
node *pB;
int flag;
do{
flag=0;
pB=pHeadB;
do{
if(pB->data==pA->data){
if(pA==pHeadA){
pHeadA=pA=del(pHeadA);
flag=1;
}
else{
pA=del(pA);
}
pB=del(pB);
break;
}
pB=pB->next;
}while(pB!=pHeadB);
if(flag==0){
pA=pA->next;
}
}while(!pA & !pB && (flag||(pA!=pHeadA)));
}
Question 53. (問(wèn)答)
編程實(shí)現:找出兩個(gè)字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串為"c
ad"
char* constr(char *A,char *B){
int lenA=strlen(A),lenB=strlen(B);
int itmp,conlen=0;
char *pequ,*pH=NULL;
char *pA,*pB,*pA2,*pB2;
for(pA=A;pA-Afor(pB=B;pB-Bif(*pB==*pA){
pA2=pA+1;
pB2=pB+1;
for(itmp=1;*pA2==*pB2 & pA2++-Aif(itmp>conlen){
conlen=itmp;
pH=pA;
}
}
pB++;
}
}
pequ=(char*)malloc(conlen+1);
memcpy(pequ,pH,conlen);
*(pequ+conlen)='';
return pequ;
}
Question 54. (問(wèn)答)
說(shuō)明關(guān)鍵字static和volatile的含義
static用于外部變量或者函數時(shí),限制了它們的作用域為文件內部;static也可以用于內
部變量,這樣,內部變量在每次函數調用時(shí)都為同一存儲,值具有連續性。
volatile說(shuō)明了一個(gè)變量的值是會(huì )隨機變化的,即使程序沒(méi)有對它進(jìn)行任何賦值操作。它
告訴編譯器的優(yōu)化處理器,這些變量是實(shí)實(shí)在在存在的,在優(yōu)化過(guò)程中不能無(wú)故消除,這樣就保證了編譯后的代碼在每次操作是從變量地址處取數。
Question 55. (問(wèn)答)
編程實(shí)現:把十進(jìn)制數(long型)分別以二進(jìn)制和十六進(jìn)制形式輸出,不能使用printf系列
庫函數
void put(long data){
long mask=0x1<<(8*sizeof(long)-1);
int i;
char c;
if(datamask)
putchar('1');
else
putchar('0');
mask=0x1<<(8*sizeof(long)-2);
for(i=1;i<8*sizeof(long);i++){
if(datamask)
putchar('1');
else
putchar('0');
mask>>=1;
}
putchar(' ');
mask=0xf<<(8*sizeof(long)-4);
c=(datamask)>>(8*sizeof(long)-4);
if(c<10)
putchar(c+'0');
else
putchar(c+'a');
mask=0xf<<(8*sizeof(long)-8);
for(i=1;i<2*sizeof(long);i++){
c=(datamask)>>(8*sizeof(long)-4*i-4);
if(c<10)
putchar(c+'0');
else
putchar(c+'a');
mask>>=4;
}
}
注意: 一旦您提交答題后,將不能再修改您的答案。
華為C語(yǔ)言筆試題
一、判斷題(對的寫(xiě)t,錯的寫(xiě)f并說(shuō)明原因,每小題4分,共20分)
1、有數組定義int a[2][2]={{1},{2,3}};則a[0][1]的'值為0。( )
2、int (*ptr) (),則ptr是一維數組的名字。( )
3、指針在任何情況下都可進(jìn)行>, <, >=, <=, = =運算。( )
4、switch(c) 語(yǔ)句中c可以是int, long, char, float, unsigned int 類(lèi)型。( )
5、#define print(x) printf("the no, "#x",is ")
二、填空題(共30分)
1、在windows下,寫(xiě)出運行結果,每空2分,共10分。
char str[ ]= "hello";
char *p=str;
int n=10;
sizeof(str)=( )
sizeof(p)=( )
sizeof(n)=( )
void func(char str[100])
{ }
sizeof(str)=( )
2、void setmemory(char **p, int num)
{ *p=(char *) malloc(num);}
void test(void)
{ char *str=null;
getmemory(str,100);
2017計算機二級c語(yǔ)言考試試題大全
“C語(yǔ)言程序設計”是計算機專(zhuān)業(yè)和非計算機專(zhuān)業(yè)的一門(mén)技術(shù)基礎課程,也是程序設計的啟蒙語(yǔ)言課程。下面是小編整理的關(guān)于計算機二級c語(yǔ)言考試試題,歡迎參考!
一、單選題
1.當一個(gè)函數沒(méi)有返回值時(shí),該函數類(lèi)型應說(shuō)明為( A )。
A.void B.int
C.無(wú) D.任意
2.下列關(guān)于設置函數默認的參數值的描述中,錯誤的是( C )。
A.可對函數的部分參數或全部參數設置默認值
B.在有函數說(shuō)明時(shí),默認值應設置在函數說(shuō)明時(shí),而不是定義時(shí)
C.設置函數默認參數值時(shí),只可用常量不可用含有變量的表達式
D.設置函數參數默認值應從右向左設置
3.下列關(guān)于被調用函數中return語(yǔ)句的描述中,錯誤的是( D )。
A.一個(gè)函數中可以有多條return語(yǔ)句
B.return語(yǔ)句具有返回程序控制權的`作用
C.函數通過(guò)return語(yǔ)句返回值時(shí)僅有一個(gè)
D.一個(gè)函數中有且僅有一條return語(yǔ)句
4.函數返回值的類(lèi)型是由( B )決定的。
A.調用該函數的調用函數的類(lèi)型
B.定義該函數時(shí)所指定的類(lèi)型
C.return語(yǔ)句中表達式的類(lèi)型
D.接收函數返回值的變量或對象的類(lèi)型
5.下列設置函數參數默認值的說(shuō)明語(yǔ)句中,錯誤的是( C )。
A.int fun(int x , int y=10); B.int fun(int x=5, int =10);
2017年全國計算機c語(yǔ)言試題及答案
C語(yǔ)言是把高級語(yǔ)言的基本結構和語(yǔ)句與低級語(yǔ)言的實(shí)用性結合起來(lái)的工作單元。下面是小編整理的關(guān)于全國計算機c語(yǔ)言試題及答案,歡迎參考!
單選題
1.下列關(guān)于語(yǔ)句的描述中,錯誤的是( A )。
A.C++程序中的函數是由若干條語(yǔ)句組成的
B.每條語(yǔ)句都要實(shí)現某種操作
C.條件語(yǔ)句是用來(lái)實(shí)現分支操作的
D.循環(huán)語(yǔ)句是用來(lái)在一定條件下重復執行某段程序的
2.下列關(guān)于條件語(yǔ)句的描述中,錯誤的是( C )。
A.if語(yǔ)句中最多只能有一個(gè)else子句
16
B.if語(yǔ)句的if體內可以出現開(kāi)關(guān)語(yǔ)句
C.if語(yǔ)句中else if子句和else子句的順序是沒(méi)有限制的
D.if語(yǔ)句中else子句是與它最近的if子句配對的
3.下列關(guān)于開(kāi)關(guān)語(yǔ)句的描述中,錯誤的是( B )。
A.開(kāi)關(guān)語(yǔ)句中,case子句的'個(gè)數是不受限制的
B.開(kāi)關(guān)語(yǔ)句中,case子句的語(yǔ)句序列中一定要有break語(yǔ)句
C.開(kāi)關(guān)語(yǔ)句中,default子句可以省略
D.開(kāi)關(guān)語(yǔ)句中,右花括號具有退出開(kāi)關(guān)語(yǔ)句的功能
4.下列關(guān)于循環(huán)語(yǔ)句的描述中,錯誤的是( A )。
A.while循環(huán)語(yǔ)句中<條件>給定的表達式不能為非0的常量,否則便是死循環(huán)
B.for循環(huán)語(yǔ)句的循環(huán)體內可以出現while循環(huán)語(yǔ)句、do-while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句
C.循環(huán)語(yǔ)句的循環(huán)體可以是空語(yǔ)句
華碩-嵌入式程序員C語(yǔ)言筆試題目
預處理器(Preprocessor)
1 . 用預處理指令#define 聲明一個(gè)常數,用以表明1年中有多少秒(忽略閏年問(wèn)題)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在這想看到幾件事情:
1) #define 語(yǔ)法的基本知識(例如:不能以分號結束,括號的使用,等等)
2)懂得預處理器將為你計算常數表達式的值,因此,直接寫(xiě)出你是如何計算一年中有多少秒而不是計算出實(shí)際的值,是更清晰而沒(méi)有代價(jià)的。
3) 意識到這個(gè)表達式將使一個(gè)16位機的整型數溢出-因此要用到長(cháng)整型符號L,告訴編譯器這個(gè)常數是的長(cháng)整型數。
4) 如果你在你的表達式中用到UL(表示無(wú)符號長(cháng)整型),那么你有了一個(gè)好的起點(diǎn)。記住,第一印象很重要。
2 . 寫(xiě)一個(gè)"標準"宏MIN ,這個(gè)宏輸入兩個(gè)參數并返回較小的一個(gè)。
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
這個(gè)測試是為下面的目的而設的:
1) 標識#define在宏中應用的基本知識。這是很重要的。因為在 嵌入(inline)操作符 變?yōu)闃藴蔆的一部分之前,宏是方便產(chǎn)生嵌入代碼的唯一方法,對于嵌入式系統來(lái)說(shuō),為了能達到要求的性能,嵌入代碼經(jīng)常是必須的方法。
2)三重條件操作符的知識。這個(gè)操作符存在C語(yǔ)言中的原因是它使得編譯器能產(chǎn)生比if-then-else更優(yōu)化的代碼,了解這個(gè)用法是很重要的。
3) 懂得在宏中小心地把參數用括號括起來(lái)
4) 我也用這個(gè)問(wèn)題開(kāi)始討論宏的副作用,例如:當你寫(xiě)下面的代碼時(shí)會(huì )發(fā)生什么事?
least = MIN(*p++, b);
3. 預處理器標識#error的目的是什么?
如果你不知道答案,請看參考文獻1。這問(wèn)題對區分一個(gè)正常的伙計和一個(gè)書(shū)呆子是很有用的。只有書(shū)呆子才會(huì )讀C語(yǔ)言課本的附錄去找出象這種問(wèn)題的答案。當然如果你不是在找一個(gè)書(shū)呆子,那么應試者最好希望自己不要知道答案。
死循環(huán)(Infinite loops)
4. 嵌入式系統中經(jīng)常要用到無(wú)限循環(huán),你怎么樣用C編寫(xiě)死循環(huán)呢?
這個(gè)問(wèn)題用幾個(gè)解決方案。我首選的方案是:
while(1)
{
}
一些程序員更喜歡如下方案:
for(;;)
{
}
這個(gè)實(shí)現方式讓我為難,因為這個(gè)語(yǔ)法沒(méi)有確切表達到底怎么回事。如果一個(gè)應試者給出這個(gè)作為方案,我將用這個(gè)作為一個(gè)機會(huì )去探究他們這樣做的基本原理。如果他們的基本答案是:"我被教著(zhù)這樣做,但從沒(méi)有想到過(guò)為什么。"這會(huì )給我留下一個(gè)壞印象。
第三個(gè)方案是用 goto
Loop:
...
goto Loop;
應試者如給出上面的方案,這說(shuō)明或者他是一個(gè)匯編語(yǔ)言程序員(這也許是好事)或者他是一個(gè)想進(jìn)入新領(lǐng)域的BASIC/FORTRAN程序員。
數據聲明(Data declarations)
5. 用變量a給出下面的定義
a) 一個(gè)整型數(An integer)
b)一個(gè)指向整型數的指針( A pointer to an integer)
c)一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數( A pointer to a pointer to an intege)r
d)一個(gè)有10個(gè)整型數的數組( An array of 10 integers)
e) 一個(gè)有10個(gè)指針的數組,該指針是指向一個(gè)整型數的。(An array of 10 pointers to integers)
f) 一個(gè)指向有10個(gè)整型數數組的指針( A pointer to an array of 10 integers)
g) 一個(gè)指向函數的指針,該函數有一個(gè)整型參數并返回一個(gè)整型數(A pointer to a function that takes an integer as an argument and returns an integer)
h) 一個(gè)有10個(gè)指針的數組,該指針指向一個(gè)函數,該函數有一個(gè)整型參數并返回一個(gè)整型數( An array of ten pointers to functions that take an integer argument and return an integer )
答案是:
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer
人們經(jīng)常聲稱(chēng)這里有幾個(gè)問(wèn)題是那種要翻一下書(shū)才能回答的問(wèn)題,我同意這種說(shuō)法。當我寫(xiě)這篇文章時(shí),為了確定語(yǔ)法的正確性,我的確查了一下書(shū)。但是當我被面試的時(shí)候,我期望被問(wèn)到這個(gè)問(wèn)題(或者相近的問(wèn)題)。因為在被面試的這段時(shí)間里,我確定我知道這個(gè)問(wèn)題的答案。應試者如果不知道所有的答案(或至少大部分答案),那么也就沒(méi)有為這次面試做準備,如果該面試者沒(méi)有為這次面試做準備,那么他又能為什么出準備呢?
Static
6. 關(guān)鍵字static的作用是什么?
這個(gè)簡(jiǎn)單的問(wèn)題很少有人能回答完全。在C語(yǔ)言中,關(guān)鍵字static有三個(gè)明顯的作用:
1)在函數體,一個(gè)被聲明為靜態(tài)的變量在這一函數被調用過(guò)程中維持其值不變。
2) 在模塊內(但在函數體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內所用函數訪(fǎng)問(wèn),但不能被模塊外其它函數訪(fǎng)問(wèn)。它是一個(gè)本地的全局變量。
3) 在模塊內,一個(gè)被聲明為靜態(tài)的函數只可被這一模塊內的其它函數調用。那就是,這個(gè)函數被限制在聲明它的模塊的本地范圍內使用。
大多數應試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個(gè)應試者的嚴重的缺點(diǎn),因為他顯然不懂得本地化數據和代碼范圍的好處和重要性。
Const
7.關(guān)鍵字const有什么含意?
我只要一聽(tīng)到被面試者說(shuō):"const意味著(zhù)常數",我就知道我正在和一個(gè)業(yè)余者打交道。去年Dan Saks已經(jīng)在他的文章里完全概括了const的所有用法,因此ESP(譯者:Embedded Systems Programming)的每一位讀者應該非常熟悉const能做什么和不能做什么.如果你從沒(méi)有讀到那篇文章,只要能說(shuō)出const意味著(zhù)"只讀"就可以了。盡管這個(gè)答案不是完全的答案,但我接受它作為一個(gè)正確的`答案。(如果你想知道更詳細的答案,仔細讀一下Saks的文章吧。)
如果應試者能正確回答這個(gè)問(wèn)題,我將問(wèn)他一個(gè)附加的問(wèn)題:
下面的聲明都是什么意思?
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
/******/
前兩個(gè)的作用是一樣,a是一個(gè)常整型數。第三個(gè)意味著(zhù)a是一個(gè)指向常整型數的指針(也就是,整型數是不可修改的,但指針可以)。第四個(gè)意思a是一個(gè)指向整型數的常指針(也就是說(shuō),指針指向的整型數是可以修改的,但指針是不可修改的)。最后一個(gè)意味著(zhù)a是一個(gè)指向常整型數的常指針(也就是說(shuō),指針指向的整型數是不可修改的,同時(shí)指針也是不可修改的)。如果應試者能正確回答這些問(wèn)題,那么他就給我留下了一個(gè)好印象。順帶提一句,也許你可能會(huì )問(wèn),即使不用關(guān)鍵字 const,也還是能很容易寫(xiě)出功能正確的程序,那么我為什么還要如此看重關(guān)鍵字const呢?我也如下的幾下理由:
1) 關(guān)鍵字const的作用是為給讀你代碼的人傳達非常有用的信息,實(shí)際上,聲明一個(gè)參數為常量是為了告訴了用戶(hù)這個(gè)參數的應用目的。如果你曾花很多時(shí)間清理其它人留下的垃圾,你就會(huì )很快學(xué)會(huì )感謝這點(diǎn)多余的信息。(當然,懂得用const的程序員很少會(huì )留下的垃圾讓別人來(lái)清理的。)