2021年山東省淄博市全國計算機等級考試C語言程序設計_第1頁
2021年山東省淄博市全國計算機等級考試C語言程序設計_第2頁
2021年山東省淄博市全國計算機等級考試C語言程序設計_第3頁
2021年山東省淄博市全國計算機等級考試C語言程序設計_第4頁
2021年山東省淄博市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年山東省淄博市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.針對簡單程序設計,以下敘述的實施步驟順序正確的是()。

A.確定算法和數(shù)據(jù)結構、編碼、調試、整理文檔

B.編碼、確定算法和數(shù)據(jù)結構、調試、整理文檔

C.整理文檔、確定算法和數(shù)據(jù)結構、編碼、調試

D.確定算法和數(shù)據(jù)結構、調試、編碼、整理文檔

2.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0;c=(a=a=5);(a=b,b+=4);printf("%d,%d,%d\n",a,bc);}程序運行后的輸出結果是()。A.0,4,5B.4,4,5C.4,4,4D.0,0,0

3.有下列程序:程序執(zhí)行后的輸出結果是()。

A.654321

B.65432

C.65453452

D.654534521

4.設線性鏈表中結點的結構為(data,next)。若想刪除結點p的直接后繼,則應執(zhí)行下列()操作。

A.p->next=p->next->next;

B.p=p->nextp->next=p->next->next;

C.p->next=p->next;

D.p=p->next->next;

5.有以下程序main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}執(zhí)行后輸出結果是

A.58B.56C.45D.24

6.下列程序的運行結果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12

7.若要說明一個類型名STP,使得定義語句STPs;等價于Char*s;,以下選項中正確的是()。

A.typedefChar*s;

B.typedefChar*STP;

C.typedefSTP*Char;

D.typedef*CharSTP;

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

A.在C程序中,APH和aph是兩個不同的變量

B.C程序中的變量,代表內存中的一個存儲單元,它的值可以根據(jù)需要隨時修改

C.在C程序中,無論是整數(shù)還是實數(shù),都能準確無誤地表示

D.在C程序中,一個正整數(shù)可以用十進制、八進制和十六進制的形式來表示

9.帶頭結點的雙向循環(huán)鏈表L為空的條件是()。

A.L==NULLB.L->next==NULLC.L->prior==NULLD.L->next==L

10.下列程序的輸出結果是()。main{inti=1,j=2,k=3;if(i++==1&&(++j==3==||k++==3))printf("%d%d%d\n",i,j,k);}A.123B.234C.223D.233

11.有以下程序:程序運行后的輸出結果是()。A.20B.13C.10D.31

12.下列選項中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

13.以下選項中,非法的字符常量是______。

A.'\t'B.'\17'C.\nD.'\xaa'

14.下面程序的輸出結果是______。#include<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti:for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

15.下列敘述中,不正確的是

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

B.數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結構必須與邏輯結構一致

C.數(shù)據(jù)庫設計是指設計一個能滿足用戶要求,性能良好的數(shù)據(jù)庫

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

16.下述關于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

17.

18.設x是一個int型的,y的值為10,則表達式x&&y的值為()。

A.1B.0C.與x值相同D.與x值相反

19.

20.在軟件設計中,不屬于過程設計工具的是()。

A.PDLB.DFD圖C.PAD圖D.N—S圖

二、2.填空題(20題)21.在軟件開發(fā)中,結構化方法包括結構化分析方法、結構化設計方法和結構化程序設計方法??尚行匝芯侩A段采用的是【】。

22.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。

23.設有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

printf("%s\n",t);

}

程序運行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF<CR>QTHRG<CR>,則程序的輸出結果是______。

24.以下程序運行后的輸出結果是【】。

#include<stdio.h>

fun(intx)

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

printf("%d",x);

}

main()

{fun(6);}

25.在數(shù)據(jù)結構中,順序存儲結構的數(shù)據(jù)元素所占的存儲空間是______的。

26.與表達式a+=b等價的另一書寫形式是______。

27.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

28.在面向對象方法中,信息隱蔽是通過對象的______性來實現(xiàn)的。

29.數(shù)據(jù)庫系統(tǒng)其內部分為三級模式,即概念模式、內模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

31.Jackson方法是一種面向【】的結構化方法。

32.在最壞情況下,冒泡排序的時間復雜度為【】。

33.下面程序段的輸出結果是【】。

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

print("%d\n",sum);

34.下列的for語句的循環(huán)次數(shù)為______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

35.以下程序運行后的輸出結果是【】。

#include<stdio.h>

#include<string.h>

char*ss(char*s)

char*p,t;

p=s+1:t=*s:

whilet*p){*(,p-1)=*p;p++;}

*(p-1)=t;

returns:}

main()

{char*p,str[10]="abedefgh";

p=ss(str);printf("%s\n".p):}

36.下面程序將二維數(shù)a的行和列元素互換后存放另一個二維數(shù)組b中。請?zhí)羁铡?/p>

main()

{inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

printf("arraya"\n");

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

{for(j=0;【】;j++)

{printf("%5d",a[i][j]);

【】;}

printf("\n");}

printf("arrayb:\n");

for(i=0;【】;i++)

{for(j=0;j<=1;j++)

printf("%5d",b[i][j]);

printf("\n");}}

37.與結構化需求分析方法相對應的是【】方法。

38.數(shù)據(jù)模型按不同的應用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。

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

40.以下sstrcpy()函數(shù)實現(xiàn)字符串復制,即將t所指字符串復制到s所指向內存空間中,形成一個新的字符串s。清填空。

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstr1[100],str2[]="abcdefgh";

strcpy(str1,str2);

printf('%s\n",str1);

}

三、1.選擇題(20題)41.在調用函數(shù)時,如果實參是簡單變量,它與對應形參之間的數(shù)據(jù)傳遞方式是______。

A.地址傳遞B.單向值傳遞C.由實參傳給形參。再由形參傳同實參D.傳遞方式由用戶指定

42.下列程序的輸出結果是()。#include<stdio.h>main(){inta=4printf("%d\n",(a+=a-=a*A));}

A.-8B.14C.0D.-24

43.設有如下程序:#include"string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果從鍵盤上輸入name<回車>name1<回車>,則程序運行后的輸出結果是()

A.$8B.@10C.$9D.@9

44.以下敘述中正確的是()。

A.構成C程序的基本單位是函數(shù)

B.可以在一個函數(shù)中定義另一個函數(shù)

C.main函數(shù)必須放在其他函數(shù)之前

D.C函數(shù)定義的格式是K&R格式

45.下列選項中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

46.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產品的生產率問題

C.軟件工程的主要思想是強調在軟件開發(fā)過程中需要應用工程化原則

D.軟件工程只是解決軟件開發(fā)過程中的技術問題

47.在軟件設計中,不屬于過程設計工具的是()。

A.PDL(過程設計語言)B.PAD圖C.N-S圖D.DFD圖

48.以下敘述中錯誤的是A.計算機不能直接執(zhí)行用C語言編寫的源程序

B.C程序經C編譯程序編譯后,生成后綴為.obj的文件是一個二進制文件

C.后綴為.obj的文件,經連接程序生成后綴為.exe的文件是一個二進制文件

D.后綴為.obj和.exe的二進制文件都可以直接運行

49.下面不屬于軟件設計原則的是

A.抽象B.模塊化C.自底向上D.信息隱藏

50.下列描述中正確的是()。

A.程序就是軟件

B.軟件開發(fā)不受計算機系統(tǒng)的限制

C.軟件既是邏輯實體,又是物理實體

D.軟件是程序、數(shù)據(jù)與相關文檔的集合

51.已知inta=1,b=3則ab的值為

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

52.若有如下程序:main(){inta,b,C,m,n,k;m=n=k=0;a=-1;b=2;C=3;if(c>0)m=a+b;if(a<=0){if(b>0)if(c<=0)n=a=b;}elseif(c>0)n=a-b;elsek/=c;printf("%d,%d,%d,",m,n,k);}則程序運行后的輸出結果是()。

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

53.請讀程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c)}若運行時從鍵盤上輸入987643210則上面程序的輸出結果是______。

A.a=98,b=75,c=4321

B.a=10,b=432,c=8765

C.a=98,b=765.000000c=4321.000000

D.a=98,b=765.0,c=4321.000000

54.有以下程序main(intargc,char*argv[]){intn,i=0;while(argv[1][i]!='\0'){n=fun();i++;}printf("%d\n",n*argc);}intfun(){staticints=0;s=-1;returns;}假設程序經編譯、連接后生成可執(zhí)行文件exam.exe,若鍵入以下命令行cxam123<回車>則運行結果為

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

55.下列選項中不會引起二義性的宏定義是()。

A.#defineS(x)x*x

B.#defineS(x)(x)*(x)

C.#defineS(x)(x*x)

D.#defineS(x)((x)*(x))

56.軟件需求分析一般應確定的是用戶對軟件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

57.對象實現(xiàn)了數(shù)據(jù)和操作的結合,是指對數(shù)據(jù)和數(shù)據(jù)的操作進行______。A.A.結合B.隱藏C.封裝D.抽象

58.下列不合法的main函數(shù)命令行參數(shù)的表示形式是______。

A.main(inta,char*c[]);

B.main(ac,av)intarc;char**av;

C.main(c,v)intc;char*v[];

D.main(argc,argv)intargc;charargv[];

59.在C語言中,如果下面的變量都是血類型,則輸出的結果是______。sum=pad=5;pAd=sum++,pad++,++pAd;printf("%d\n",pad);

A.7B.6C.5D.4

60.設有以下語句:chara=3,b=6,c;c=ab<<2;則c的二進制值是()。

A.11011B.10100C.11100D.11000

四、選擇題(20題)61.若有說明“chars1[30]="abc",s2[]="defghi";",則在使用函數(shù)stoat(s1,s2)后,結果是()。

A.s1的內容更新為abcdefghi

B.s1的內容更新為defghi\0

C.s1的內容更新勾defghiabc\0

D.s1的內容更新為abcdefghi\0

62.

63.

下列程序的輸出結果是()。

#include<stdio.h>

main()

{inta=2,b=3,P;

p=f(a,b);

printf(”%d”,p);

}

intf(a,b)

{intc;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-l;

return(c);

}

A.-lB.0C.1D.2

64.下列關系運算中,能使經運算后得到的新關系中屬性個數(shù)多于原來關系中屬性個數(shù)的是()。

A.選擇B.連接C.投影D.并

65.

66.有以下程序:

從第一列開始輸入以下數(shù)據(jù)(<CR>代表一個回車符.:

2743<CR>

程序的輸出結果是()。

A.66877B.668966C.6677877D.6688766

67.下面不屬于軟件工程三個要素的是()。

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

68.

69.

70.

71.

72.數(shù)據(jù)流圖中帶有箭頭的線段表示的是()。

A.控制流B.事件驅動C.模塊調用D.數(shù)據(jù)流

73.

74.

75.當用戶要求輸入的字符串中含有空格時,應使用的輸入函數(shù)是()。

A.scanfB.getcharC.getsD.getc

76.(62)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是()

A.ABCED

B.DBCEA

C.CDABE

D.DCBEA

77.

78.下列敘述中錯誤的是()。

A.一個C語言程序只能實現(xiàn)一種算法

B.c程序可以由多個程序文件組成

C.C程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨作為一個C稃序文件存存

79.

80.已知inti=1;執(zhí)行語句while(i++<4);后,變量i的值為()。

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

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:首先把b所指字符串中的字符按逆序存放,然后將str1所指字符串中的字符和Str2所指字符串中的字符,按排列的順序交叉合并到str所指數(shù)組中,過長的剩余字符接在str所指數(shù)組的尾部。例如,當str1所指字符串中的內容為ABCDEFG,str2所指字符串中的內容為1234時,str所指數(shù)組中的內容應該為A483C2D1EFG;而當str1所指字符串中的內容為1234,str2所指字符串中的內容為ABCEDFG時,str所指數(shù)組中的內容應該為1G2F31:4DCBA。

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio。h>

#include<string.h>

voidproc(char*strl,char*str2,char*str){

inti,j;charch;

i=0;j=strleu(str2)-1;

//****found****

while(i>j)

{

ch=str2[i];str2[i]=str2[j];str2[j]=ch;

i++;j--;

}

while(*str1||*str2)

{

if(*str1){*str=*str1;str++;str1++;)

if(*str2){*str=*str2;str++;str2++;)

}

//****found****

*str=0:

}

voidmain

{

chars1[100],s2[100],t[200];

system("CLS");

printf("\nEnters1string:");

scanf("%s",sl);

printf("\nEnters2string:");

scanf("%s",s2);

proc(s1,s2,t);

printf("\nTheresultis:%s\n",t);

}

六、程序設計題(1題)82.請編寫函數(shù)proc,該函數(shù)的功能是:將放在字符串數(shù)組中的M個字符串(每串的長度

不超過N),按順序合并組成一個新的字符串。

例如,若字符串數(shù)組中的M個字符串為:

ABCD

BCDEFG

CDEFGHI

則合并后的字符串內容應該是ABCDBCDEFGCDEFGHl。

注意:部分源程序給出如下。

請勿改動main函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararr[M][N],char*b)

{

}

voidmain

{

charstr[M][N]={"ABCD","BCDEFG","CDEFGHl"),i;

chararr[100]={"##################"};

printf(”Thestrin9:kn”);

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

puts(str[i]);

printf("\n");

proc(str,arr);

printf("TheAstring:\n");

printf("%S",arr);

printf("\n\n");

}

參考答案

1.A\nC語言中程序中的步驟實現(xiàn)為:先確定程序中的算法和數(shù)據(jù)結構,然后進行程序的編碼,再進行對程序的調試,最后進行文檔的整理和記錄。使用這種步驟可以方便程序的編寫以及在完成后提高代碼的重用性。

\n

2.A本題考查簡單的賦值運算,在程序中c=(a-=am5),先算括號中的a-=a-5=5,所以c=5,再計算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案選擇A。

3.C程序首先定義整型變量a和b,a的初值為123456。接著通過while循環(huán),判斷a的值是否為0,若不為0,則執(zhí)行循環(huán)體。每次循環(huán)將a當前值的個位數(shù)字(a%10)賦給b,a自身除以10。再通過switch語句判斷b的值執(zhí)行對應分支語句。所以對應a的每個個位數(shù),b的取值為6,5,4,3,2,1。當b取值為6時,執(zhí)行default,輸出6,接著繼續(xù)執(zhí)行case1,通過break退出switch。執(zhí)行下一次循環(huán),當b取值為5時,執(zhí)行case5輸出5。執(zhí)行下一次循環(huán),當b取值為4時,執(zhí)行case4輸出4,繼續(xù)執(zhí)行case5輸出5。接著執(zhí)行下一次循環(huán),當b取值為3時,執(zhí)行case3輸出3,執(zhí)行case4輸出4,執(zhí)行case5輸出5;當b取值為2時,執(zhí)行case2輸出2,通過break退出switch;當b取值為1時,執(zhí)行break,此時a的取值為0,循環(huán)終止。綜上,程序輸出結果為:65453452。本題答案為C選項。

4.A

5.D解析:在主函數(shù)中首先定義了一個數(shù)組p并初始化,在while后面括號里的表達式中,i初值為0,當p[i]為偶數(shù)時,P[i]%2等于0,根據(jù)“&&”運算符的規(guī)則,其表達式為假退出循環(huán),顯然當i=2時,p[i]=14為偶數(shù),此時while后面括號里的表達式的值為假,退出循環(huán),此時k=p[0]+p[1],即k=11+13。所以最后輸出k為24。

6.Bstructdate中包含year、month、day這3個整型變量,一個整型變量占2個字節(jié);sizeof是求所占字節(jié)數(shù)的運算符。

7.B用關鍵字typedef聲明一種新的類型的形式為typedef類型名標識符。本題中的類型為char*。

8.C

9.D

10.D本題考夢自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“||”。自增運算符“++”出現(xiàn)在變量之前,表示先使用變量的值加l,再使用變量的值進行運算;出現(xiàn)在變量之后,表示先使用變量的值進行運算,再使用變量的值加l。當邏輯與運算符“&&’’兩邊的運算對象都為真時,邏輯表達式的值才為真;當邏輯或運算符“||”只要一個值為1,值就為1。根據(jù)運算符的優(yōu)先級,題中應先計算內層括號中的值。++j是先自加后運算,因此運算時j的值等于3,所以表達式++j=3成立,即表達式的值為1;1與任何數(shù)都為進行或(||)運算,結果都為1,因此k=3的表達式i++是先運算后自加,因此運算時i為1,所以i++=1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。

11.D程序首先定義整型變量s和i,s的初值為0。for循環(huán)中i的取值為1,2,3,4,另外在switch語句中,執(zhí)行各個分支后,若沒有break語句,會繼續(xù)執(zhí)行后續(xù)分支。當i=1時,switch語句執(zhí)行case1、case2和default,將s自增3后再自增5,此時s的值為8;當i=2時,switch語句執(zhí)行case2、default,將s自增3后再自增5,此時s的值為16;當i=3時,switch語句執(zhí)行case3、case1、case2、default,將s逐步自增2,自增3,自增5,此時s的值為26;當i=4時,switch語句執(zhí)行default語句,將s自增5,此時s的值為31。本題答案為D選項。

12.B水平制表符中,'\t'表示的是橫向跳若干格;選項B中,'\039'錯誤,'\039'是八進制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',','是字符逗號;選項D中,'\n'表示的是換行。

13.C解析:C語言中字符常量是以單引號括起來的單個字符,或為以“\\”與三位八進制數(shù)值或兩位十六進制數(shù)值代替單個字符。

14.A解析:p[0]存放的是“BOOL\\0”的首地址:p[1]存放的是“OPK\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串的第—個字符。在for循環(huán)中,i的初值為3,那么輸出的第—個字符為“S”,接著兩次i--,則輸出的值為*p[1],即字符“O”,所以本題的輸出為SO。

15.B解析:B選項錯誤,原因是,數(shù)據(jù)庫應該具有物理獨立性和邏輯獨立性,改變其一而不影響另一個。

16.A解析:數(shù)據(jù)庫是一個通用化的、綜合性的數(shù)據(jù)集合,它可以為各種用戶所共享,具有最小的冗余度和較高的數(shù)據(jù)與程序的獨立性,而且能并發(fā)地為多個應用服務,同時具有安全性和完整性。即數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余,但不能避免一切冗余。所以選項A正確,選項B錯誤。在數(shù)據(jù)庫管理階段中,數(shù)據(jù)是結構化的,面向系統(tǒng),數(shù)據(jù)冗余度小,從而節(jié)省了數(shù)據(jù)的存儲空間,也減少了對數(shù)據(jù)的存取時間,提高了訪問效率,避免了數(shù)據(jù)的不一致性。數(shù)據(jù)的不一致性,是指對數(shù)據(jù)的存取方式,選項C錯誤。數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù),并非是數(shù)據(jù)庫系統(tǒng)的特點,選項D錯誤。本題正確答案是A。

17.D

18.C

19.D

20.B常見的過程設計工具有圖形土具(程序流程圖、N—S圖、PAD圖、HIP0圖)、表格工具(判定表)和語言工具(PDL)。DFD是數(shù)據(jù)流圖,是描述數(shù)據(jù)處理過程的工具。

21.結構化分析方法結構化分析方法解析:結構化分析方法主要用于系統(tǒng)分析階段;結構化設計方法主要用于系統(tǒng)設計階段;結構化程序設計方法主要用于編碼階段??尚行匝芯繉儆谙到y(tǒng)分析階段,因此,可行性研究階段采用的是結構化分析方法。

22.交換排序交換排序解析:常見的排序方法有插入排序(包括簡單插入排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選擇排序(包括簡單選擇排序和堆排序等)。注意:常見的排序方法及其作用機制和區(qū)別。

23.QTHRGQTHRG解析:strcmp(t,s)函數(shù)用來比較t和s所指字符串的大小,若t>s,則函數(shù)值大于0;若t=s,則函數(shù)值等于0:若t<s,則函數(shù)值小于0。strcpy(t,s)函數(shù)的功能是把字符數(shù)組s所指字符串的內容復制到字符數(shù)組t所指的存儲空間中。本題中,t[10]='CDEF'。第一次循環(huán),s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第二次循環(huán).s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執(zhí)行下列的語句,將字符數(shù)組s所指字符串的內容復制到字符數(shù)組t所指的存儲空間中,然后輸出字符數(shù)組t。

24.136136解析:程序中定義了一個遞歸調用函數(shù)fun。程序運行時,先把實參6傳給形參。if語句中6/2>0成立,執(zhí)行fun(x/2),即fun(3),同時輸出x的值6;再判斷if條件,3/2>0成立,再執(zhí)行fun(x/2),即fun(1),同時輸出x的值3;此時1/2>0不再成立,輸出1。而遞歸調用的輸出順序是相反的,故輸出結果為136。

25.連續(xù)連續(xù)解析:順序存儲結構具有兩個特點:1)數(shù)據(jù)元素所占空間是連續(xù)的;2)數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。

26.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。

27.交換排序交換排序解析:所謂排序是指將一個無序序列整理成按值非遞減順序排列成的有序序列,常用的排序方法有:交換排序、插入排序和選擇排序。其中交換排序包括冒泡排序和快速排序,插入排序包括簡單插入排序和希爾排序,選擇排序包括直接選擇排序和堆排序。

28.封裝封裝

29.外模式外模式解析:數(shù)據(jù)庫系統(tǒng)的三級模式分別是內模式、概念模式和外模式。其中,物理模式給出了數(shù)據(jù)庫的物理存儲結構和存取方法;概念模式是數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結構的描述;外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

30.11解析:ifelse語句的功能是:若表達式的值為真,執(zhí)行語句1,并跳過其他語句,執(zhí)行ifelse語句的下一條語句,若表達式的值為假,跳過語句1,執(zhí)行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執(zhí)行printf語句,在整個過程中變量z的值都沒發(fā)生變化。

31.數(shù)據(jù)結構數(shù)據(jù)結構解析:Jackson方法是—‘種面向數(shù)據(jù)結構的結構化方法。

32.

解析:冒泡排序法是通過相鄰數(shù)據(jù)元素的交換逐步將線性表變成有序。假設線性表的長度為n,則在最壞的情況下,冒泡排序需要經過遍的從前往后的掃描和遍的從后往前的掃描,需要的比較次數(shù)為。

33.16

34.66解析:分析程序可知,每循環(huán)一次,x的值加1,然后檢測循環(huán)控制條件(y!=19)&&(x<7),因y的值不變,故滿足x<7時循環(huán)6次。

35.bedefghabedefgha解析:函數(shù)9,的作用是將指針變量。指向的字符串的首字符移到最后一個位置,其他字符依次前移。其方法是:首先將指針變量p指向字符串s的第2個字符b,然后將首字符保存在字符變量t中;從字符串的第2個字符開始,通過語句*(P-1)=*p;依次前移,直到字符串結束符;最后通過語句*(P-1)=t;將保存在t中的字符放到移動后的字符串末尾,返回main函數(shù)并輸出,輸出結果為bedefsh。

36.j<2b[j][i]=a[i][j]i<=2j<2\r\nb[j][i]=a[i][j]\r\ni<=2解析:本題考查了二維數(shù)組元素的引用。a[i][j]表示的是二維數(shù)組a的第i+1,第j+1列的元素。

37.結構化設計結構化設計解析:與結構化需求分析方法相對應的是結構化設計方法。結構化設計就是采用最佳的可能方法設計系統(tǒng)的各個組成部分以及各個成分之間的內部聯(lián)系的技術。

38.概念概念

39.軟件開發(fā)

40.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組str1和str2,并且給str2賦初值“abcdefgh”,接著調用函數(shù)strcpy(str1,str2),將字符串str2的值賦給str1。在函數(shù)sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后將指針s和t都移到下一個元素。所以空白處應該填*t++或*(t++)。

41.B解析:本題考查函數(shù)調用時的數(shù)據(jù)流向問題。簡單變量只能實現(xiàn)單向的值傳遞。在調用函數(shù)時,通常在主調函數(shù)和被調函數(shù)之間有數(shù)據(jù)傳遞關系。在定義函數(shù)時,函數(shù)名后面括號中的變量名稱為“形參”;在調用函數(shù)時,函數(shù)名后面括號中的變量名稱為“實參”。有關實參和形參的說明如下:(1)形參在函數(shù)未被調用時,不占用存儲單元,只有在發(fā)生函數(shù)調用時形參才被分配內存空間,函數(shù)調用結束后,釋放形參所占的內存空間。(2)在被定義的函數(shù)中,必須指定形參的類型。(3)實參可以是常量、變量或表達式。(4)宴參與形參的類型應一致。(5)如果形參是簡單變量,實參對形參的數(shù)據(jù)傳遞是按值傳遞,即單向傳遞,只能由實參傳給形參,不能由形參傳回來給實參。如果形參是地址變量,實參對形參的數(shù)據(jù)傳遞是按地址傳遞,可以實現(xiàn)雙向傳遞,既能由實參傳給形參,又能由形參傳回來給實參。

42.D解析:表達式a+=a-=a*a看起來復雜,其實將它分成兩個表達式來計算就簡單了:①第一個表達式(a-=a*a)=(a=a-a*a=-12);②第二個表達式(a+=a-=a*a)=(a=a+a=-24)。

43.D

44.A解析:本題考查C語言的綜合基礎知識。構成C程序的基本單位是函數(shù),一個C程序總是從main函數(shù)開始執(zhí)行,而不論main函數(shù)在整個程序中的位置如何。C語言的函數(shù)定義都是互相平行、獨立的,在定義函數(shù)時,一個函數(shù)內不能定義另一個函數(shù)。C函數(shù)定義的一般格式有兩種:傳統(tǒng)格式和現(xiàn)代格式。傳統(tǒng)格式也稱K&R格式,是早期編譯系統(tǒng)使用的格式;現(xiàn)代格式又稱ANSI格式,是現(xiàn)代編譯系統(tǒng)使用的格式。

45.Dc語言規(guī)定,一個字符常量代表ASCII碼字符集里的一個字符,在群序中用單引號括起來,以便區(qū)分。'\v'表示的是豎向跳格:'kx2a'表示的是兩位十六迸制數(shù);'a'表示的是字符a對應的ASCII碼值。"\0"用雙引號故不正確。

46.CC。【解析】軟件工程是指將工程化的思想應用于軟件的開發(fā)、應用和維護的過程,包括軟件開發(fā)技術和軟件工程管理。

47.D解析:PDL一種設計性語言,用于書寫軟件設計規(guī)約。它是軟件設計中廣泛使用的語言之一。N-S圖是無線的流程圖,是算法描述工具;PAD圖是問題分析圖,它用二維樹狀結構的圖表示程序的控制流,將這種圖轉換為程序代碼比較容易。此3類均是過程設計工具,數(shù)據(jù)流圖(DataFunctionDiagram):又名數(shù)據(jù)功能圖表,簡稱DFD,是采用圖形方式來表達系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內部的邏輯流向和邏輯變換過程,是結構化系統(tǒng)分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。

48.D解析:一個C語言的源程序(后綴名為.c)在經過編譯器編譯后,先生成一個匯編語言程序,然后由編譯程序再將匯編語言程序翻譯成機器指令程序,即目標程序(后綴名為.obj),目標程序不可以直接運行,它要和庫函數(shù)或其它目標程序連接成可執(zhí)行文件(后綴名為.exe)后方可運行。故本題答案為D)。

49.C解析:軟件設計的原則包括:抽象、模塊化,信息隱蔽和模塊獨立性。所以自底向上不是軟件設計原則。答案為C。

50.D\r\n軟件是與計算機操作相關的計算機程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數(shù)據(jù);軟件開發(fā)要受到計算機系統(tǒng)的限制;軟件是一個邏輯實體,不是物理實體,軟件具有抽象性。因此選項D正確。

51.C解析:^是按位異式運算,如果對應位不同則結果為1,相同則為0。

52.A解析:本題首先聲明了6個int型變量,然后分別讓m、n、k為0,a為-1,b為2,c為3。接下來因為c>O為真,故執(zhí)行子句“m=a=b;”,結果使m的值變?yōu)?;然后判斷a是否<=0,結果也為真,進入大括號里面;由于b>O為真,再判斷c<=0,為假。所以子句“n=a=b;”沒有執(zhí)行,跳出大括號。而后面的elseif語句和else語句因為大括號的原因,使其對應第二個if語句,而第二個if語句的條件已滿足(進入大括號之前),所以這兩條else語句的子句不被執(zhí)行,故最后輸出結果為1,0,0,所以應該選擇A。

53.C解析:scanf()把用戶從鍵盤錄入的數(shù)字的第1、2位存入整型變量a;把第3、4、5位存入單精度實型變量b,把第6、7、8、9位存入單精度實型變量c,用戶錄入的第10位被scanf()遺棄。這時變量a、b、c的值分別為:98、765.000000、4321.000000。

54.A解析:主函數(shù)的第一個參數(shù)argc為整型參數(shù),記下從命令行輸入的參數(shù)的個數(shù):第二個參數(shù)argv是一個字符型的指針數(shù)組,它的每一個元素指向命令行輸入的參數(shù)字符數(shù)。在本例中argc的值為2,argv[0]指向字符串“exam”,argv[1]指向參數(shù)字符串“123”。在main()函數(shù)中,while循環(huán)執(zhí)行了3次,調用了3次fun()函數(shù):第一次調用fun()函數(shù)時,定義了一個靜態(tài)變量s并賦初值0,加1后作為函數(shù)值返回,n偽值為1;第二次調用fun()函數(shù)時,靜態(tài)變量s的值將保留上一次退出時的值1,再加1為2,作為函數(shù)值返回,n的值為2;同理第三次調用返回后,n的值為3。輸出n*argc的值為6。

55.D本題考查參數(shù)的宏替換。為避免二義性有些參數(shù)表達式必須加括號,否則在實參表達式替換時,會出現(xiàn)錯誤。例如x為(m+n)時替換A:m+n*m+n,所以選項D最符合條件。

56.DD。【解析】軟件需求分析中需要構造一個完全的系統(tǒng)邏輯模型,理解用戶提出的每一功能與性能要求,使用戶明確自己的任務。因此,需求分析應確定用戶對軟件的功能需求和非功能需求。

57.C解析:對象是由數(shù)據(jù)及可以對這些數(shù)據(jù)施加的操作組成的統(tǒng)一體。對象的內部,即處理能力的實行和內部狀態(tài),對外是看不見的,這一特性稱做對象的封裝。

58.D解析:main函數(shù)的參數(shù)通常有兩個,前者為整型,后者為字符型指針數(shù)組。參數(shù)的名字可以是任意合法的標識符。而且,形如**av與*av[]等價,所以選項A、B、C均正確,選項D是錯誤的。

59.C

60.A解析:“<<”是C語言中規(guī)定的左移運算符,例如,a=a<<2,是將a的二進制數(shù)左移兩位,左移一位相當于該數(shù)乘以2,左移兩位相當于該數(shù)乘以2的2次方;“^”是異或運算符,所以,c的二進制值應為00011011。

61.Dstrcat(s1,s2)函數(shù)的功能是把s2字符串連接到s1字符串的末尾,要保證s1有足夠的空間容納下連接后的字符串。

62.D

63.A

\n本題考查if-else語句。if為真則執(zhí)行C=1,if為假則執(zhí)行else中的條件,不符合繼續(xù)執(zhí)行else。

\n

64.B選擇,連接,投影是專門的關系運算,選擇是選擇滿足條件的元組,而投影是選擇滿足條件的屬性或者說列。并是傳統(tǒng)的關系運算,是將兩個關系中的元組合并在一起再去掉重復的部分。選擇,投影,并三個運算得到的結果屬性數(shù)并沒有改變或者說還有減少,而連接時將兩個關系進行笛卡爾積運算,在挑選滿足條件的項。其屬性個數(shù)一般會多于原來關系中的屬性數(shù)。

65.B

66.A本題主要考查了字符輸入輸出函數(shù)get—char和putchar的使用。getchar函數(shù)用來從標準輸入設備上讀人一個字符,putchar(C)函數(shù)是將字符變量c中的字符輸出到標準輸出設備上,并且字符可以看作整數(shù)參與運算。

67.D軟件工程包括三個要素:方法、工具和過程。

軟件工程方法指明了軟件開發(fā)如何做。它包括多方面的任務,如項目計劃與估算、軟件系統(tǒng)需求分析、數(shù)據(jù)結構、系統(tǒng)總體結構的設計、算法過程的設計、編碼、測試以及維護等。

軟件工具為軟件工程方法提供了自動的或半自動的軟件支撐環(huán)境。目前,已經推出了許多軟件工具,這些軟件工具集成起來,建立起稱為計算機輔助軟件工程(CASE)的軟件開發(fā)支撐系統(tǒng)。CASE是幫助開發(fā)人員進行應用程序開發(fā)的軟件,包括系統(tǒng)分析、設計和代碼生成等階段。CASE工具為系統(tǒng)設計、文件編制、傳統(tǒng)結構編程技術提供了自動的方法,可以在軟件開發(fā)生命周期中的各個階段起輔助作用。

軟件工程的過程則是將軟件工程的方法和工具綜合起來以達到合理、及時地進行計算機軟件開發(fā)的目的。過程定義了方法使用的順序、要求交付的文檔資料、為保證質量和協(xié)調變化所需要的管理和軟件開發(fā)各個階段完成的標志。

68.A

69.C

70.B

71.A

72.D解析:數(shù)據(jù)流圖是描述數(shù)據(jù)處理過程的工具,是需求理解的邏輯模型的圖形表示,它直接支持系統(tǒng)的功能建模。數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。數(shù)據(jù)流圖中的主要的圖形元素與說明如下:

加工(轉換):輸入數(shù)據(jù)經加工變換產生輸出。

數(shù)據(jù)流:沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標注數(shù)據(jù)流名。

存儲文件(數(shù)據(jù)源):表示處理過程中存放各種數(shù)據(jù)的文件。

源,潭:表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體。

73.C

74.B

75.C解析:C語言提供了許多輸入函數(shù),其中有:getchar(輸入字符)、scanf(格式輸入)和gets\u3000(輸入字符串)等。題目要求輸入的是字符串,所以可以排除getchar,而且要求輸入的字符串中包含空格,而scanf函數(shù)默認將輸入的空格字符作為分割符,所以空格不會被輸入,故可排除scanf。getc的作用是從文件中輸入一個字符,故也不可取。gets函數(shù)可以輸入一整行作為一個字符串,其中也包括空格字符,故應該選擇C。

76.D

77.A

78.A一個C語言程序能實現(xiàn)多種算法,所以A)錯誤。

79.D

80.C循環(huán)語句;i=1,執(zhí)行i++<4;滿足條件,執(zhí)行循環(huán)體,然后i++<4……,當i=3時,先執(zhí)行i<4,成立,然后i++,循環(huán),i=4,判斷i<4不成立,i++,變成5.

81.\n\t(1)錯誤:while(i>j)

\n正確:while(i<j)

\n(2)錯誤:*str=0;

\n正確:*str=\0;

\n【解析】由函數(shù)proc可知,變量i和j分別存放的是字符串str前面和后面第i個字符的位置,當i<j時,兩個位置的字符交換。因此,“while(i>j)”應改為“while(i<j)”;交叉合并完成后,要為新的字符串添加結束符,因此,“*str=0;”應改為“*str=\0;”,\n

82.voidproc(chararr[M][N],char*b)

\n{

\ninti,j,k=0;

\nfor(i=0;i<M;i++)//i表示其行下標

\nfor(j=0;arr[i][j]!=\0;j++)//由于每行的個數(shù)不等,因此用a[i][j]!=\0來作為循環(huán)結束

\n的條件

\nb[k++]=arr[i][j];//把二維數(shù)組中的元素放到b的一維數(shù)組中,

\nb[k]=\0;//最后把b賦\0作為字符串結束的標志

\n)

\n【解析】字符串數(shù)組中每一行都是一個一個完整的字符串,其結束標志為\0。因此通過字符串的結束標志來判斷每一個字符串是否結束,將字符串數(shù)組中的所有字符串均賦值新的一維數(shù)組b來完成字符串的合并。

\n2021年山東省淄博市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.針對簡單程序設計,以下敘述的實施步驟順序正確的是()。

A.確定算法和數(shù)據(jù)結構、編碼、調試、整理文檔

B.編碼、確定算法和數(shù)據(jù)結構、調試、整理文檔

C.整理文檔、確定算法和數(shù)據(jù)結構、編碼、調試

D.確定算法和數(shù)據(jù)結構、調試、編碼、整理文檔

2.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0;c=(a=a=5);(a=b,b+=4);printf("%d,%d,%d\n",a,bc);}程序運行后的輸出結果是()。A.0,4,5B.4,4,5C.4,4,4D.0,0,0

3.有下列程序:程序執(zhí)行后的輸出結果是()。

A.654321

B.65432

C.65453452

D.654534521

4.設線性鏈表中結點的結構為(data,next)。若想刪除結點p的直接后繼,則應執(zhí)行下列()操作。

A.p->next=p->next->next;

B.p=p->nextp->next=p->next->next;

C.p->next=p->next;

D.p=p->next->next;

5.有以下程序main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}執(zhí)行后輸出結果是

A.58B.56C.45D.24

6.下列程序的運行結果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12

7.若要說明一個類型名STP,使得定義語句STPs;等價于Char*s;,以下選項中正確的是()。

A.typedefChar*s;

B.typedefChar*STP;

C.typedefSTP*Char;

D.typedef*CharSTP;

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

A.在C程序中,APH和aph是兩個不同的變量

B.C程序中的變量,代表內存中的一個存儲單元,它的值可以根據(jù)需要隨時修改

C.在C程序中,無論是整數(shù)還是實數(shù),都能準確無誤地表示

D.在C程序中,一個正整數(shù)可以用十進制、八進制和十六進制的形式來表示

9.帶頭結點的雙向循環(huán)鏈表L為空的條件是()。

A.L==NULLB.L->next==NULLC.L->prior==NULLD.L->next==L

10.下列程序的輸出結果是()。main{inti=1,j=2,k=3;if(i++==1&&(++j==3==||k++==3))printf("%d%d%d\n",i,j,k);}A.123B.234C.223D.233

11.有以下程序:程序運行后的輸出結果是()。A.20B.13C.10D.31

12.下列選項中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

13.以下選項中,非法的字符常量是______。

A.'\t'B.'\17'C.\nD.'\xaa'

14.下面程序的輸出結果是______。#include<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti:for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

15.下列敘述中,不正確的是

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

B.數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結構必須與邏輯結構一致

C.數(shù)據(jù)庫設計是指設計一個能滿足用戶要求,性能良好的數(shù)據(jù)庫

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

16.下述關于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

17.

18.設x是一個int型的,y的值為10,則表達式x&&y的值為()。

A.1B.0C.與x值相同D.與x值相反

19.

20.在軟件設計中,不屬于過程設計工具的是()。

A.PDLB.DFD圖C.PAD圖D.N—S圖

二、2.填空題(20題)21.在軟件開發(fā)中,結構化方法包括結構化分析方法、結構化設計方法和結構化程序設計方法??尚行匝芯侩A段采用的是【】。

22.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。

23.設有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

printf("%s\n",t);

}

程序運行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF<CR>QTHRG<CR>,則程序的輸出結果是______。

24.以下程序運行后的輸出結果是【】。

#include<stdio.h>

fun(intx)

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

printf("%d",x);

}

main()

{fun(6);}

25.在數(shù)據(jù)結構中,順序存儲結構的數(shù)據(jù)元素所占的存儲空間是______的。

26.與表達式a+=b等價的另一書寫形式是______。

27.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。

28.在面向對象方法中,信息隱蔽是通過對象的______性來實現(xiàn)的。

29.數(shù)據(jù)庫系統(tǒng)其內部分為三級模式,即概念模式、內模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

31.Jackson方法是一種面向【】的結構化方法。

32.在最壞情況下,冒泡排序的時間復雜度為【】。

33.下面程序段的輸出結果是【】。

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

print("%d\n",sum);

34.下列的for語句的循環(huán)次數(shù)為______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

35.以下程序運行后的輸出結果是【】。

#include<stdio.h>

#include<string.h>

char*ss(char*s)

char*p,t;

p=s+1:t=*s:

whilet*p){*(,p-1)=*p;p++;}

*(p-1)=t;

returns:}

main()

{char*p,str[10]="abedefgh";

p=ss(str);printf("%s\n".p):}

36.下面程序將二維數(shù)a的行和列元素互換后存放另一個二維數(shù)組b中。請?zhí)羁铡?/p>

main()

{inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

printf("arraya"\n");

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

{for(j=0;【】;j++)

{printf("%5d",a[i][j]);

【】;}

printf("\n");}

printf("arrayb:\n");

for(i=0;【】;i++)

{for(j=0;j<=1;j++)

printf("%5d",b[i][j]);

printf("\n");}}

37.與結構化需求分析方法相對應的是【】方法。

38.數(shù)據(jù)模型按不同的應用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。

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

40.以下sstrcpy()函數(shù)實現(xiàn)字符串復制,即將t所指字符串復制到s所指向內存空間中,形成一個新的字符串s。清填空。

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstr1[100],str2[]="abcdefgh";

strcpy(str1,str2);

printf('%s\n",str1);

}

三、1.選擇題(20題)41.在調用函數(shù)時,如果實參是簡單變量,它與對應形參之間的數(shù)據(jù)傳遞方式是______。

A.地址傳遞B.單向值傳遞C.由實參傳給形參。再由形參傳同實參D.傳遞方式由用戶指定

42.下列程序的輸出結果是()。#include<stdio.h>main(){inta=4printf("%d\n",(a+=a-=a*A));}

A.-8B.14C.0D.-24

43.設有如下程序:#include"string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果從鍵盤上輸入name<回車>name1<回車>,則程序運行后的輸出結果是()

A.$8B.@10C.$9D.@9

44.以下敘述中正確的是()。

A.構成C程序的基本單位是函數(shù)

B.可以在一個函數(shù)中定義另一個函數(shù)

C.main函數(shù)必須放在其他函數(shù)之前

D.C函數(shù)定義的格式是K&R格式

45.下列選項中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

46.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產品的生產率問題

C.軟件工程的主要思想是強調在軟件開發(fā)過程中需要應用工程化原則

D.軟件工程只是解決軟件開發(fā)過程中的技術問題

47.在軟件設計中,不屬于過程設計工具的是()。

A.PDL(過程設計語言)B.PAD圖C.N-S圖D.DFD圖

48.以下敘述中錯誤的是A.計算機不能直接執(zhí)行用C語言編寫的源程序

B.C程序經C編譯程序編譯后,生成后綴為.obj的文件是一個二進制文件

C.后綴為.obj的文件,經連接程序生成后綴為.exe的文件是一個二進制文件

D.后綴為.obj和.exe的二進制文件都可以直接運行

49.下面不屬于軟件設計原則的是

A.抽象B.模塊化C.自底向上D.信息隱藏

50.下列描述中正確的是()。

A.程序就是軟件

B.軟件開發(fā)不受計算機系統(tǒng)的限制

C.軟件既是邏輯實體,又是物理實體

D.軟件是程序、數(shù)據(jù)與相關文檔的集合

51.已知inta=1,b=3則ab的值為

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

52.若有如下程序:main(){inta,b,C,m,n,k;m=n=k=0;a=-1;b=2;C=3;if(c>0)m=a+b;if(a<=0){if(b>0)if(c<=0)n=a=b;}elseif(c>0)n=a-b;elsek/=c;printf("%d,%d,%d,",m,n,k);}則程序運行后的輸出結果是()。

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

53.請讀程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c)}若運行時從鍵盤上輸入987643210則上面程序的輸出結果是______。

A.a=98,b=75,c=4321

B.a=10,b=432,c=8765

C.a=98,b=765.000000c=4321.000000

D.a=98,b=765.0,c=4321.000000

54.有以下程序main(intargc,char*argv[]){intn,i=0;while(argv[1][i]!='\0'){n=fun();i++;}printf("%d\n",n*argc);}intfun(){staticints=0;s=-1;returns;}假設程序經編譯、連接后生成可執(zhí)行文件exam.exe,若鍵入以下命令行cxam123<回車>則運行結果為

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

55.下列選項中不會引起二義性的宏定義是()。

A.#defineS(x)x*x

B.#defineS(x)(x)*(x)

C.#defineS(x)(x*x)

D.#defineS(x)((x)*(x))

56.軟件需求分析一般應確定的是用戶對軟件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

57.對象實現(xiàn)了數(shù)據(jù)和操作的結合,是指對數(shù)據(jù)和數(shù)據(jù)的操作進行______。A.A.結合B.隱藏C.封裝D.抽象

58.下列不合法的main函數(shù)命令行參數(shù)的表示形式是______。

A.main(inta,char*c[]);

B.main(ac,av)intarc;char**av;

C.main(c,v)intc;char*v[];

D.main(argc,argv)intargc;charargv[];

59.在C語言中,如果下面的變量都是血類型,則輸出的結果是______。sum=pad=5;pAd=sum++,pad++,++pAd;printf("%d\n",pad);

A.7B.6C.5D.4

60.設有以下語句:chara=3,b=6,c;c=ab<<2;則c的二進制值是()。

A.11011B.10100C.11100D.11000

四、選擇題(20題)61.若有說明“chars1[30]="abc",s2[]="defghi";",則在使用函數(shù)stoat(s1,s2)后,結果是()。

A.s1的內容更新為abcdefghi

B.s1的內容更新為defghi\0

C.s1的內容更新勾defghiabc\0

D.s1的內容更新為abcdefghi\0

62.

63.

下列程序的輸出結果是()。

#include<stdio.h>

main()

{inta=2,b=3,P;

p=f(a,b);

printf(”%d”,p);

}

intf(a,b)

{intc;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-l;

return(c);

}

A.-lB.0C.1D.2

64.下列關系運算中,能使經運算后得到的新關系中屬性個數(shù)多于原來關系中屬性個數(shù)的是()。

A.選擇B.連接C.投影D.并

65.

66.有以下程序:

從第一列開始輸入以下數(shù)據(jù)(<CR>代表一個回車符.:

2743<CR>

程序的輸出結果是()。

A.66877B.668966C.6677877D.6688766

67.下面不屬于軟件工程三個要素的是()。

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

68.

69.

70.

71.

72.數(shù)據(jù)流圖中帶有箭頭的線段表示的是()。

A.控制流B.事件驅動C.模塊調用D.數(shù)據(jù)流

73.

74.

75.當用戶要求輸入的字符串中含有空格時,應使用的輸入函數(shù)是()。

A.scanfB.getcharC.getsD.getc

76.(62)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是()

A.ABCED

B.DBCEA

C.CDABE

D.DCBEA

77.

78.下列敘述中錯誤的是()。

A.一個C語言程序只能實現(xiàn)一種算法

B.c程序可以由多個程序文件組成

C.C程序可以由一個或多個函數(shù)組成

D.一個C函數(shù)可以單獨作為一個C稃序文件存存

79.

80.已知inti=1;執(zhí)行語句while(i++<4);后,變量i的值為()。

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

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:首先把b所指字符串中的字符按逆序存放,然后將str1所指字符串中的字符和Str2所指字符串中的字符,按排列的順序交叉合并到str所指數(shù)組中,過長的剩余字符接在str所指數(shù)組的尾部。例如,當str1所指字符串中的內容為ABCDEFG,str2所指字符串中的內容為1234時,str所指數(shù)組中的內容應該為A483C2D1EFG;而當str1所指字符串中的內容為1234,str2所指字符串中的內容為ABCEDFG時,str所指數(shù)組中的內容應該為1G2F31:4DCBA。

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio。h>

#include<string.h>

voidproc(char*strl,char*str2,char*str){

inti,j;charch;

i=0;j=strleu(str2)-1;

//****found****

while(i>j)

{

ch=str2[i];str2[i]=str2[j];str2[j]=ch;

i++;j--;

}

while(*str1||*str2)

{

if(*str1){*str=*str1;str++;str1++;)

if(*str2){*str=*str2;str++;str2++;)

}

//****found****

*str=0:

}

voidmain

{

chars1[100],s2[100],t[200];

system("CLS");

printf("\nEnters1string:");

scanf("%s",sl);

printf("\nEnters2string:");

scanf("%s",s2);

proc(s1,s2,t);

printf("\nTheresultis:%s\n",t);

}

六、程序設計題(1題)82.請編寫函數(shù)proc,該函數(shù)的功能是:將放在字符串數(shù)組中的M個字符串(每串的長度

不超過N),按順序合并組成一個新的字符串。

例如,若字符串數(shù)組中的M個字符串為:

ABCD

BCDEFG

CDEFGHI

則合并后的字符串內容應該是ABCDBCDEFGCDEFGHl。

注意:部分源程序給出如下。

請勿改動main函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararr[M][N],char*b)

{

}

voidmain

{

charstr[M][N]={"ABCD","BCDEFG","CDEFGHl"),i;

chararr[100]={"##################"};

printf(”Thestrin9:kn”);

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

puts(str[i]);

printf("\n");

proc(str,arr);

printf("TheAstring:\n");

printf("%S",arr);

printf("\n\n");

}

參考答案

1.A\nC語言中程序中的步驟實現(xiàn)為:先確定程序中的算法和數(shù)據(jù)結構,然后進行程序的編碼,再進行對程序的調試,最后進行文檔的整理和記錄。使用這種步驟可以方便程序的編寫以及在完成后提高代碼的重用性。

\n

2.A本題考查簡單的賦值運算,在程序中c=(a-=am5),先算括號中的a-=a-5=5,所以c=5,再計算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案選

溫馨提示

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

評論

0/150

提交評論