2022年安徽省安慶市全國計算機等級考試C語言程序設計_第1頁
2022年安徽省安慶市全國計算機等級考試C語言程序設計_第2頁
2022年安徽省安慶市全國計算機等級考試C語言程序設計_第3頁
2022年安徽省安慶市全國計算機等級考試C語言程序設計_第4頁
2022年安徽省安慶市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩104頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2022年安徽省安慶市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列程序的輸出結果是______。#include<stdio.h>main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);}

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

2.下面敘述中錯誤的是()。

A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤

B.對被調試的程序進行“錯誤定位”是程序調試的必要步驟

C.程序調試通常也稱為Debug

D.軟件測試應嚴格執(zhí)行測試計劃,排除測試的隨意性

3.有以下程序:

程序執(zhí)行后的輸出結果是()。

A.357B.753C.369D.751

4.在單鏈表中,增加頭結點的目的是______。

A.方便運算的實現(xiàn)B.使單鏈表至少有一個結點C.標識表結點中首結點的位置D.說明單鏈表是線性表的鏈式存儲實現(xiàn)

5.

6.在一個有頭結點的鏈隊列中,假設f和r分別為隊首和隊尾指針,則隊頭出隊的運算是()。

A.q=f->next;f->next=f->next->next;free(q);

B.q=f;f->next=f->next->next;free(q);

C.f->next=f->next->next;q=f->next;free(q);

D.q=f->next->next;f=f->next;free(q);

7.某二叉樹結點的中序序列為ABCDEFG,后序序列為BDCAFGE,則其左子樹中結點數(shù)目為()

A.3B.2C.4D.5

8.下列不屬于軟件工程的3個要素的是

A.工具B.過程C.方法D.環(huán)境

9.下列敘述中正確的是()。

A.數(shù)據(jù)庫系統(tǒng)是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫管理系統(tǒng)就是數(shù)據(jù)庫系統(tǒng)

D.以上三種說法都不對

10.若k是int類型變量,且有以下for語句:for(k=-1;k<O;k++)printf("****\n");下面關于語句執(zhí)行情況的敘述中正確的是()。、A.循環(huán)體執(zhí)行一次B.循環(huán)體執(zhí)行兩次C.循環(huán)體一次也不執(zhí)行D.構成無限循環(huán)

11.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++) for(k=1;k<3;k++); printf(“*”);程序段的運行結果是()。

A.**B.****C.*D.********

12.以下程序的輸出結果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

13.樹最適合用來表示()。

A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素C.元素之間具有分支層次關系的數(shù)據(jù)D.元素之間無聯(lián)系的數(shù)據(jù)

14.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-1C.非零值D.0

15.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

則在程序下劃線處應填入的是()。

A.i-1B.iC.i+1D.4一i

16.給定數(shù)列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用冒泡排序時,第一趟掃描結果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

17.

18.以下程序的輸出結果是

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*(z++));}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);prt(&a,&b,&c);}

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,21

D.11,41,2112,42,22

19.以下程序的輸出結果是().A.A.2222B.2468C.222D.246

20.下列敘述中正確的是()。

A.對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數(shù)為n

B.對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為n/2

C.對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為log2n

D.對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為nlog2n

二、2.填空題(20題)21.若定義#definePI3.14159,則執(zhí)行完下列程序后輸出結果是______。

#definePI3.14159;printf("PI=%f",PI);

22.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。

23.下面程序把從終端讀入的文本(用#作為文本結束標志)復制到一個名為file.txt的新文件中。補足所缺語句。

main()

{charch;

FILE*fp;

if((fp=fopen(______))=NULL)exit(0);

while((ch=getchar())!='#')

fputc(ch,fp);

______;

}

24.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

25.下列程序的輸出結果是______。

#include<stdio.h>

main()

{intx=1,y=1,a=1,b=1;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

printf("a=%d,b=%d\n",a,B);

}

26.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

27.需求分析的最終結果是產生【】。

28.以下程序運行結果是【】。

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

for(i=0;i<3;i++)a[i]+=a[i];

for(i=0;i<3;i++)printf("%d,",a[i]);

printf("\n");}

29.軟件工程研究的內容主要包括:【】技術和軟件工程管理。

30.執(zhí)行下面程序段后,k值是【】。

k=1;n=263;

do

{k*=n%10;n/=10;

}while(n);

31.通常,將軟件產品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為【】。

32.為了建立如圖所示的存儲結構(即每個結點含兩個域,data是數(shù)據(jù)域,next是指向結點的指針域)。請?zhí)羁铡?/p>

structlink{chardata;【】;}node;

33.程序的運行結果為【】。

main()

{intx,y,z;

x=24;

y=024;

z=0x24;

printf("%d,%d,%d\n",x,y,z);

}

34.下列程序的循環(huán)次數(shù)是______。

x=2;

do

{x=x*x;}

while(!x);

35.棧中允許進行插入和刪除的一端叫做______。

36.以下程序的輸出結果是()。

#include<stdio.h>

voidfun(intx)

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

printf("%d",x);

}

main()

{fun(3);printf("\n");

}

37.下列程序的輸出結果是______。

main()

{inta=2,b=4,e=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

printf("%d\n",c);

}

38.設有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續(xù)寫內容。

fw=fopen("readme.txt",【】);

39.下面程序的運行結果是______。

voidswap(int*a,int*B)

{

int*t;

t=a;a=b;b=t;

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

printf("%d%d\n",*p,*q);

}

40.若有語句

inti=-19,j=i%4;

printf("%d\n",j),

則輸出的結果是______。

三、1.選擇題(20題)41.請選出以下程序的輸出結果_______。#include<stdio.h>sub(int*s,inty){staticintt=3,y=s[t];t-;}main(){inta[]={1,2,3,4},i,x=0;for(i=0;i<4;i++){sub(a,x);printf("%d",x);}printf("\n");}

A.1234B.4321C.0D.4444

42.______語言負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構建。

A.數(shù)據(jù)操縱語言(DML)B.數(shù)據(jù)控制語言(DCL)C.結構化查詢語言(SQL)D.數(shù)據(jù)定義語言(DDL)

43.若有運算符:>、=、<<、%、sizeof,則它們按優(yōu)先級(由高至低)的正確排列順序為()。

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

44.有以下程序:#include<sldio.h>main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序執(zhí)行后的輸出結果是()。

A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5

45.對于n個結點的單向鏈表(無表頭結點),需要指針單元的個數(shù)至少為______。

A.n-1B.nC.n+1D.2n

46.若有以下定義語句:doublea[5];inti=0;能正確給a數(shù)組元素輸入數(shù)據(jù)的語句是()

A.scanf("%lf%lf%lf%lf%lf,a);

B.for(i=0;i<=5;i++)scanf("%lf,a+i);

C.while(i<5)scanf("%lf",&a[i++]);

D.while(i<5)seanf("%lf,a+i);

47.若調用fputc函數(shù)輸出字符成功,則其返回值是()。

A.EOFB.1C.0D.輸出的字符

48.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}則程序運行后的輸出結果是()。

A.1,1B.1,4C.4,1D.4,4

49.若有語句:char*line[5];,以下敘述中正確的是

A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為char的指針變量

B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組

C.定義line是一個指針數(shù)組,語句中的。號稱為間址運算符

D.定義line是一個指向字符型函數(shù)的指針

50.有以下程序:voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");}執(zhí)行后輸出結果是()。

A.5,4,3,2,1,B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,

51.下列對于軟件測試的描述中正確的是()。

A.軟件測試的目的是證明程序是否正確

B.軟件測試的目的是使程序運行結果正確

C.軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤

D.軟件測試的目的是使程序符合結構化原則

52.字符串"\\\"ABCDEF\"\\"的長度是()。

A.15B.10C.7D.8

53.下列程序的輸出結果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if((i*i>=20)&&(i*i<=100))}break;printf("%d\n",i*i);}

A.49B.36C.25D.64

54.執(zhí)行下面的程序段后,變量k中的值為()。intk=3,s[2];s[0]=k;k=s[1]*10;

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

55.若有定義血b[8],*p=b;則p+6表示()。

A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6

56.在軟件生命周期中,能準確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。A.概要設計B.詳細設計C.可行性分析D.需求分析

57.有以下程序,其中函數(shù)的功能是將多個字符串按字典順序排序:#include<string.h>voidf(char*p[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){t=p[i];p[i]=p[j]p[j]=t;}}main(){char*p[5]={"abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[1]));}程序運行后的輸出結果是______。

A.2B.3C.6D.4

58.在設計程序時,應采納的原則之一是()。

A.不限制goto語句的使用B.減少或取消注解行C.程序越短越好D.程序結構應有助于讀者理解

59.用樹形結構來表示實體之間聯(lián)系的模型稱為()。

A.關系模型B.層次模型C.網狀模型D.數(shù)據(jù)模型

60.以下程序的輸出結果是______。main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}

A.x=4B.x=8C.x=6D.x=12

四、選擇題(20題)61.有以下程序:

#include<stdio.h>

main

{shortC=124;

C=C_;

printf("%d\n",c);

}

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

A.>>2

B.|248

C.&0248

D.<<1

62.以下不構成無限循環(huán)的語句或語句組是()。

63.有以下程序:

程序運行后的輸出結果是()。

A.32B.16C.1D.0

64.在滿足實體完整性約束的條件下()。

A.一個關系中應該有一個或多個候選關鍵字

B.一個關系中只能有一個候選關鍵字

C.一個關系中必須有多個候選關鍵字

D.一個關系中可以沒有候選關鍵字

65.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是()。

66.若有以下定義和語句:

chars[10]="abcd!",*s2="\nl23\\";

Drintf("%d%d\n",strlen(sl),strlen(s2));

則輸出結果是()。

A.55B.105C.107D.58

67.

68.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

69.有以下程序:

程序運行后的輸出結果是()。

A.1.1.3B.2,2,3C.1,2,3D.3,3,3

70.(21)算法的空間復雜度是指______。

A.算法程序的長度

B.算法程序中的指令條數(shù)

C.算法程序所占的存儲空間

D.算法執(zhí)行過程中所需要的存儲空間

71.

72.

73.

74.

75.

76.以下敘述中錯誤的是()。

A.C程序對預處理命令行的處理是在程序執(zhí)行的過程中進行的

B.預處理命令行的最后不能以分號表示結束

C.#defineMAX是合法的宏定義命令行

D.在程序中凡是以“#”開始的語句行都是預處理命令行

77.以下敘述中正確的是()。A.A.當對文件的讀(寫)操作完成之后,必須將它關閉,否則可能導致數(shù)據(jù)丟失

B.打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

C.在一個程序中當對文件進行了寫操作后,必須先關閉該文件然后再打開,才能讀到第1個數(shù)據(jù)

D.c語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)

78.

79.在下列關系運算中,不改變關系表中的屬性個數(shù)但能減少元組個數(shù)的是

A.連接B.選擇C.投影D.笛卡兒乘積

80.下面描述中,不屬于軟件危機表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產率低C.軟件質量難以控制D.軟件成本不斷提高

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:在字符串str中找出ASCⅡ碼值最大的字符,將其放在第一個位置上,并將該字符前的原字符向后順序移動。例如,調用proc()函數(shù)之前給字符串輸入DcybkdGT,調用后字符串中的內容為yDcbkdOT。

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。

試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)其功能是移動一維數(shù)組中的內容,若數(shù)組中有n個整數(shù),要求把下標為0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。例如,一維數(shù)組中的原始內容為1、2、3、4、5、6、7、8、9、10;P的值為3。移動后,一維數(shù)組中的內容應為5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){ inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; inti,p,n=15; printf(“Theoriginaldata:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\nEnterp:”); scanf(“%d”,&p); fun(a,p,n); printf(“\nThedataaftermoving:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\n”);}

參考答案

1.C

2.A軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項A錯誤。程序調試的基本步驟有:錯誤定位、修改設計和代碼,以排除錯誤、進行回歸測試,防止引進新的錯誤。程序調試通常稱為Debug,即排錯。軟件測試的基本準則有:所有測試都應追溯到需求、嚴格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。故答案為A選項。

3.A本題考查的是for循環(huán)與二維數(shù)組的定義和引用。當定義二維數(shù)組的初始化列表只使用一重花括號時,其中的每個值依次代表從第l行的第1個元素起,直到第l行滿,接著代表第2行、第3行……的每一個元素。程序中的循環(huán)將循環(huán)3次,循環(huán)變量i的值分別是0、1、2,所以3次循環(huán)中輸出的數(shù)分別是:t[2一O][D]、t[2-1][1]、t[2~2]121,即t[2][0]、t[1][l]、t[0][2],所以最后輸出的結果為357。故應該選擇A)。

4.A\nA?!窘馕觥款^結點不僅標識了表中首結點的位置,而且根據(jù)單鏈表(包含頭結點)的結構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結點的目的是為了便于運算的實現(xiàn)。

\n

5.D

6.A

7.C

8.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制和管理。

9.B解析:本題考查數(shù)據(jù)庫系統(tǒng)的基本概念和知識。

數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還心須有其他相關軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應用軟件開發(fā)工具等。對于大型的多用戶數(shù)據(jù)庫系統(tǒng)和網絡數(shù)據(jù)庫系統(tǒng),還需要多用戶系統(tǒng)軟件和網絡系統(tǒng)軟件的支持。因此,選項A的說法是錯誤的。

數(shù)據(jù)庫可以看成是長期存儲在計算機內的、大量的、有結構的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且容許子集任意重疊。數(shù)據(jù)庫的根本目標是要解決數(shù)據(jù)的共享問題。因此,選項B的說法是正確的。

通常將引入數(shù)據(jù)庫技術的計算機系統(tǒng)稱為數(shù)據(jù)庫系統(tǒng)。一個數(shù)據(jù)庫系統(tǒng)通常由五個部分組成,包括相關計算機的硬件、數(shù)據(jù)庫集合、數(shù)據(jù)庫管理系統(tǒng)、相關軟件和人員。

因此,選項C的說法是錯誤的。

因此,本題的正確答案是選項B。

10.A本題考查簡單的for語句,程序中當k<0時循環(huán)才執(zhí)行,所以答案選擇A。

11.C因為內層循環(huán)“for(k=1;k<3;k++)”后面直接跟了空語句“;”,所以在循環(huán)內部什么操作也不做,跳出外層循環(huán)后執(zhí)行printf語句,輸出一個“*”。故本題答案為C選項。

12.B第一個for循環(huán)的作用是讓p指向每行的首地址,第二個for循環(huán)的作用是把它指向的字符串輸出,故選擇B選項。

13.C樹最適合用來表示元素之間具有分支層次關系的數(shù)據(jù),故本題選C。

14.D解析:文件狀態(tài)檢測函數(shù)feof(fp)的功能是:測試所指的文件的位置指針是否已達到文件尾,如果已到達文件尾,則函數(shù)返回非。值;否則返回0,表示文件尚未結束。

15.B

\n本題中要求輸出右上半角的數(shù),對角線上的數(shù)的下標相同,所以j=i。

\n

16.D

17.B

18.B解析:考查指針作為參數(shù)的函數(shù)調用。盡管C語言以傳值方式進行函數(shù)調用,但也可以通過傳遞指針的值(變量的地址)來達到修改實參變量值的目的,這是此題主要說明的問題。另外,應注意表達式\ue008*(z++)\ue009的值是*z,其后的z++在程序中無實際作用。函數(shù)調用時,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次調用函數(shù)時,*x=a=10,*y=b=40,*z=c=20輸出結果為11,41,20,至此,已經可以肯定選項B)是正確的。在第一次輸出后,a=11,b=41,c=20,第二次輸出為:12,42,20。

19.D

20.C\n\tC?!窘馕觥慷址ú檎抑贿m用于順序存儲的有序表,對于長度為n的有序線性表,最壞情況只需比較log2n次。

21.PI=3.14159PI=3.14159解析:本題先定義了一個宏名PI,以后在程序中出現(xiàn)PI都用3.14159替代,但是C語言規(guī)定:雙引號中的宏名是不進行替換的。

22.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內存。然后將分配好的內存塊的首地址作為void*(未知類型指針)返回.故標準的調用形式應該寫成:

p(double*)malloc(sizeof(double));

23.file.txt"w"fclose(fp)。file.txt,'w'fclose(fp)。解析:向文件中寫數(shù)據(jù),并且該文件是新文件,應當使用文件打開方式'w',文件操作結束時要用函數(shù)fclose關閉文件,以防數(shù)據(jù)丟失。

24.空間復雜度和時間復雜度算法的復雜性是指對一個在有限步驟內終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復雜性,算法的計算量是算法的時間復雜性。

25.a=2b=3a=2,b=3解析:分析程序,程序從x=1語句開始執(zhí)行,之后執(zhí)行第一個switch語句,switch(x)=switch(1),所以執(zhí)行case1,case1語句中包含一個復合switch語句:這時執(zhí)行第二個switch語句,此時y=1,所以switch(y)=switch(1),因此執(zhí)行case1,將b加1,得到b=2,遇到break語句,退出第二個switch語句,則整個case1的復合語句執(zhí)行完畢,由于在這個case1的后面沒有break語句使其退出第一個switch語句,所以接著執(zhí)行下列的case2后面的語句,即將a,b各加1,得到a=2,b=3。

26.88解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個一維數(shù)組都有4個元素,a[0]的元素為ap[0][0]、a[0][1]、a[0][2]、a[0][3]。

27.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。

28.0240480,2,4\r\n0,4,8解析:本題主要考查了for循環(huán)語句的使用以及靜態(tài)局部變量的特點。

29.軟件開發(fā)

30.3636解析:本題循環(huán)體共執(zhí)行了3次。第一次:k=3,n=26:第二次:k=18,n=2;第三次:k=36,n=0。

31.軟件生命周期軟件生命周期解析:軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬于軟件生命周期。一般包括可行性研究與需求分析、設計、實現(xiàn)、測試、交付使用以及維護等活動。

32.structlink*next

33.242036

34.11解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復執(zhí)行循環(huán)體語句,否則退出循環(huán);do…while語句的特點是先執(zhí)行后判斷,因此循環(huán)體至少執(zhí)行1次.本程序中x=2不符合循環(huán)條件,所以只循環(huán)1次。

35.棧頂棧頂解析:棧是限定在表的一端進行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。

36.1313解析:函數(shù)fun是一個遞歸函數(shù)。執(zhí)行fun(3);,x=3,x/2=1>0,又調用f(1),此時,x=1,x/2=0,不滿足繼續(xù)遞歸調用的條件,輸出1,返回到fun(3)中,輸出3。所以本題的輸出結果為13。

37.88解析:本程序定義了3個指針變量p1、p2、p,并且將a、b的地址分別賦給p1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(P)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數(shù)8賦給了變量c。

38.aa解析:本題考查的是文件的打開方式。要向文本文件的末尾續(xù)寫內容,需要使用方式“a”(追加)打開文件。

39.3535解析:在主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調用“swap(p,q)”,把p和q中的地址值傳給了形參指針變量a和b,a和b分別指向7實參x和y。在函數(shù)swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實參的值,所以函數(shù)調用返回后x和y依舊是原來的值。

40.-3-3解析:本題考核的知識點是運算符“%’的應用。該運算符是求兩個數(shù)相除的余數(shù),其結果與被除數(shù)的符號一致,本題中“-19%4”的值為“-3”,所以說空格處應該填-3。

41.C解析:x作為函數(shù)sub()的實參時,函數(shù)對x值的改變沒有返回主函數(shù),并不能使得x的值變化,所以在打印時,x的值是始終不變的,即為0。

42.D解析:數(shù)據(jù)庫管理系統(tǒng)一般提供以下3種數(shù)據(jù)語言(DataLanguage),來完成它的功能。(1)數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage)。該語言負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構建。顯然D為正確答案。(2)數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)。該語言負責數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作。(3)數(shù)據(jù)控制語言(DCL,DataControlLanguage)。該語言負責數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復等功能,包括系統(tǒng)初啟程序、文件讀寫與維護程序、存取路徑管理程序、緩沖區(qū)管理程序、安全性控制程序、完整性檢查程序、并發(fā)控制程序、事務管理程序、運行日志管理程序、數(shù)據(jù)庫恢復程序等。

43.D解析:主要考查運算符的優(yōu)先級。sizeof的優(yōu)先級最高,后面的順序是:%、<<、>,優(yōu)先級最低的是“=”。

44.B解析:當x=0,y=5,z=3時,z->0&&++x<5成立,執(zhí)行y=y-1;此時y=5-1=4,z=z-1=2,x=x+1=1;條件z-->0&&++x<5仍然成立,繼續(xù)執(zhí)行y=y-1,此時y=y-1=3,z=1,x=2;條件z-->0&&++x<5仍然成立,繼續(xù)執(zhí)行y=y-1,此時y=y-1=2,z=0,x=3;條件不再成立,執(zhí)行條件判斷后x=3,y=2,z=-1。

45.C解析:在n個結點的單向鏈表(無表頭結點)中,每個結點都有一個指針單元(即指針域),加上頭指針,至少需要n+1個指針單元。

46.C

47.Dfputc函數(shù)的一般調用形式為fputc(ch,fp),其中ch是要輸出的字符,它可以是一個字符常量,也可以是一個字符變量,fp是文件指針變量。函數(shù)的作用是將字符(ch的值)輸出到fp所指向的文件中。

fputc函數(shù)也返回一個值,如果輸出成功,則返回值就是輸出的字符;如果輸出失敗,則返回一個EOF(-1)。因此,本題的正確答案選D。

48.C解析:{intm=4;s+=m;}是復合語句,m=4,s+=m等價于s=s+m=0+4=4。t+=m等價于t=t+m,這里m為全局變量,值為1,t=t+m=O+1=1。

49.A解析:C語言中[]比*優(yōu)先級高,因此line先與[5]結合,形成line[5]形式,這是數(shù)組形式,它有5個元素,然后再與line前面的“*”結合,表示此數(shù)組是一個指針數(shù)組,每個數(shù)組元素都是一個基類型為char的指針變量。

50.A解析:在C語言中所謂函數(shù)的遞歸是指在調用一個函數(shù)的過程中,又出現(xiàn)了直接或間接調用該函數(shù)本身,直接調用該函數(shù)本身的稱為函數(shù)遞歸,而間接調用該函數(shù)稱為函數(shù)的間接遞歸調用。由程序可以看出函數(shù)f(a,i,j)為一遞歸函數(shù),其功能是當i<j時,將數(shù)組中的元素a[i]和a[j]交換,然后再調用函數(shù)f(a,i+1,j-1),將數(shù)組中a[i+1]和a[j--]交換,這樣一直遞歸到數(shù)組下標i=j,可見該遞歸函數(shù)的作用是使數(shù)組中首尾元素依次互換。主函數(shù)中定義了一個長度為5的數(shù)組aa并初始化,然后調用f(a,0,4),將數(shù)組a中的元素依次互換,故最后for循環(huán)輸出的數(shù)組aa中各元素的值為5、4、3、2、1,所以,4個選項中選項A符合題意。

51.C解析:關于軟件測試的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一書中給出了深刻的闡述:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;一個好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯誤的用例;一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。整體來說,軟件測試的目的就是盡可能多地發(fā)現(xiàn)程序中的錯誤。本題答案為C。

52.B解析:本題涉及字符串最基本的兩個概念:①字符串的長度是指字符串中字符的個數(shù),但不包括字符串結束符;②以反斜杠“\\”開頭的特殊字符序列,意思是把反斜杠后面的字符序列轉換成特定的含義,而不是原來的含義,不包含在字符串長度之內,“\\”連同后面的字符為一個長度。

53.C解析:本題考查if語句。當執(zhí)行到第一個滿足(i*i>=20)&&(i*i<=100)這個條件的i出現(xiàn)時,通過break語句跳出循環(huán),執(zhí)行下列的printf語句。

54.A解析:定義數(shù)組時,沒有對s[1]進行初始化,因此s[1]的值不確定,所以k=s[1]*10的值也不確定。

55.B解析:指針中存放的是變量的地址,指針也可以進行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中將p+6指的是將指針向后移動了6個存儲單元,指向b[6],存放的是b[6]的地址。

56.D通常,將軟件產品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說:軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬于軟件生命周期。

軟件生命周期的主要活動階段為:

①可行性研究和計劃制定。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標和總的要求,給出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成開發(fā)任務的實施計劃。

②需求分析。對待開發(fā)軟件提出的需求進行分析并給出詳細定義,即準確地確定軟件系統(tǒng)的功能。編寫軟件,規(guī)格說明書及初步的用戶手冊,提交評審。

③軟件設計。系統(tǒng)設計人員和程序設計人員應該在反復理解軟件需求的基礎上,給出軟件的結構、模塊的劃分、功能的分配以及處理流程。

④軟件實現(xiàn)。把軟件設計轉換成計算機可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。

⑤軟件測試。在設計測試用例的基礎上,檢驗軟件的各個組成部分。編寫測試分析報告。

⑥運行和維護。將已交付的軟件投入運行,并在運行使用中不斷地維護,根據(jù)新提出的需求進行必要而且可能的擴充和刪改。

57.D解析:strcmp(s1,s2)是比較兩個字符串的大小,s1>s2時值為正數(shù),s1<s2時值為負數(shù),s1=s2時值為0。調用f(p,5)函數(shù)的功能是將存儲字符串的數(shù)組p中的字符串從小到大進行排列。最后的排列結果為:p[5]={'aabdfg','abbd','abc','cd','dcdbe'},最后要求輸出的是'abbd'的長度。

58.D解析:濫用goto語句將使程序流程無規(guī)律,可讀性差,因此選項A)不選;注解行有利于對程序的理解,不應減少或取消,選項B)也不選;程序的長短要依照實際情況而論,而不是越短越好,選項C)也不選。

59.B解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有3種:層次模型、網狀模型和關系模型。在層次模型中,實體之間的聯(lián)系是用樹結構來表示的,其中實體集(記錄型)是樹中的結點,而樹中各結點之間的連線表示它們之間的關系。所以,本題的正確答案是B。

60.B

61.D\n124的2進制值為1111100,要輸出為248即124*2,則2進制值為11111000,即右移l位,所以選D。

62.A選項A)中d0后面的語句只執(zhí)行了一次便結束了循環(huán);B)選項中條件while(1)永遠成立,因此是死循環(huán);C)選項中n的值為l0,而循環(huán)體為空語句,所以while(n)永遠為真,進入死循環(huán);D)選項中fbr語句第二個表達式為空,因此沒有判定條件,進入死循環(huán)。因此本題答案為A)。

63.C本題中將8賦值給字符變量a,則a的二進制為”00001000”,a>>3的位運算是把a向右移動三位,結果為”00000001”,輸出其十進制的值1。

64.A【答案】:A

【知識點】:實體完整性與候選關鍵字

【解析】:在滿足數(shù)據(jù)完整性約束的條件下,一個關系可以有一個或多個候選關鍵字,但至少有一個候選關鍵字,故選A。

65.B一雛數(shù)組的定義方式為:類型說明符數(shù)組名[常量表達式];注意定義數(shù)組時,元素個數(shù)不能是變量。因此應該選B選項。

66.A\n\\n和\\\\分別為轉義字符,各占據(jù)一個字符的位置。

\n

67.D

68.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。

69.DmaUoc函數(shù)動態(tài)分配一個整型的內存空間,然后把函數(shù)返回的地址用(int{)強制類型轉換為整型指針,再把它賦給a,b,c,即讓指針變量a,b,c都指向剛申請的內存空間。所以只有最后一個賦值語句+C=3的值保留在了該空間內,因為a、b、C三個指針變量均指向該空間,所以打印該空間內的數(shù)值為3。

70.D

71.A

72.B

73.C

74.B

75.A

76.AC程序對預處理命令行的處理是在程序編譯的過程中進行的,所以選擇A)。

77.AB)選項中打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進行追加操作等。c)選項中在一個程序中當對文件進行了寫操作后,不用先關閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進行重新定位即可。D)選項中,C語言中的文件可以進行隨機讀寫。故本題答案為A)。

78.A

79.B笛卡兒乘積運算。假設關系R和關系S的元數(shù)個數(shù)與屬性個數(shù)分別為m和n。R×S表示R和S的笛卡兒積,R×S={(m+n)個屬性的一個元組集合,每個元組的前m個屬性值來自R的一個元組,后n個屬性值來自S的一個元組的所有組合}。

連接。它是從兩個關系的笛卡兒乘積結果中選取屬性間滿足一定條件的元組,它不能實現(xiàn)題目中給出的條件。

投影。它是從關系中挑選若干屬性組成新的關系,它是對關系進行列操作的方法。

選擇。它是從關系中找到滿足條件的所有元組的操作,即不改變關系表中的屬性個數(shù)但能減少元組個數(shù)的操作,它是對關系進行行操作的方法。

80.A軟件危機主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)成本和進度無法控制;軟件質量難以保證;軟件不可維護或維護程度非常低;軟件的成本不斷提高;軟件開發(fā)生產率的提高趕不上硬件的發(fā)展和應用需求的增長。所以選擇A。

81.(1)錯誤:voidproc(chart)

正確:voidproc(char*t)

(2)錯誤:t=q+i;

正確:q=t+i;

【解析】由主函數(shù)中函數(shù)調用的實參可知,形參應該為字符型指針變量.即“voidproc(chart)”應改為“voidproc(char*t);”。由函數(shù)proc()可知,變量q是指向最大字符的指針,最大字符位于字符串str的第i個位置。因此,“t=q+i;”應改為“q=t+i;”。

82.voidfun(int*w,intp,intn){ intX,j,ch; for(x=0;x<=p;x++) { ch=w[0]; for(j=1;j /*通過for循環(huán)語句,將p+1~n-1(含n-1)之間的數(shù)組元素依次向前移動p+1個存儲單元*/ { w[j-1]=w[j]; } w[n-1]=ch; /*將下標為0~p的數(shù)組元素逐一賦給數(shù)組w[n-1]*/ }}本題要求把下標為0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后??梢愿鶕?jù)輸入的p值,通過for循環(huán)語句,將p+1~n-1(含n-1)之間的數(shù)組元素依次向前移動p+1個存儲單元,即w[j-1]=w[j];。同時將下標為0~p的數(shù)組元素逐一賦給數(shù)組w[n-1],也就是通過語句w[n-1]=ch;來實現(xiàn)此操作。2022年安徽省安慶市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列程序的輸出結果是______。#include<stdio.h>main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);}

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

2.下面敘述中錯誤的是()。

A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤

B.對被調試的程序進行“錯誤定位”是程序調試的必要步驟

C.程序調試通常也稱為Debug

D.軟件測試應嚴格執(zhí)行測試計劃,排除測試的隨意性

3.有以下程序:

程序執(zhí)行后的輸出結果是()。

A.357B.753C.369D.751

4.在單鏈表中,增加頭結點的目的是______。

A.方便運算的實現(xiàn)B.使單鏈表至少有一個結點C.標識表結點中首結點的位置D.說明單鏈表是線性表的鏈式存儲實現(xiàn)

5.

6.在一個有頭結點的鏈隊列中,假設f和r分別為隊首和隊尾指針,則隊頭出隊的運算是()。

A.q=f->next;f->next=f->next->next;free(q);

B.q=f;f->next=f->next->next;free(q);

C.f->next=f->next->next;q=f->next;free(q);

D.q=f->next->next;f=f->next;free(q);

7.某二叉樹結點的中序序列為ABCDEFG,后序序列為BDCAFGE,則其左子樹中結點數(shù)目為()

A.3B.2C.4D.5

8.下列不屬于軟件工程的3個要素的是

A.工具B.過程C.方法D.環(huán)境

9.下列敘述中正確的是()。

A.數(shù)據(jù)庫系統(tǒng)是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫管理系統(tǒng)就是數(shù)據(jù)庫系統(tǒng)

D.以上三種說法都不對

10.若k是int類型變量,且有以下for語句:for(k=-1;k<O;k++)printf("****\n");下面關于語句執(zhí)行情況的敘述中正確的是()。、A.循環(huán)體執(zhí)行一次B.循環(huán)體執(zhí)行兩次C.循環(huán)體一次也不執(zhí)行D.構成無限循環(huán)

11.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++) for(k=1;k<3;k++); printf(“*”);程序段的運行結果是()。

A.**B.****C.*D.********

12.以下程序的輸出結果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

13.樹最適合用來表示()。

A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素C.元素之間具有分支層次關系的數(shù)據(jù)D.元素之間無聯(lián)系的數(shù)據(jù)

14.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-1C.非零值D.0

15.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

則在程序下劃線處應填入的是()。

A.i-1B.iC.i+1D.4一i

16.給定數(shù)列(541,132,984,746,518,181,946,314,205,827)按照從小到大的順序排列,采用冒泡排序時,第一趟掃描結果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

17.

18.以下程序的輸出結果是

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*(z++));}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);prt(&a,&b,&c);}

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,21

D.11,41,2112,42,22

19.以下程序的輸出結果是().A.A.2222B.2468C.222D.246

20.下列敘述中正確的是()。

A.對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數(shù)為n

B.對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為n/2

C.對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為log2n

D.對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數(shù)為nlog2n

二、2.填空題(20題)21.若定義#definePI3.14159,則執(zhí)行完下列程序后輸出結果是______。

#definePI3.14159;printf("PI=%f",PI);

22.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。

23.下面程序把從終端讀入的文本(用#作為文本結束標志)復制到一個名為file.txt的新文件中。補足所缺語句。

main()

{charch;

FILE*fp;

if((fp=fopen(______))=NULL)exit(0);

while((ch=getchar())!='#')

fputc(ch,fp);

______;

}

24.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

25.下列程序的輸出結果是______。

#include<stdio.h>

main()

{intx=1,y=1,a=1,b=1;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

printf("a=%d,b=%d\n",a,B);

}

26.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

27.需求分析的最終結果是產生【】。

28.以下程序運行結果是【】。

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

for(i=0;i<3;i++)a[i]+=a[i];

for(i=0;i<3;i++)printf("%d,",a[i]);

printf("\n");}

29.軟件工程研究的內容主要包括:【】技術和軟件工程管理。

30.執(zhí)行下面程序段后,k值是【】。

k=1;n=263;

do

{k*=n%10;n/=10;

}while(n);

31.通常,將軟件產品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為【】。

32.為了建立如圖所示的存儲結構(即每個結點含兩個域,data是數(shù)據(jù)域,next是指向結點的指針域)。請?zhí)羁铡?/p>

structlink{chardata;【】;}node;

33.程序的運行結果為【】。

main()

{intx,y,z;

x=24;

y=024;

z=0x24;

printf("%d,%d,%d\n",x,y,z);

}

34.下列程序的循環(huán)次數(shù)是______。

x=2;

do

{x=x*x;}

while(!x);

35.棧中允許進行插入和刪除的一端叫做______。

36.以下程序的輸出結果是()。

#include<stdio.h>

voidfun(intx)

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

printf("%d",x);

}

main()

{fun(3);printf("\n");

}

37.下列程序的輸出結果是______。

main()

{inta=2,b=4,e=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

printf("%d\n",c);

}

38.設有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續(xù)寫內容。

fw=fopen("readme.txt",【】);

39.下面程序的運行結果是______。

voidswap(int*a,int*B)

{

int*t;

t=a;a=b;b=t;

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

printf("%d%d\n",*p,*q);

}

40.若有語句

inti=-19,j=i%4;

printf("%d\n",j),

則輸出的結果是______。

三、1.選擇題(20題)41.請選出以下程序的輸出結果_______。#include<stdio.h>sub(int*s,inty){staticintt=3,y=s[t];t-;}main(){inta[]={1,2,3,4},i,x=0;for(i=0;i<4;i++){sub(a,x);printf("%d",x);}printf("\n");}

A.1234B.4321C.0D.4444

42.______語言負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構建。

A.數(shù)據(jù)操縱語言(DML)B.數(shù)據(jù)控制語言(DCL)C.結構化查詢語言(SQL)D.數(shù)據(jù)定義語言(DDL)

43.若有運算符:>、=、<<、%、sizeof,則它們按優(yōu)先級(由高至低)的正確排列順序為()。

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

44.有以下程序:#include<sldio.h>main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序執(zhí)行后的輸出結果是()。

A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5

45.對于n個結點的單向鏈表(無表頭結點),需要指針單元的個數(shù)至少為______。

A.n-1B.nC.n+1D.2n

46.若有以下定義語句:doublea[5];inti=0;能正確給a數(shù)組元素輸入數(shù)據(jù)的語句是()

A.scanf("%lf%lf%lf%lf%lf,a);

B.for(i=0;i<=5;i++)scanf("%lf,a+i);

C.while(i<5)scanf("%lf",&a[i++]);

D.while(i<5)seanf("%lf,a+i);

47.若調用fputc函數(shù)輸出字符成功,則其返回值是()。

A.EOFB.1C.0D.輸出的字符

48.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}則程序運行后的輸出結果是()。

A.1,1B.1,4C.4,1D.4,4

49.若有語句:char*line[5];,以下敘述中正確的是

A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為char的指針變量

B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組

C.定義line是一個指針數(shù)組,語句中的。號稱為間址運算符

D.定義line是一個指向字符型函數(shù)的指針

50.有以下程序:voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");}執(zhí)行后輸出結果是()。

A.5,4,3,2,1,B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,

51.下列對于軟件測試的描述中正確的是()。

A.軟件測試的目的是證明程序是否正確

B.軟件測試的目的是使程序運行結果正確

C.軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤

D.軟件測試的目的是使程序符合結構化原則

52.字符串"\\\"ABCDEF\"\\"的長度是()。

A.15B.10C.7D.8

53.下列程序的輸出結果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if((i*i>=20)&&(i*i<=100))}break;printf("%d\n",i*i);}

A.49B.36C.25D.64

54.執(zhí)行下面的程序段后,變量k中的值為()。intk=3,s[2];s[0]=k;k=s[1]*10;

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

55.若有定義血b[8],*p=b;則p+6表示()。

A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6

56.在軟件生命周期中,能準確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。A.概要設計B.詳細設計C.可行性分析D.需求分析

57.有以下程序,其中函數(shù)的功能是將多個字符串按字典順序排序:#include<string.h>voidf(char*p[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){t=p[i];p[i]=p[j]p[j]=t;}}main(){char*p[5]={"abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[1]));}程序運行后的輸出結果是______。

A.2B.3C.6D.4

58.在設計程序時,應采納的原則之一是()。

A.不限制goto語句的使用B.減少或取消注解行C.程序越短越好D.程序結構應有助于讀者理解

59.用樹形結構來表示實體之間聯(lián)系的模型稱為()。

A.關系模型B.層次模型C.網狀模型D.數(shù)據(jù)模型

60.以下程序的輸出結果是______。main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}

A.x=4B.x=8C.x=6D.x=12

四、選擇題(20題)61.有以下程序:

#include<stdio.h>

main

{shortC=124;

C=C_;

printf("%d\n",c);

}

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

A.>>2

B.|248

C.&0248

D.<<1

62.以下不構成無限循環(huán)的語句或語句組是()。

63.有以下程序:

程序運行后的輸出結果是()。

A.32B.16C.1D.0

64.在滿足實體完整性約束的條件下()。

A.一個關系中應該有一個或多個候選關鍵字

B.一個關系中只能有一個候選關鍵字

C.一個關系中必須有多個候選關鍵字

D.一個關系中可以沒有候選關鍵字

65.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是()。

66.若有以下定義和語句:

chars[10]="abcd!",*s2="\nl23\\";

Drintf("%d%d\n",strlen(sl),strlen(s2));

則輸出結果是()。

A.55B.105C.107D.58

67.

68.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

69.有以下程序:

程序運行后的輸出結果是()。

A.1.1.3B.2,2,3C.1,2,3D.3,3,3

70.(21)算法的空間復雜度是指______。

A.算法程序的長度

B.算法程序中的指令條數(shù)

C.算法程序所占的存儲空間

D.算法執(zhí)行過程中所需要的存儲空間

71.

72.

73.

74.

75.

76.以下敘述中錯誤的是()。

A.C程序對預處理命令行的處理是在程序執(zhí)行的過程中進行的

B.預處理命令行的最后不能以分號表示結束

C.#defineMAX是合法的宏定義命令行

D.在程序中凡是以“#”開始的語句行都是預處理命令行

77.以下敘述中正確的是()。A.A.當對文件的讀(寫)操作完成之后,必須將它關閉,否則可能導致數(shù)據(jù)丟失

B.打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

C.在一個程序中當對文件進行了寫操作后,必須先關閉該文件然后再打開,才能讀到第1個數(shù)據(jù)

D.c語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)

78.

79.在下列關系運算中,不改變關系表中的屬性個數(shù)但能減少元組個數(shù)的是

A.連接B.選擇C.投影D.笛卡兒乘積

80.下面描述中,不屬于軟件危機表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產率低C.軟件質量難以控制D.軟件成本不斷提高

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:在字符串str中找出ASCⅡ碼值最大的字符,將其放在第一個位置上,并將該字符前的原字符向后順序移動。例如,調用proc()函數(shù)之前給字符串輸入DcybkdGT,調用后字符串中的內容為yDcbkdOT。

請修改程序中的錯誤,使它能得到正確結果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。

試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)其功能是移動一維數(shù)組中的內容,若數(shù)組中有n個整數(shù),要求把下標為0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。例如,一維數(shù)組中的原始內容為1、2、3、4、5、6、7、8、9、10;P的值為3。移動后,一維數(shù)組中的內容應為5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){ inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; inti,p,n=15; printf(“Theoriginaldata:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\nEnterp:”); scanf(“%d”,&p); fun(a,p,n); printf(“\nThedataaftermoving:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\n”);}

參考答案

1.C

2.A軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項A錯誤。程序調試的基本步驟有:錯誤定位、修改設計和代碼,以排除錯誤、進行回歸測試,防止引進新的錯誤。程序調試通

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論