當前位置:編程學習大全網 - 編程語言 - 急!!歷年國家計算機二級c語言筆試真題答案。

急!!歷年國家計算機二級c語言筆試真題答案。

2010年9月全國計算機二級C語言筆試試題:文字版

壹、選擇題(每小題2分,***70分)

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

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

A)線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的

B)線性表的鏈式存儲結構所需要的存儲空間壹般要多於順序存儲結構

C)線性表的鏈式存儲結構所需要的存儲空間壹般要少於順序存儲結構

D)上述三種說法都不對

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

A)在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態變化

B)在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態變化

C)在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態變化

D)上述三種說法都不對

(3)軟件測試的目的是

A)評估軟件可靠性

B)發現並改正程序中的錯誤

C)改正程序中的錯誤

D)發現程序中的錯誤

(4)下面描述中,不屬於軟件危機表現的是

A)軟件過程不規範

B)軟件開發生產率低

C)軟件質量難以控制

D)軟件成本不斷提高

(5)軟件生命周期是指

A)軟件產品從提出、實現、使用維護到停止使用退役的過程

B)軟件從需求分析、設計、實現到測試完成的過程

C)軟件的開發過程

D)軟件的運行維護過程

(6)面向對象方法中,繼承是指

A)壹組對象所具有的相似性質

B)壹個對象具有另壹個對象的性質

C)各對象之間的***同性質

D)類之間***享屬性和操作的機制

(7)層次型、網狀型和關系型數據庫劃分原則是

A)記錄長度

B)文件的大小

C)聯系的復雜程度

D)數據之間的聯系方式

(8)壹個工作人員可以使用多臺計算機,而壹臺計算機可被多個人使用,則實體工作人員、與實體計算機之間的聯系是

A)壹對壹

B)壹對多

C)多對多

D)多對壹

(9)數據庫設計中反映用戶對數據要求的模式是

A)內模式

B)概念模式

C)外模式

D)設計模式

(10)有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是

A)自然連接

B)交

C)投影

D)並

(11)以下關於結構化程序設計的敘述中正確的是

A)壹個結構化程序必須同時由順序、分支、循環三種結構組成

B)結構化程序使用goto語句會很便捷

C)在C語言中,程序的模塊化是利用函數實現的

D)由三種基本結構構成的程序只能解決小規模的問題

(12)以下關於簡單程序設計的步驟和順序的說法中正確的是

A)確定算法後,整理並寫出文檔,最後進行編碼和上機調試

B)首先確定數據結構,然後確定算法,再編碼,並上機調試,最後整理文檔

C)先編碼和上機調試,在編碼過程中確定算法和數據結構,最後整理文檔

D)先寫好文檔,再根據文檔進行編碼和上機調試,最後確定算法和數據結構

(13)以下敘述中錯誤的是

A) C程序在運行過程中所有計算都以二進制方式進行

B)C程序在運行過程中所有計算都以十進制方式進行

C)所有C程序都需要編譯鏈接無誤後才能運行

D)C程序中整型變量只能存放整數,實型變量只能存放浮點數

(14)有以下定義:int a; long b; double x,y;則以下選項中正確的表達式是

A)a%(int)(x-y)

B)a=x!=y;

C)(a*y)%b

D)y=x+y=x

(15)以下選項中能表示合法常量的是

A)整數:1,200

B)實數:1.5E2.0

C )字符斜杠:‘\’

D)字符串:"\007"

(16)表達式a+=a-=a=9的值是

A)9

B)_9

C)18

D)0

(17)若變量已正確定義,在if (W)printf(“%d\n,k”);中,以下不可替代W的是

A)a<>b+c

B)ch=getchar()

C)a==b+c

D)a++

(18)有以下程序

#include<stdio.h>

main()

{int a=1,b=0;

if(!a) b++;

else if(a==0)if(a)b+=2;

else b+=3;

printf(”%d\n”,b);

程序運行後的輸出結果是

A)0

B)1

C)2

D)3

(19)若有定義語句int a, b;double x;則下列選項中沒有錯誤的是

A)switch(x%2) B)switch((int)x/2.0

{case 0: a++; break; {case 0: a++; break;

case 1: b++; break; case 1: b++; break;

default : a++; b++; default : a++; b++;

} }

C)switch((int)x%2) D)switch((int)(x)%2)

{case 0: a++; break; {case 0.0: a++; break;

case 1: b++; break; case 1.0: b++; break;

default : a++; b++; default : a++; b++;

} }

(20)有以下程序

#include <stdio.h>

main()

{int a=1,b=2;

while(a<6){b+=a;a+=2;b%二10;}

printf(”%d,%d\n”,a,b);

程序運行後的輸出結果是

A)5,11

B)7,1

C)7,11

D)6,1

(21)有以下程序

#include<stdio.h>

main()

{int y=10;

while(y--);

printf(”Y=%d\n”,Y);

程序執行後的輸出結果是

A)y=0

B)y= -1

C)y=1

D)while構成無限循環

(22)有以下程序

#include<stdio .h>

main()

{char s〔」=”rstuv";

printf(”%c\n”,*s+2);

程序運行後的輸出結果是

A)tuv

B)字符t的ASCII碼值

C)t

D)出錯

(23)有以下程序

#include<stdio.h>

#include<string.h>

main()

{char x〔〕=”STRING”;

x〔0」=0;x〔1〕=’\0’;x〔2」=’0’;

printf(”%d %d\n”,sizeof(x),strlen(x));

程序運行後的輸出結果是

A)6 1

B)7 0

C)6 3

D)7 1

(24)有以下程序

#include<stdio.h>

Int f(int x);

main()

{int n=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

int f(int x)

{return x*2;}

程序運行後的輸出結果是

A)1

B)2

C)4

D)8

(25)以下程序段完全正確的是

A)int *p; scanf("%d",&p);

B)int *p; scanf(“%d”,p);

C)int k, *p=&k; scanf("%d",p);

D)int k, *p:; *p= &k; scanf(“%d”,p);

(26)有定義語句:int *p[4];以下選項中與此語句等價的是

A)int p[4];

B)int **p;

C)int *(p「4」);

D)int (*p)「4」;

(27)下列定義數組的語句中,正確的是

A)int N=10; B)#define N 10

int x[N]; int x[N];

C)int x[0..10〕; D)int x〔〕;

(28)若要定義壹個具有5個元素的整型數組,以下錯誤的定義語句是

A)int a[5]={0};

B)int b[]={0,0,0,0,0};

C)int c[2+3];

D)int i=5,d[i];

(29)有以下程序

#include<stdio.h>

void f(int *p);

main()

{int a〔5〕={1,2,3,4,5},*r=a;

f(r);printf(”%d\n”;*r);

void f(int *p)

{p=p+3;printf(”%d,”,*p);}

程序運行後的輸出結果是

A)1,4

B)4,4

C)3,1

D)4,1

(30)有以下程序(函數fun只對下標為偶數的元素進行操作)

# include<stdio.h>

void fun(int*a;int n)

{int i、j、k、t;

for (i=0;i<n壹1;1+=2)

{k=i;‘

for(j=i;j<n;j+=2)if(a〔j〕>a〔k])k=j;

t=a〔i];a〔i]=a〔k];a〔k]=t;

main()

{int aa「10」={1、2、3、4、5、6、7},i;

fun(aa、7);

for(i=0,i<7; i++)printf(”%d,”,aa〔i〕));

printf(”\n”);

程序運行後的輸出結果是

A)7,2,5,4,3,6,1

B)1,6,3,4,5,2,7

C)7,6,5,4,3,2,1

D)1,7,3,5,6;2,1

(31)下列選項中,能夠滿足“若字符串s1等於字符串s2,則執行ST"要求的是

A)if(strcmp(s2,s1)==0)ST;

B)if(sl==s2)ST;

C)if(strcpy(s l ,s2)==1)ST;

D)if(sl-s2==0)ST;

(32)以下不能將s所指字符串正確復制到t所指存儲空間的是

A)while(*t=*s){t++;s++;}

B)for(i=0;t[i]=s[i〕;i++);

C)do{*t++=*s++;}while(*s);

D)for(i=0,j=0;t[i++]=s[j++];);

(33)有以下程序( strcat函數用以連接兩個字符串)

#include<stdio.h>

#include<string .h>

main()

{char a〔20〕=”ABCD\OEFG\0”,b〔〕=”IJK”;

strcat(a,b);printf(”%s\n”,a);

程序運行後的輸出結果是

A)ABCDE\OFG\OIJK

B)ABCDIJK

C)IJK

D)EFGIJK

(34)有以下程序,程序中庫函數islower (ch)用以判斷ch中的字母是否為小寫字母

#include<stdio.h>

#include<ctype.h>

void fun(char*p)

{int i=0;

while (p[i〕)

{if(p[i]==’ ’&& islower(p「i-1」))p[i-1]=p[i-1]-‘a’+‘A’;

i++;

main()

{char s1〔100〕=”ab cd EFG!”;

fun(s1); printf(”%s\n”,s1);

程序運行後的輸出結果是

A)ab cd EFG!

B)Ab Cd EFg!

C)aB cD EFG!

D)ab cd EFg!

(35)有以下程序

#include<stdio.h>

void fun(int x)

{if(x/2>1)fun(x/2);

printf(”%d”,x);

main()

{fun(7);printf(”\n”);}

程序運行後的輸出結果是

A)1 3 7

B)7 3 1

C)7 3

D)3 7

(36)有以下程序

#include<stdio.h>

int fun()

{static int x=1;

x+=1;return x;

main()

{int i;s=1;

for(i=1;i<=5;i++)s+=fun();

printf(”%d\n”,s);

程序運行後的輸出結果是

A)11

B)21

C)6

D)120

(37)有以下程序

#inctude<stdio.h>

#include<stdlib.h>

Main()

{int *a,*b,*c;

a=b=c=(int*)malloc(sizeof(int));

*a=1;*b=2,*c=3;

a=b;

printf(“%d,%d,%d\n”,*a,*b,*c);

程序運行後的輸出結果是

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

(38)有以下程序

#include<stdio.h>

main()

{int s,t,A=10;double B=6;

s=sizeof(A);t=sizeof(B);

printf(“%d,%d\n”,s,t);

在VC6平臺上編譯運行,程序運行後的輸出結果是

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

(39)若有以下語句

Typedef struct S

{int g; char h;}T;

以下敘述中正確的是

A)可用S定義結構體變量

B)可用T定義結構體變量

C)S是struct類型的變量

D)T是struct S類型的變量

(40)有以下程序

#include<stdio.h>

main()

{short c=124;

c=c_______;

printf(“%d\n”、C);

若要使程序的運行結果為248,應在下劃線處填入的是

A)>>2 B)|248 C)&0248 D)<<I

二、填空題(每空2分,***30分)

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

(1)壹個棧的初始狀態為空。首先將元素5,4,3,2,1依次入棧,然後退棧壹次,再將元素 A,B,C,D依次入棧,之後將所有元素全部退棧,則所有元素退棧(包括中間退棧的元素)的順序為1

(2)在長度為n的線性表中,尋找最大項至少需要比較2次。

(3)壹棵二叉樹有10個度為1的結點,7個度為2的結點,則該二叉樹***有3個結點。

(4)僅由順序、選擇(分支)和重復(循環)結構構成的程序是4程序。

(5)數據庫設計的四個階段是:需求分析,概念設計,邏輯設計5。

(6)以下程序運行後的輸出結果是6。

#include<stdio.h>

main()

{int a=200,b=010;

printf(”%d%d\n”,a,b);

(7)有以下程序

#include<stdio.h>

main()

{int x,Y;

scanf(”%2d%ld”,&x,&y);printf(”%d\n”,x+y);

程序運行時輸入:1234567程序的運行結果是7。

(8)在C語言中,當表達式值為0時表示邏輯值“假”,當表達式值為8時表示邏輯值“真”。

(9)有以下程序

#include<stdio.h>

main()

{int i,n[]={0,0,0,0,0};

for (i=1;i<=4;i++)

{n[i]=n[i-1]*3+1; printf(”%d ",n[i]);}

}

程序運行後的輸出結果是9。

(10)以下fun函數的功能是:找出具有N個元素的壹維數組中的最小值,並作為函數值返回。請填空。(設N已定義)

int fun(int x〔N〕)

{int i,k=0;

for(i=0;i<N;I++)

if(x〔i〕

return x〔k〕;

}

(11)有以下程序

#include<stdio.h>

int*f(int *p,int*q);

main()

{int m=1,n=2,*r=&m;

r=f(r,&n);printf(”%d\n”,*r);

int*f(int *p,int*q)

{return(*p>*q)?p:q;}

程序運行後的輸出結果是11

(12)以下fun函數的功能是在N行M列的整形二維數組中,選出壹個最大值作為函數值返回,請填空。(設M,. N已定義)

int fun(int a〔N〕[M))

{int i,j,row=0,col=0;

for(i=0;i<N;I++)

for(j=0;j

if(a〔i〕〔j〕>a〔row〕〔col〕){row=i;col=j;}

return(12):

}

(13)有以下程序

#include<stdio.h>

main()

{int n[2],i,j;

for(i=0;i<2;i++)n[i]=0;

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

for(j=0;j<2;j++)n〔j〕=n「i」+1;

printf(”%d\n”,n[1]);

程序運行後的輸出結果是13

(14)以下程序的功能是:借助指針變量找出數組元素中最大值所在的位置並輸出該最大值。請在輸出語句中填寫代表最大值的輸出項。

#include<stdio.h>

main()

{int a〔10〕,*p,*s;

for(p=a;p-a<10;p++)scanf(”%d”,p);

for(p=a,s=a;p-a<10;p++)if(*p>*s)S=P;

printf("max=%d\n”,14);

(15)以下程序打開新文件f.txt,並調用字符輸出函數將a數組中的字符寫入其中,請填空。

#include<stdio.h>

main()

{15*fp;

char a〔5〕={’1’,’2’,’3’,’4’,’5’},i;

fp=fopen(”f .txt”,”w”);

for(i=0;i<5;i++)fputc(a[i],fp);

fclose(fp);

  • 上一篇:Restful Api路徑定義規則
  • 下一篇:公司app制作需要多少錢?
  • copyright 2024編程學習大全網