計算機二級

當前位置 /首頁/計算機/計算機二級/列表

計算機二級考試C語言程式設計試題及答案

計算機二級的文章" target="_blank" >計算機二級考試採用全國統一命題、統一考試的形式。下面小編整理了計算機二級考試C語言程式設計試題及答案,希望對大家有幫助!

計算機二級考試C語言程式設計試題及答案

 一、選擇題((1)--(40)每小題1分, (41)--(50)每小題2分, 共60分)

下列各題 A) 、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項在答題卡相應位置上塗黑,答在試卷上不得分

(1) 下列述敘中正確的是

A) 顯示器和印表機都是輸出裝置 B) 顯示器只能顯示字元

C) 通常的彩色顯示器都有7種顏色 D) 印表機只能列印字元和表格

(2) 微型計算機中運算器的主要功能是進行

A) 算術運算 B) 邏輯運算 C) 算術和邏輯運算 D) 初等函式運算

(3) COMMAND。COM是DOS系統的最外層模組,通常稱之為

A) 載入程式 B) 輸入輸出系統 C) 命令處理系統 D) 檔案管理系統

(4) 電子郵件是

A)網路資訊檢索服務

B)通過Web網頁釋出的公告資訊

C)通過網路實時互動的資訊傳遞方式

D)一種利用網路交換資訊的非互動式服務

(5) 和十進位制數225相等的二進位制數是

A) 11101110 B) 11111110 C) 10000000 D) 11111111

(6) 下列敘述中正確的是

A) 指令由運算元和操作碼兩部分組成

B) 常用引數xxMB表示計算機的速度

C) 計算機的一個字長總是等於兩個位元組

D) 計算機語言是完成某一任務的指令集

(7) 計算機的記憶體儲器比外儲存器

A) 價格便宜 B) 儲存容量大 C) 讀寫速度快 D) 讀寫速度慢

(8) 設當前盤為C盤,執行DOS命令"COPY B: PRN"之後,結果是

A) B盤上的檔案被複制到C盤的PRN檔案

B) 螢幕上顯示B盤上的檔案內容

C) B盤上的檔案內容在印表機上輸出

D) B盤上的檔案被複制到B盤上的PRN檔案

(9) 要將當前盤當前目錄下的兩個檔案和連線起來之後存入B盤當 前目錄下並且命名為,無論B盤當前目錄是什麼,完成這件任務可以使用的命令是

A) COPY A:+C:

B) COPY +C: B:

C) COPY A:+C:

D) COPY + B:

(10) 下列四組DOS命令中,功能等價的一組是

A) COPY A:*.* B:與DISKCOPY A: B:

B) COPY + 與TYPE >>

C) COPY +與COPY +

D) TYPE *>CON與COPY * CON

(11) 設當前目錄為D:BB,現要把D:AA目錄下首字元是A的文字檔案全部刪除,應該使用命令

A) DEL A* B) DEL

C) DEL AAA* D) DEL AAA?

(12) 在Windows中,啟動應用程式的正確方法是

A) 用滑鼠指向該應用程式圖示

B) 將該應用程式視窗最小化成圖示

B) 將該應用程式視窗還原

D) 用滑鼠雙擊該應用程式圖示

(13) 在Windows中,終止應用程式執行的正確方法是

A) 將該應用程式視窗最小化成圖示

B) 用滑鼠雙擊應用程式視窗右上角的還原按鈕

C) 用滑鼠雙擊應用程式視窗中的標題欄

D) 用滑鼠雙擊應用程式視窗左上角的控制選單框

(14) 在微機系統中,對輸入輸出裝置進行管理的基本程式模組(BIOS)存放在

A) RAM中 B) ROM中 C) 硬碟中 D) 暫存器中

(15) 使計算機病毒傳播範圍最廣的媒介是

A) 硬磁碟 B) 軟磁碟 C) 內部儲存器 D) 網際網路

(16) 設有 int x=11; 則表示式 (x++ * 1/3) 的值是

A) 3 B) 4 C) 11 D) 12

(17) 下列程式的輸出結果是

A) 3 B) 3.2 C) 0 D) 3.07

main()

{ double d=3.2; int x,y;

x=1.2; y=(x+3.8)/5.0;

printf("%d", d*y);

}

(18) 下列程式執行後的輸出結果是(小數點後只寫一位)

A) 6 6 6.0 6.0 B) 6 6 6.7 6.7

C) 6 6 6.0 6.7 D) 6 6 6.7 6.0

main()

{ double d; float f; ling l; int i;

i=f=1=d=20/3;

printf("%d %ld %f %f", i,l,f,d);

}

(19) 下列變數定義中合法的是

A) short _a=-1; B) double b=1+5e2.5;

C) long do=0xfdaL; D) float 2_and=1-e-3;

(20) 設 int x=1, y=1; 表示式(!x||y--)的'值是

A) 0 B) 1 C) 2 D) -1

(21) 與 y=(x>0?1:x<0?-1:0);的功能相同的if語句是

A) if (x>0) y=1; B) if(x)

else if(x<0)y=-1; if(x>0)y=1;

else y=0; else if(x<0)y=-1;

else y=0;

C) y=-1 D) y=0;

if(x) if(x>=0)

if(x>0)y=1; if(x>0)y=1;

else if(x==0)y=0; else y=-1;

else y=-1;

(22) 以下迴圈體的執行次數是

A) 3 B) 2 C) 1 D) 0

main()

{ int i,j;

for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d",i);

}

(23) 以下敘述正確的是

A) do-while語句構成的迴圈不能用其它語句構成的迴圈來代替。

B) do-while語句構成的迴圈只能用break語句退出。

C) 用do-while語句構成的迴圈,在while後的表示式為非零時結束迴圈。

D) 用do-while語句構成的迴圈,在while後的表示式為零時結束迴圈。

(24) 下列程式執行後的輸出結果是

A) G B) H C) I D) J

main()

{ int x='f'; printf("%c",'A'+(x-'a'+1)); }

(25) 執行下面的程式段後,變數k中的值為

A) 不定值 B) 33 C) 30 D) 10

int k=3, s[2];

s[0]=k; k=s[1]*10;

(26) 若已定義:

int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i;

其中 0≤i≤9, 則對a陣列元素不正確的引用上

A) a[p-a] B) *(&a[i]) C) p[i] D) a[10]

(27) 下列程式執行後的輸出結果是

A) 6 B) 7 C) 8 D) 9

void func(int *a,int b[])

{ b[0]=*a+6; }

main()

{ int a,b[5];

a=0; b[0]=3;

func(&a,b); printf("%d,b[0]);

}

(28) 下列程式的執行結果是

A) a=%2,b=%5 B) a=2,b=5

C) a=d, b=d D) a=%d,b=%d

#include

main()

{ int a=2,c=5;

printf("a=%d,b=%d",a,c); }

(29) 下列程式執行後的輸出結果是

A) 3 B) 6 C) 9 D) 隨機數

main()

{ int a[3][3], *p,i;

p=&a[0][0];

for(i=p; i<9; i++) p[i]=i+1;

printf("%d",a[1][2]);

}

(30) 設有陣列定義: char array [ ]="China"; 則陣列 array所佔的空間為

A) 4個位元組 B) 5個位元組 C) 6個位元組 D) 7個位元組

(31) 下列程式的輸出結果是

A) 4 B) 6 C) 8 D) 10

int b=2;

int func(int *a)

{ b += *a; return(b);}

main()

{ int a=2, res=2;

res += func(&a);

printf("%d",res);

}

(32) 在以下四組中,每組有兩個分別運算的函式,運算結果相同的是

A) 4 B) 2 C) 2 D) 0

main()

{ int i, j, m=0, n=0;

for(i=p; i<2; i++)

for(j=0; j<2; j++)

if(j>=i) m=1; n++;

printf("%d",n);

}

(33) 下列程式的輸出結果是

A) 5 B) 6 C) 7 D) 8

struct abc

{ int a, b, c; };

main()

{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;

t=s[0],a+s[1],b;

printf("%d",t);

}

(34) 設 int b=2;表示式(b>>2)/(b>>1)的值是

A) 0 B) 2 C) 4 D) 8

(35) 在C程式中,可把整型數以二進位制形式存放到檔案中的函式是

A) fprintf函式 B) fread函式 C) fwrite函式 D) fputc函式

(36) 下列程式執行後的輸出結果是

A) -32767 B) FFFE C) -1 D) -32768

main()

{ char x=0xFFFF; printf("%d",x--); }

(37) 若有定義: float w; int a, b; 則合法的switch語句是

A) switch(w) B) switch(a);

{ case 1.0: printf("*"); { case 1 printf("*");

case 2.0: printf("**"); case 2 printf("**");

} }

C) switch(b) D) switch(a+b);

{ case 1: printf("*"); { case 1: printf("*");

default: printf(""); case 2: printf("**");

case 1+2: printf("**"); default: printf("");

} }

(38) 以下程式段的執行結果是

A) a=12 y=12 B) a=12 y=12

a=14 y=16 a=16 y=28

a=16 y=20

a=18 y=24

C) a=12 y=12 D) a=12 y=12

a=14 y=26

a=14 y=44

int a, y;

a=10; y=0;

do

{ a+=2; y+=a;

printf("a=%d y=%d",a,y);

if(y>20) break;

{ while(a=14);

.

.

.

(39) 若有以下呼叫語句,則不正確的fun函式的首部是

A) void fun(int m, int x[]) B) void fun(int s, int h[41])

C) void fun(int p, int *s) D) void fun(int n, int a)

main()

{ …

int a[50],n;

fun(n, &a[9]);

}

(40) 語句printf("are'hi'you");的輸出結果是

A) are'hi'you B) are'hi'you

C) re'hi'you D) abre'hi'you

(說明:''是退格符)

(41) 請選出正確的程式段

A) int *p; B) int *s, k;

scanf("%d",p); *s=100;

… …

C) int *s, k; D) int *s, k;

char *p, c; char *p, e;

s=&k; s=&k;

p=&c; p=&c;

*p='a'; s=p;

… *s=1;

(42) 已知指標p的指向如下圖所示,則執行語句 *--p;後*p的值是

A) 30 B) 20 C) 19 D) 29

a[0] a[1] a[2] a[3] a[4]

10 20 30 40 50

(43) 設已有定義: char *st="how are you"; 下列程式段中正確的是

A) char a[11], *p; strcpy(p=a+1,&st[4]);

B) char a[11]; strcpy(++a, st);

C) char a[11]; strcpy(a, st);

D) char a[], *p; strcpy(p=&a[1],st+2);

(44) 下列程式執行後的輸出結果是

A) you&ne B) you C) me D) err

mai()

{ char arr[2][4];

strcpy(arr,"you"); strcpy(arr[1],"me");

arr[0][3]='&';

printf("%s",arr);

}

(45) 下列程式執行後的輸出結果是

A) hello B) hel C) hlo D) hlm

void func1(int i);

void func2(int i);

char st[]="hello,friend!";

void func1(int i)

{ printf("%c",st[i]);

if(i<3){i+=2;func2(i);}

}

void func2(int i)

{ printf("%c",st[i]);

if(i<3){i+=2;func1(i);}

}

main()

{ int i=0; func1(i); printf("");}

(46) 假定下列程式的可執行檔名為,則在該程式所在的子目錄下輸入命令列: prg hello good<回車>後,程式的輸出結果是

A) hello good B) hg C) hel D) hellogood

main()(int argc, char *argv[])

{ int i;

if(argc<-0)return;

for(i=1;i

}

(47) 下列程式執行後的輸出結果是

A) 6 B) 8 C) 10 D) 12

#define MA(x) x*(x-1)

main()

{ int a=1,b=2; printf("%d",MA(1+a+b));}

(48) 有以下結構體說明和變數的定義,且如下圖所示指標p指向變數a,指標q指向變數b。則不能把結點b連線到結點a之後的語句是

A) =q; B) =&b;

C) p->next=&b; D) (*p)=q;

struct node

{ char data;

struct node *next;

{ a,b,*p=&a,*q=&b;

data next data next

(49) 變數a所佔記憶體位元組數是

A) 4 B) 5 C) 6 D) 8

union U

{ char st[4];

int i;

long l;

};

struct A

{ int c;

union U u;

}a;

(50) 執行下列程式時輸入:123<空格>456<空格>789<回車>,輸出結果是

A) 123,456,789 B) 1,456,789

C) 1,23,456,789 D) 1,23,456

main()

{ char s[100]; int c, i;

scanf("%c",&c); scanf("%d",&i); scanf("%s",s);

printf("%c,%d,%s",c,i,s);

}

 二、填空題(每空2分,共40分)

請將每空的正確答案寫在答題卡上[1] ̄[20]序號的橫線上,答在試卷上不得分。

(1) 計算機網路按通訊距離來劃分,可分為區域網和廣域網。因特網屬於 [1] 。

(2) 當前盤是C,確保在D盤的根目錄下建立一個子目錄USER的一條DOS命令是 [2] 。

(3) 要將當前盤當前目錄中所有副檔名為的檔案內容顯示在螢幕上的DOS命令是 [3] 。

(4) DOS命令分為內部命令和外部命令,CHKDSK命令是 [4] 命令。

(5) 在Windows中,為了終止一個應用程式的執行,首先單擊該應用程式視窗中的控制選單框,然後在控制選單中單擊 [5] 命令。

(6) 設有以下變數定義,並已賦確定的值

char w; int x; float y; double z;

則表示式:w*x+z-y所求得的資料型別為 [6] 。

(7) 若x為int型別,請以最簡單的形式寫出與邏輯表示式!x等價的C語言關係表示式 [7] 。

(8) 若有如下圖所示五個連續的int型別的儲存單元並賦值如下圖,a[0]的地址小於a[4]的地址。p和s是基型別為int的指標變數。請對以下問題進行填空。

a[0] a[1] a[2] a[3] a[4]

22 33 44 55 66

1,若p已指向儲存單元a[1]。通過指標p,給s賦值,使s指向最後一個儲存單元 a[4]的語句是 [8] 。

2,若指標s指向儲存單元a[2],p指向儲存單元a[0],表示式s-p的值是 [9] 。

(9) 下面函式用來求出兩個整數之和,並通過形參傳回兩數相加之和值,請填空。

int add(int x, int y, [10] z)

{ [11] =x+y; }

(10) 下面程式的功能是:計算1到10之間奇數之和及偶數之和,請填空。

#include

main()

{ int a, b, c, i;

a=c=0;

for(i=0;i<10;i+=2)

{ a+=i;

[12] ;

c+=b;

}

printf("偶數之和=%d",a);

printf("奇數之和=%d",c-11);

}

(11) 下面程式的功能是:輸出100以內能被3整除且個位數為6的所有整數,請填空。

#include

main()

{ int i, j;

for(i=0; [13] ; i++)

{ j=i*10+6;

if( [14] ) continue;

printf("%d",j);

}

}

(12) 下面程式的功能是:將字元陣列a中下標值為偶數的元素從小到大排列,其它元素不變。請填空。

#include

#include

main()

{ char a[]="clanguage",t;

int i, j, k;

k=strlen(a);

for(i=0; i<=k-2; i+=2)

for(j=i+2; j<=k; [15] )

if( [16] )

{ t=a[i]; a[i]=a[j]; a[j]=t; }

puts(a);

printf("");

}

(13) 以下程式的執行結果是 [17]

#include

main()

{ int k=4, m=1, p;

p=func(k,m); printf("%d,",p);

p=func(k,m); printf("%d",p);

}

func(int a, int b)

{ static int m=0, i=2;

i+=m+1;

m=i+a+b;

return m;

}

(14) 以下程式的功能是:將無符號八進位制數字構成的字串轉換為十進位制整數。例如,輸入的字串為:556,則輸出十進位制整數366。請填空。

#include

main()

{ char *p, s[6];

int n;

p=s;

gets(p);

n=*p-'0';

while( [18] !='