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