2022年河南省信陽市全國計算機等級考試C語言程序設(shè)計_第1頁
2022年河南省信陽市全國計算機等級考試C語言程序設(shè)計_第2頁
2022年河南省信陽市全國計算機等級考試C語言程序設(shè)計_第3頁
2022年河南省信陽市全國計算機等級考試C語言程序設(shè)計_第4頁
2022年河南省信陽市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2022年河南省信陽市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.遞歸式的先序遍歷一個n節(jié)點,深度為d的二叉樹,則需要??臻g的大小為()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

2.靜態(tài)鏈表中指針表示的是()。

A.內(nèi)存地址B.數(shù)組下標C.下一元素地址D.左、右孩子地址

3.程序設(shè)計方法要求在程序設(shè)計過程中,()。

A.先編制出程序,經(jīng)調(diào)試使程序運行結(jié)果正確后再畫出程序的流程圖

B.先編制出程序,經(jīng)調(diào)試使程序運行結(jié)果正確后再在程序中的適當位置處加注釋

C.先畫出流程圖,再根據(jù)流程圖編制出程序,最后經(jīng)調(diào)試使程序運行結(jié)果正確后再在程序中的適當位置處加注釋

D.以上3種說法都不對

4.對n個關(guān)鍵字的序列進行快速排序,平均情況下的空間復雜度為_______

A.O(1)B.O(logn)C.O(n)D.O(nlogn)

5.以下敘述中正確的是

A.語句inta[4][3]={{1,2},{4,5}};是錯誤的初始化形式

B.語句inta[4][3]={1,2,4,5};是錯誤的初始化形式

C.語句inta[][3]={1,2,4,5};是錯誤的初始化形式

D.在邏輯上,可以把二維數(shù)組看成是一個具有行和列的表格或矩陣

6.

7.在一個無向圖中,所有頂點的度數(shù)之和等于所有邊數(shù)的()倍。

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

8.A.A.75310246B.01234567C.76310462D.13570246

9.以下程序擬實現(xiàn)計算sum=1+1/2+1/3+…+1/50。#include<stdio.h>main(){inti;doublesum;sum=1.0;i=1;do{i++-;sum+=1/i;}while(i<50);printf(“sum=%lf\n”,sum);}程序運行后,不能得到正確結(jié)果,出現(xiàn)問題的語句是()。

A.sum+=1/i;B.while(i<50);C.sum=1.0D.i++;

10.以下程序的運行結(jié)果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

A.Y=3B.存在語法錯誤C.Y=7D.Y=0

11.有以下程序(strcat函數(shù)用于連接兩個字符串):#include<stdio.h>#include<string.h>main(){chara[20]=“ABCD\0EFG\0”,b[]=“UK”;strcat(a,b);printf(“%s\n”,a);}程序的運行結(jié)果是()。

A.UKB.ABCDE\0FG\0UKC.ABCDUKD.EFGUK

12.語句int(*ptr)的含義是()。A.A.ptr是一個返回值為int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

13.設(shè)無向圖G中的邊的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},則從頂點a出發(fā)進行深度優(yōu)先遍歷可以得到的一種頂點序列為()。

A.aedfcbB.acfebdC.aebcfdD.aedfbc

14.

15.

16.有以下函數(shù):intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下關(guān)于aaa函數(shù)功能敘述正確的是()。

A.將串s復制到串tB.比較兩個串的大小C.求字符串s的長度D.求字符串s所占字節(jié)數(shù)

17.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成

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

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

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

18.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是()。

A.數(shù)組a和b的長度相同B.a數(shù)組長度小于b數(shù)組長度C.a數(shù)組長度大于b數(shù)組長度D.以述說法都不對

19.判斷一個循環(huán)隊列cq(最多元素為m)為滿的條件是()。

A.cq->rear-cq-front=m;

B.(cq->rear+1)%m=cq->front;

C.cq->front=cq->rear;

D.cq->rear=m-1;

20.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)執(zhí)行后的輸出結(jié)果是()。A.5,5B.5,11C.11,11D.11,5

二、2.填空題(20題)21.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。

22.以下函數(shù)的功能是求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。例如,若x中的值為30,則有4個數(shù)符合要求,它們是1,3,5,15。請按題意,完成填空。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intpp[],int*n)

{inti,j=0;

for(i=1;i<x;i+=2)

if(x%i==0)pp[j++]=i;

【】;

}

main()

{intx,aa[1000],n,i;

clrscr();

printf("\nPleasenteranintegernumber:\n");scanf("%d",&x);

fun(x,aa,&n);

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

printf("%d",aa[i]);

printf("\n");

}

23.軟件結(jié)構(gòu)是以【】為基礎(chǔ)而組成的一種控制層次結(jié)構(gòu)。

24.下面的程序可對指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

25.以下程序運行后的輸出結(jié)果是【】。

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+j));

}

26.下列程序的輸出結(jié)果是______。

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

27.下列語句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

28.下面的程序可對指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n-->1)

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

if(str[i]<str[i+l])

{temp=【】;

str[i]=str[i+l];

【】=temp;

}

printf(【】);

}

29.根據(jù)以下if語句寫出與其功能相同的switch語句(x的值在0~100之間)。

if語句:

if(x<60)m=1;

elseif(x<70)m=2;

elseif(x<80)m=3;

elseif(x<90)m=4;

elseif(x<100)m=5;

switch語句:

switch(【】)

{

【】m=1;break;

case6:m=2;break;

case7:m=3;break;

case8:m=4;break;

【】m=5;

}

30.執(zhí)行以下程序后sum的值是【】。

main()

{

inti,sum;

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

sum+=i;

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

}

31.以下程序運行后的輸出結(jié)果是______。

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

32.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

33.在進行軟件結(jié)構(gòu)設(shè)計時,應(yīng)遵循的最主要原理是【】。

34.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

35.數(shù)據(jù)庫理論中,數(shù)據(jù)的獨立性一般可分為物理獨立性和______。

36.軟件工程的出現(xiàn)是由于【】。

37.若a是血型變量,則表達式(a=2*3,a*2),a+6的值為______。

38.數(shù)據(jù)庫的邏輯模型設(shè)計階段的任務(wù)是將______轉(zhuǎn)換成關(guān)系模式。

39.數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、______、邏輯設(shè)計階段、物理設(shè)計階段、實施階段、運行和維護階段。

40.以下程序的輸出結(jié)果是【】。

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){eharstr[][10]={"China","Beijing"},*p=str[o];printf("%s\n",p+10);}程序運行后的輸出結(jié)果是()。

A.ChinaB.BeijingC.ngD.ing

42.下列程序的輸出結(jié)果是#include"stdio.h"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}

A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5

43.下面敘述正確的是______。A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

B.算法的空間復雜度是指算法程序中指令(或語句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上三種描述都不對

44.下面宏定義正確的是()

A.#defineSa*b

B.#definePI3.14;

C.#definemax(a,b)((a)>(b)?(a);(b))

D.#defines(x)(x)*(x);

45.設(shè)有語句:charstr1[]="string",str2[8],*ste3,*str4="string";,則下列不是對庫函數(shù)strcpy的正確調(diào)用的是______。

A.strcpy(str1,"HELLOI");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLOY");

D.strcpy(str4,"HELLO4");

46.若x是整型變量,pb是基本類型為整型的指針變量,則正確的賦值語句是()

A.pb=&x;B.pb=x;C.*pb=&x;D.*pb=*x;

47.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出比中的值為大寫字母的表達式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<='Z')

C.(kk+32)>='a'&&(kk+32)<='z'

D.isalpha(kk)&&(kk<91)

48.以下程序的輸出結(jié)果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

49.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(j=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序運行后的輸出結(jié)果是

A.12B.123C.234D.345

50.設(shè)有以下程序段:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'),*p;p=&a[0];下面選項中,其值為6的表達式為______。

A.P++->nB.p->n++C.(*p).n++D.++p->n

51.若有以下的說明,對初值中整數(shù)2的正確引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

52.若有定義語句:inta[2][3],*p[3],則以下語句中正確的是A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;

53.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始)123<CR>45678<CR>則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

54.有以下程序main(){inta[3][2]={0},(*ptr)[2],i,i;for(i=0;i<2;i++){ptr=a+i;scanf("%d",ptr);ptr+++;}for(i=0;i<3;i++){foil(j=0;j<2;j++)printf("%2d",a[i][j]);printf("\n");}若運行時輸入:123<回車>,則輸出結(jié)果為

A.產(chǎn)生錯誤信息B.102000C.123000D.102030

55.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯誤的是A.函數(shù)調(diào)用可以作為獨立的語句存在

B.函數(shù)調(diào)用可以作為一個函數(shù)的實參

C.函數(shù)調(diào)用可以出現(xiàn)在表達式中

D.函數(shù)調(diào)用可以作為一個函數(shù)的形參

56.在執(zhí)行下述程序時,若從鍵盤輸入6和8,則結(jié)果為

main()

{inta,b,s;

scanf("%d%d",&a,&b);

S=a

if(a<b)

s=b;

S*=s;

printf("%d",s);}

A.36B.64C.48D.以上都不對

57.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成________。

A.屬性B.關(guān)系C.鍵D.域

58.當執(zhí)行下面的程序時,如果輸入ABC,則輸出的結(jié)果是()。#include<Stdlib.h>main(){charss[]="1,2,3,4,5";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}

A.ABC6789B.ABDC67C.123ABC678D.ABC456789

59.請讀程序段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));程序段的輸出結(jié)果是______。

A.68B.0C.字符'D'的地址D.不確定的值

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);}程序執(zhí)行后輸出結(jié)果是()。

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

四、選擇題(20題)61.若有定義:“int*P,x=0,*p,p=&x;”,則語句“printf("%d\n",*p);”的輸出結(jié)果是()。

A.隨機值B.0C.x的地址D.P的地址

62.

設(shè)有定義的語句:“charc1=92,c2=92;”,則以下表達式中的值為零的是()。

A.c1^c2B.c1&c2C.~c2D.c1E.c2

63.

64.

65.下列關(guān)于線性鏈表的敘述中,正確的是()。

A.各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致

B.各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)

C.進行插入與刪除時,不需要移動表中的元素

D.以上說法均不正確

66.有以下程序

67.

68.有下列程序:

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);

}

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

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

69.

有以下程序:

#include<strintg.h>

main

{charp[20]={a,b,c,d),q[]="abc",r[]="

abcde";

strcpy(p+strlen(q),r);strcat(p,q);

printf("%d%d\n",sizeof(p),strlen(p));

}

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

A.209B.99C.2011D.1111

70.數(shù)字字符0的ASCIl值為48,若有以下程序:

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

A.3,2B.50,2C.2,2D.2,50

71.

72.以下關(guān)于指針概念不正確的是()。

A.指針變量可以用整數(shù)賦值,但不可以用浮點數(shù)賦值

B.一個變量的地址稱為該變量的指針,一個指針變量只能指向同一類型的變量

C.只有同一類型的變量地址才能放到指向該類型變量的指針變量之中

D.只能將地址賦給指針變量

73.

74.有以下程序程序運行后的輸出結(jié)果是()。A.24B.28C.32D.36

75.

76.下列4個關(guān)于C語言的結(jié)論中錯誤的是()。

A.可以用do—while語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)

B.可以用for語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)

C.可以用while語句實現(xiàn)的循環(huán)一定可以用for語句實現(xiàn)

D.do-while語句與while語句的區(qū)別僅是關(guān)鍵字“while”出現(xiàn)的位置不同

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

A.在賦值表達式中,賦值號的左邊既可以是變量,也可以是任意表達式

B.實型變量中允許存放整型數(shù)

C.若a和b類型相同,在執(zhí)行賦值a=b后,b中的值將放入a中,但b中的值不變

D.在C程序中,求余算符“%”兩邊的類型相同時才能進行運算

78.軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是()。

A.學生成績管理系統(tǒng)B.C語言編譯程序C.UNIX操作系統(tǒng)D.數(shù)據(jù)庫管理系統(tǒng)

79.有以下程序段以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()。

A.當產(chǎn)生的隨機數(shù)n為0時,結(jié)束程序運行

B.當產(chǎn)生的隨機數(shù)n為4時,結(jié)束循環(huán)操作

C.當產(chǎn)生的隨機數(shù)n為l和2時,不做任何操作

D.細循環(huán)語句固定執(zhí)行8次

80.下列關(guān)于指針變量賦空值的說法錯誤的是

A.當賦空值的時候,變量指向地址為0的存儲單元B.賦值語句可以表達為變量名=’\0’;

C.賦值語句可以表達為變量名=0;D.一個指針變量可以被賦空值

五、程序改錯題(1題)81.下列給定程序的功能是:讀入一個整數(shù)n(2<=n<=5000),打印它的所有為素數(shù)的因子。例如,若輸入整數(shù)1234,則應(yīng)輸出:2,617。

請修改程序中的錯誤,使程序能得出正確的結(jié)果。

注意:不要改動main函數(shù),不能增選或刪行,也不能匿改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<stdio.h>

//****found****

Prime(intm);

{

intj,P;

p=1;

//****found****

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

if!(m%j)

{

p=0;

break;

}

return(p);inti,n;

printf("\npleaseenteranintegernumberbetween2

and5000:");

scanf("%d",&n);

printf("\n\nTheprimefactor(s)of%dis(are):",n):

for(i=2;i<n;i4+)

if((!(n%i))&&(Prime(i)))

printf("%4d,",i);

printf("\n");

}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),其功能是使字符串中尾部的*號不多于n個,若多于n個,則刪除多余的*號;若少于或等于n個,則不做任何操作,字符串中間和前面的*號不刪除。例如,字符串中的內(nèi)容為“****A*BC*DEF*G*******”,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)為“****A*BC*DEF*G****”;若n的值為7,則字符串中的內(nèi)容仍為“****A*BC*DEF*G*******”。n的值在主函數(shù)中輸入。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>voidfun(char*a,intn){}main(){ chars[81];intn; printf("Enterastring:\n”); gets(s); printf(“Entern:”); scanf(“%d”,&n); fun(s,n); printf(“Thestringafterdeleted:\n”); puts(s);}

參考答案

1.D

2.C

3.D解析:程序設(shè)計的過程應(yīng)是先畫出流程圖,然后根據(jù)流程圖編制出程序,所以選項A錯誤。程序中的注釋是為了提高程序的可讀性,注釋必須在編制程序的同時加入,所以,選項B和選項C錯誤。綜上所述,本題的正確答案為選項D。

4.D

5.D二維數(shù)組在初始化時,可以省第1維,但是不可以省第2維??梢詾椴糠謹?shù)組元素初始化。A選項、B選項和C選項內(nèi)的初始化都沒有錯誤。因此D選項正確。

6.B

7.A

8.A本題的考點是C語言的數(shù)組及其排序。本題的程序中分為2個循環(huán)體,第一個循環(huán)體將數(shù)組中1,3,5,7,2,4,6,0的前4個元素從大到小排序,這個循環(huán)體結(jié)束后數(shù)組中的值為7,5,3,1,2,4,6,0。第二個循環(huán)體將數(shù)組中7,5,3,1,2,4,6,0從第5個開始的4個元素從小到大排序,這個循環(huán)體結(jié)束后數(shù)組中的值為7,5,3,1,0,2,4,6。所以正確答案是選項A。

9.A選項A中,“sum+=1/i;”中的i為整型,因此“1/i”是整型類型,當“1/i”有小數(shù)時。會被截斷。因此“1/i”結(jié)果始終為0,導致結(jié)果出錯。應(yīng)該改為“sum+=1.0/i”。故本題答案為A選項。

10.C解析:宏替換不像函數(shù)調(diào)用要進行參數(shù)值的計算、傳遞等,而只是簡單按照原格式進行字符串的替換。注意:宏定義的命令格式。

11.C字符數(shù)組a中包含兩個‘\\0’。遇到第1個‘\\0’時就表示字符串a(chǎn)結(jié)束。字符串處理函數(shù)strcat(字符數(shù)組a,字符數(shù)組b),功能是連接兩個字符串,把字符串b連接到字符串a(chǎn)的后面,結(jié)果放在字符數(shù)組a中。連接時將字符串a(chǎn)后的‘\\0’取消,只在新串最后保留一個‘\\0’。本題相當于將“ABCD”和“IJK”連接。故本題答案為C選項。

12.C本題考查的是指向函數(shù)的指針。函數(shù)指針定義的基本格式為:類型標識符(*指針變量名)()。“類型標識符”為函數(shù)返回值的類型。

13.B

14.B

15.C

16.Caaa函數(shù)中,首先定義了一個字符指針t指向形參s,然后通過一個while循環(huán)讓指針t不斷遞增,直到t指向字符串結(jié)束標識處。當t指向結(jié)束標識處時,由于后綴“運算符,它還會被再遞增1,因此“t--”語句讓它回到結(jié)束標識處。最后返回t-s,s還是指向字符串第1個字符處,而t指向了字符串結(jié)尾,故返回值為字符串的長度。故本題答案為C選項。

17.B[解析]在一個C語言程序中可以進行多種算法的實現(xiàn),對算法的個數(shù)沒有規(guī)定,所以B)錯誤。

18.C解析:對字符型一維數(shù)組在定義時初始化,既可以使用初始化列表,也可以使用字符串常量。不過由于字符串常量會自動在結(jié)尾添加\'\\0\',字符做結(jié)束標志,所以用字符串常量的初始化列表項個數(shù)是字符串的長度加1。因此題目中的chara[]='xyz';等價于chara[]={\'x\',\'y\',\'z\',\'\\0\');,所以a數(shù)組長度大于b數(shù)組長度,應(yīng)該選C。

19.B

20.B子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第l次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第l次函數(shù)調(diào)用結(jié)束時,它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時,i的值為9,因此最終m的值為11。

21.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個頭結(jié)點,因此在任何情況下,循環(huán)鏈表中至少有一個結(jié)點存在,從而使空表與非空表的運算統(tǒng)一。

22.*n=j*n=j解析:本題題干信息是能整除x且不是偶數(shù)的所有整數(shù)之和。循環(huán)語句中i從1開始且每次增2,所以i始終是奇數(shù),*n=j;語句是記錄能夠符合題意的各個整數(shù)的各數(shù)。

23.模塊模塊

24.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字符進行比較,如果當前字符小于下—個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。

25.8181解析:將S(i+j)展開來有:S(i+j)=S(6+8)=4×6+8×6+8+1=81。

26.無定值無定值解析:for(i=1;i<7;i++)決定了循環(huán)次數(shù)為6次,每次執(zhí)行的操作是sum+=i,但由于sum沒有初始化,并不知道sum的初值是多少,所以結(jié)果無定值。

27.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動覆蓋字符數(shù)組sp末尾的\'\\0\'。

28.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實過程是將相鄰兩個字符進行比較,如果當前字符小于下一個字符,則通過中間變量temp將字符兩兩交換,所以第—空應(yīng)填:str[i],第二空應(yīng)填str[i+1]最終打印輸出得到的字符串str,所以第三空應(yīng)填'%s',str。

29.x/10case0:case1:case2:case3:case4:case5:case9:x/10\r\ncase0:case1:case2:case3:case4:case5:\r\ncase9:

30.1515解析:程序的功能是求1、2、3、4、5的和即15。

31.252137252137解析:本題中先定義了整型變量a、b和c,然后分別給賦值a為25,b為八進制的025,c為十六進制0x25。然后調(diào)用pruntf()函數(shù)將a、b和c分別用十進制輸出,且中間用空格隔開,八進制025轉(zhuǎn)換為十進制的值為21,十六進制的0x25轉(zhuǎn)換為十進制的值為37,故最后的輸出結(jié)果為252137。

32.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機構(gòu),它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等。

33.模塊獨立原理模塊獨立原理

34.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。

35.邏輯獨立性邏輯獨立性解析:數(shù)據(jù)的獨立性一般可分為物理獨立性和邏輯獨立性。

36.軟件危機的出現(xiàn)軟件危機的出現(xiàn)

37.1212解析:本題考查逗號表達式的運算規(guī)則。逗號表達式的基本格式為:“表達式1,表達式2,…”,其整個表達式的結(jié)果取最后一個子表達式的值。本題中首先計算逗號表達式中的第1個表達式a=2*3=6,然后計算第2個表達式a*2,這時整個表達式的值為12,但要注意,因為第2個表達式并沒有給a賦值,因此a的值不變;接下來執(zhí)行最后一個表達式a+6=12,所以整個表達式最后的值為12。

38.E-R圖E-R圖解析:數(shù)據(jù)庫邏輯設(shè)計的任務(wù)是將概念模型進一步轉(zhuǎn)化成相應(yīng)的數(shù)據(jù)模型。而E-R圖是主要的概念模型,因此數(shù)據(jù)庫的邏輯設(shè)計的主要工作是將E-R圖轉(zhuǎn)換成關(guān)系模式。

39.概念設(shè)計階段(數(shù)據(jù)庫概念設(shè)計階段)概念設(shè)計階段(數(shù)據(jù)庫概念設(shè)計階段)

40.99解析:本題要輸出的結(jié)果是字符串'IBM\\n012\\1\\\\'的長度,'IBM'是3個字符,\'\\n\'是1個字符,'012'又是3個字符,最后的\'\\1\'和\'\\\\\'都是1個字符。所以最終字符串的長度應(yīng)該是3+1+3+1+1=9。故本題應(yīng)該填9。

41.BC語言中二維數(shù)組是按行存放的,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素。此題二維數(shù)組str[][10]第1行的前5個元素為'C','h','i','n','a',第6個元素為'\\0',后4個元素為空字符。緊接著內(nèi)存單元存放數(shù)組第2行的元素,即從str[1][0]到str[1][9]分別為'B','e','i','j','i','n','g',第8個元素為'\\0',后兩個元素為空字符。執(zhí)行*p=str[0]后,指針p就指向了二維數(shù)組str的首地址,p+10指向從首地址依次向后的第11個存儲單元即字符,B,的地址,所以輸出Beijing,故答案為B。

42.B解析:continue語句的作用是跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)條件的判定。當能被2整除時,a就會增1,之后執(zhí)行continue語句,直接執(zhí)行到for循環(huán)體的結(jié)尾,進行i++,判斷循環(huán)條件。

43.C解析:算法的執(zhí)行效率與數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)都有很緊密的關(guān)系。算法的空間復雜度是指執(zhí)行該算法需要的內(nèi)存空間,并非算法程序中指令的條數(shù)。算法一般應(yīng)該具有以下4個特征:可行性、確定性、有窮性和擁有足夠情報。其中,有窮性是指算法必須能在執(zhí)行有限個步驟之后終止,否則可能失去實際意義。

44.C

45.C

46.A

47.B解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在't',和'z'之間就可以了,選項A)和C)符合要求。函數(shù)isalpha用來確定一個字符是否為字母,大寫字母的ASCII碼值的范圍為65到90,所以如果一個字母的ASCII碼小于91,那么就能確定它是大寫字母。

48.B解析:C語言中字符串是以'0'字符結(jié)束的,且strlen()函數(shù)計算的是'0'字符前的所有字符的個數(shù)。本題中strlen(st)應(yīng)為5。數(shù)組定義以后系統(tǒng)就為其分配相應(yīng)大小的內(nèi)存空間,而不論其中有投有內(nèi)容。sizeof()函數(shù)是計算變量或數(shù)組的所分配到的內(nèi)存空間的大小。所以本題的sizeof(st)為20。

49.D解析:本題考查二維數(shù)組和指針,首先使指針p指向二維數(shù)組的首地址,通過第一個for循環(huán)對一維數(shù)組p賦值,其實也就是給二維數(shù)組a賦值,a[0][0]~a[2][2]分別賦以0~8,所以a[1][0],a[1][1],a[1][2]分別為3,4,5。

50.D

51.B解析:考查結(jié)構(gòu)體數(shù)組對結(jié)構(gòu)體成員的引用。結(jié)構(gòu)體數(shù)組中對結(jié)構(gòu)體成員的引用要先引用到數(shù)組元素,然后像對待普通的結(jié)構(gòu)體變量一樣來對待結(jié)構(gòu)體數(shù)組元素。

52.C解析:選項A中,p為數(shù)組名,其值是不能被改變的,故非法;選項B中,p[0]的類型是int*,而a是二維數(shù)組名(類型為int[][3]),兩者無法賦值,故非法:選項C中,p[0]為int型指針,&a[1][2]是int型變量的地址,可以合法賦值;選項D中,p[1]是int型指針,而&a是二維數(shù)組的地址(類型為int(*)[2][3]),兩者無法賦值,故非法。所以本題應(yīng)該選擇C。

53.D解析:當用scanf函數(shù)從鍵盤輸入數(shù)據(jù)時,每行數(shù)據(jù)的末尾按下回車鍵(Enter鍵)之前,可以任意修改。但按下回車鍵putchar(c1)(Enter鍵)之后,seanf函數(shù)即接受了這一行數(shù)據(jù),不能再回去修改。所以本題中,當輸入123<CR>時,變量c1、c2、c3的值分別為1、2、3,當輸入45678<CR>時,變量c5、c6的值4和5。所以用輸出函數(shù)putchar(c1)輸出1,putchar(c2)輸出2,printf('%c%c\\n',c5,c6)輸出45。所以選項D)為正確答案。

54.D解析:本題主要考查的是scanf()函數(shù)的輸入原理。scanf()函數(shù)執(zhí)行時,先從鍵盤緩沖區(qū)中讀取用戶輸入的數(shù)據(jù),若緩沖區(qū)為空或輸入數(shù)據(jù)少于所需數(shù)據(jù),則暫停程序等待用戶的輸入,直到用戶敲入回車,scanf()將繼續(xù)到鍵盤緩沖區(qū)中讀取輸入,如此反復直到滿足scanf()函數(shù)所需數(shù)據(jù),程序才繼續(xù)執(zhí)行下面的語句,而scanf()沒有取完的數(shù)據(jù)仍然會保存在鍵盤緩沖區(qū)內(nèi),到程序結(jié)束時還沒取完就會被釋放掉,不會影響其他的程序運行。另外,scanf()函數(shù)將取到的數(shù)據(jù)匹配給第2個及其后面的指針參數(shù)所指的內(nèi)存地址中去,而不檢查該參數(shù)的類型是否匹配。所以在本題中考生不要被指針ptr的定義所迷惑,它所做的只不過是臨時保存一下a+i的值,然后送到scanf()函數(shù)中去。題目首先定義了一個二維數(shù)組a[3][2]并用{0}初始化之,因為當所賦初值少于所定義數(shù)組的元素個數(shù)時,將自動給后面的元素樸以初值0,所以數(shù)組a[3][2]中所有的元素都被初始化為0了。在主程序的第一個for循環(huán)體中有三條語句,該循環(huán)體會被執(zhí)行兩次,每次執(zhí)行時i的值分別為0和1。第1條語句讓ptr的值分別為a+0(即元素a[0])[0])的地址)和a+1(即元素a[1][0]的地址);第2條語句是一條輸入語句,它每次接受一個十進制整數(shù)存入到ptr所指的內(nèi)存地址中,題目要求輸入的數(shù)據(jù)為“123<回車>”,所以兩次scanf()函數(shù)的調(diào)用使a[0][0]和a[1][0]分別被賦為1和2。笫3條語句讓ptr自增1在這里沒有起到任何作用,因為每次進入循環(huán)體ptr都會被重新賦值。最后,程序用一個兩重循環(huán)按行列輸出二維數(shù)組a中的所有元素。所以,選項B符合題意。

55.D解析:本題考查函數(shù)的調(diào)用。在有參函數(shù)調(diào)用中,是將主調(diào)函數(shù)的實參值傳給被調(diào)函數(shù)的形參。按函數(shù)在程序中出現(xiàn)的位置來分,有以下三種函數(shù)調(diào)用形式:

①函數(shù)調(diào)用作為一條語句。例如:fun();這時不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。故選項A)正確。

②函數(shù)出現(xiàn)在表達式中,這種表達式稱為函數(shù)表達式。這時要求函數(shù)帶回一個確定的值以參加表達式的運算。例如:c=5*max(a,b);函數(shù)max是表達式的一部分,將其值乘以5后賦給c。故選項C)正確。

③函數(shù)調(diào)用作為一個函數(shù)的實參,例如:m=max(a,max(b,c));其中max(b,c)是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實參。故選項B)正確。

函數(shù)調(diào)用不可作為一個函數(shù)的形參,因為函數(shù)調(diào)用參數(shù)的數(shù)據(jù)傳遞是單向傳遞,即實參傳給形參,不能由形參傳給實參。故選項D)錯誤。

56.B解析:本題中a的值為6,b的值為8,最后s的值為8,s*=s等價于s=s*s。

57.B解析:關(guān)系數(shù)據(jù)庫邏輯設(shè)計的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實體集也可以轉(zhuǎn)換成關(guān)系。

58.A解析:本題程序一開始定義了一個字符數(shù)組ss,并用一個字符串常量初始化之。然后使用gets()函數(shù)從鍵盤緩沖區(qū)讀入一個字符串'ABC',此時gets()將改變數(shù)組的前4個元素為{\'A\',\'B\',\'C\',\'\\0\'}。接下來的strcat()函數(shù)將一個字符串連接到字符串ss之后,因為ss[3]被gets()設(shè)置為\'\\0\'(字符串結(jié)束標志),故strcat()從ss[3]開始將'6789'依次寫入ss[3]、ss[4]、ss[5]、ss[6],并將一個\'\\0\'寫入ss[7]。所以輸出結(jié)果是ABC6789,故應(yīng)該選擇A。

59.B解析:在對字符數(shù)組賦字符串值時,系統(tǒng)會自動在字符串的末尾加上一個字符串結(jié)束標志“\\0”,故指向字符數(shù)組的指針p的*(p+4)的值為“\\0”。由于“\\0”的編碼值就是0,所以本題輸出為0。

60.B解析:外循環(huán)的循環(huán)變量i從0遞增到1會循環(huán)2次,內(nèi)循環(huán)的循環(huán)變量j從0遞增到3會循環(huán)4次。但是內(nèi)循環(huán)中有一條if語句,每當j%2為真,即j為奇數(shù)時會跳過下面的x++;語句,所以4次內(nèi)循環(huán)只有2次執(zhí)行到x++;語句,再加上外循環(huán)中包含的2條x++語句,所以每次外循環(huán)會使x自增4次,2次外循環(huán)下來x的值為8。故應(yīng)該選擇B。

61.A*P的意思是取其指向地址的內(nèi)容,P是指向x地址的指針,因此輸出*p也就是輸出x的內(nèi)容,即0,故選擇B選項。

62.A

\n當值相同時按位異或,則為0,按位或與按位與時仍不變,負數(shù)也為非0。

\n

63.B

64.C

65.CC【解析】一般來說,在線性表的鏈式存儲結(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。線性鏈表中數(shù)據(jù)的插入和刪除都不需要移動表中的元素,只需改變結(jié)點的指針域即可。

66.A第一個嵌套的for循環(huán)把二維數(shù)組按列從小到大排序,最后輸出對角線上的元素,答案選擇A)。

67.A

68.B\n在第1次外層for循環(huán)中,首先x++得到x=1。進入到內(nèi)層for循環(huán),只有循環(huán)j的值為奇數(shù)時,變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量x的值自加兩次,當退出內(nèi)層for循環(huán)時,x=3,然后執(zhí)行x++,得到x=4。在進入執(zhí)行第2次外層for循環(huán)中,首先x++得到x=5。進入到內(nèi)層for循環(huán),只有循環(huán)變量J的值為奇數(shù)時,變量X的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量X的值自加l兩次,當退出內(nèi)層for循環(huán)時,x=7,然后執(zhí)行x++,得到x=8,所以打印輸出變量x的值為8。

\n

69.C

\n在主函數(shù)中,首先定義一個包含20個元素的字符數(shù)組P,執(zhí)行語句“strcpy(P+strlen(q),r);”,數(shù)組P的內(nèi)容變?yōu)閧a,b,C,a,b,c,d,e,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0),執(zhí)行語句“strcat(P,q);”,數(shù)組P的內(nèi)容變?yōu)?,a,b,c,a,b,C,d,P,a,b,c,\0,\0,\0,\0,\0,\0,\0,\0),函數(shù)sizeof(P)是求數(shù)組P的大小,返回20,而函數(shù)strlen(p)是計算以P所指起始地址的字符串的長度,這一長度不包括串尾的結(jié)束標志0,所以函數(shù)返回11。

\n

70.C

先返回后自增,所以執(zhí)行完該語句后,輸出結(jié)果是2,變量b的

71.A

72.A指針是用來指示一個內(nèi)存地址的變量,因此只能將地址賦給指針變量,而不能是整數(shù)或浮點數(shù)。

73.C

74.A第一次循環(huán)返回l2,第二次循環(huán)返回l2,累加結(jié)果為24。

75.C

76.D本題考查對各個循環(huán)語句的理解。①do-while語句、for語句、while語句所實現(xiàn)的循環(huán)可以相互替代;②do-while語句至少執(zhí)行一次,而while是符合條件執(zhí)行,不符合不執(zhí)行。

77.D選項A,在賦值表達式中,賦值號的左邊只能是變量或者是代表某個存儲單元的表達式,不能是任意表達式,右邊也不得出現(xiàn)表達式;選項8中,整型變量中只能存放整型數(shù),但實型變量中能存放實型數(shù),也能存放整型數(shù);選項C,表達式a=b的意思是把變量b的值賦給變量a,從而覆蓋a中原來值;選項D,要求取余運算符"%"兩邊的類型均為整型。

78.A

79.Acase常量表達式只是起語句標號作用,并不是在該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch的表達式,找到與之匹配的case語句,就從該case子句執(zhí)行下去,不再進行判斷,直到碰到bleak或函數(shù)結(jié)束為止。簡單地說,break是結(jié)束整個循環(huán)體,而continue是結(jié)束單次循環(huán)。B)選項中當產(chǎn)生的隨機數(shù)n為4時要執(zhí)行打印操作。C)選項中當產(chǎn)生的隨機數(shù)為1和2時分別執(zhí)行case3與case4后面語句的內(nèi)容。由于存在break語句,因此for循環(huán)不是固定執(zhí)行8次,執(zhí)行次數(shù)與產(chǎn)生的隨機數(shù)n有關(guān)系。故本題答案為A)。

80.A本題考查的是對指針變量賦空值。在C語言中用NULL給指針賦空值,如p=NULL。當指針值為NULL時,指針不指向任何有效數(shù)據(jù)。由于NULL與整數(shù)0相對應(yīng),所以有下面三條語句等價:

p=NULL;p=0;p=’\\0’。

81.\n\t(1)錯誤:Prime(intm);

\n正確:Prime(intm)

\n(2)錯誤:if(!(m%j)

\n正確:if(!(m%j))

\n【解析】(1)第一個標識下面的“Prime(intm);”在程序中顯然是一個函數(shù),因此應(yīng)將后面的分號去掉。

\n(2)第二個標識下面的for語句最簡單的應(yīng)用形式為:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)語句。顯然if語句后面缺少括號,因此,“if!(m%j)”改為“if(!(m%i))”。

\n本題主要考查標點符號、運算符、基本定義。\n

82.voidfun(char*a,intn){ inti=0,k=0; char*p,*t; p=t=a;/*將指針移動到字符串末尾*/ while(*t) t++; t--;/*從后往前如果是*則使k自增1,找到最后一個*所在的位置,并記錄*的個數(shù)*/ while(*t==‘*’)/*指針t指向前一個,同時標量k自增1*/ {k++;t--;}/*如果最后*的個數(shù)大于允許的個數(shù)*/ if(k>n)/*循環(huán)次數(shù)不大于前面的字符與最大允許*的個數(shù)之和*/ { while(*p&&p<t+n+1)<p=""></t+n+1)<>/*把字符保存到數(shù)組a中*/ {a[i]=*p; i++;p++; } a[i]=‘\0’; }}字符串中尾部*號不能多于n個,多余的要刪除。首先需要通過while循環(huán)統(tǒng)計字符串尾部*號,然后通過if條件語句完成尾部*號數(shù)和n的比較,若尾部*號數(shù)多于n個,則需要把n個*號和其余字符重新保存。2022年河南省信陽市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.遞歸式的先序遍歷一個n節(jié)點,深度為d的二叉樹,則需要??臻g的大小為()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

2.靜態(tài)鏈表中指針表示的是()。

A.內(nèi)存地址B.數(shù)組下標C.下一元素地址D.左、右孩子地址

3.程序設(shè)計方法要求在程序設(shè)計過程中,()。

A.先編制出程序,經(jīng)調(diào)試使程序運行結(jié)果正確后再畫出程序的流程圖

B.先編制出程序,經(jīng)調(diào)試使程序運行結(jié)果正確后再在程序中的適當位置處加注釋

C.先畫出流程圖,再根據(jù)流程圖編制出程序,最后經(jīng)調(diào)試使程序運行結(jié)果正確后再在程序中的適當位置處加注釋

D.以上3種說法都不對

4.對n個關(guān)鍵字的序列進行快速排序,平均情況下的空間復雜度為_______

A.O(1)B.O(logn)C.O(n)D.O(nlogn)

5.以下敘述中正確的是

A.語句inta[4][3]={{1,2},{4,5}};是錯誤的初始化形式

B.語句inta[4][3]={1,2,4,5};是錯誤的初始化形式

C.語句inta[][3]={1,2,4,5};是錯誤的初始化形式

D.在邏輯上,可以把二維數(shù)組看成是一個具有行和列的表格或矩陣

6.

7.在一個無向圖中,所有頂點的度數(shù)之和等于所有邊數(shù)的()倍。

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

8.A.A.75310246B.01234567C.76310462D.13570246

9.以下程序擬實現(xiàn)計算sum=1+1/2+1/3+…+1/50。#include<stdio.h>main(){inti;doublesum;sum=1.0;i=1;do{i++-;sum+=1/i;}while(i<50);printf(“sum=%lf\n”,sum);}程序運行后,不能得到正確結(jié)果,出現(xiàn)問題的語句是()。

A.sum+=1/i;B.while(i<50);C.sum=1.0D.i++;

10.以下程序的運行結(jié)果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf("Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);}

A.Y=3B.存在語法錯誤C.Y=7D.Y=0

11.有以下程序(strcat函數(shù)用于連接兩個字符串):#include<stdio.h>#include<string.h>main(){chara[20]=“ABCD\0EFG\0”,b[]=“UK”;strcat(a,b);printf(“%s\n”,a);}程序的運行結(jié)果是()。

A.UKB.ABCDE\0FG\0UKC.ABCDUKD.EFGUK

12.語句int(*ptr)的含義是()。A.A.ptr是一個返回值為int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

13.設(shè)無向圖G中的邊的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},則從頂點a出發(fā)進行深度優(yōu)先遍歷可以得到的一種頂點序列為()。

A.aedfcbB.acfebdC.aebcfdD.aedfbc

14.

15.

16.有以下函數(shù):intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下關(guān)于aaa函數(shù)功能敘述正確的是()。

A.將串s復制到串tB.比較兩個串的大小C.求字符串s的長度D.求字符串s所占字節(jié)數(shù)

17.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成

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

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

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

18.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是()。

A.數(shù)組a和b的長度相同B.a數(shù)組長度小于b數(shù)組長度C.a數(shù)組長度大于b數(shù)組長度D.以述說法都不對

19.判斷一個循環(huán)隊列cq(最多元素為m)為滿的條件是()。

A.cq->rear-cq-front=m;

B.(cq->rear+1)%m=cq->front;

C.cq->front=cq->rear;

D.cq->rear=m-1;

20.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)執(zhí)行后的輸出結(jié)果是()。A.5,5B.5,11C.11,11D.11,5

二、2.填空題(20題)21.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。

22.以下函數(shù)的功能是求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。例如,若x中的值為30,則有4個數(shù)符合要求,它們是1,3,5,15。請按題意,完成填空。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intpp[],int*n)

{inti,j=0;

for(i=1;i<x;i+=2)

if(x%i==0)pp[j++]=i;

【】;

}

main()

{intx,aa[1000],n,i;

clrscr();

printf("\nPleasenteranintegernumber:\n");scanf("%d",&x);

fun(x,aa,&n);

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

printf("%d",aa[i]);

printf("\n");

}

23.軟件結(jié)構(gòu)是以【】為基礎(chǔ)而組成的一種控制層次結(jié)構(gòu)。

24.下面的程序可對指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

25.以下程序運行后的輸出結(jié)果是【】。

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+j));

}

26.下列程序的輸出結(jié)果是______。

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

27.下列語句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

28.下面的程序可對指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n-->1)

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

if(str[i]<str[i+l])

{temp=【】;

str[i]=str[i+l];

【】=temp;

}

printf(【】);

}

29.根據(jù)以下if語句寫出與其功能相同的switch語句(x的值在0~100之間)。

if語句:

if(x<60)m=1;

elseif(x<70)m=2;

elseif(x<80)m=3;

elseif(x<90)m=4;

elseif(x<100)m=5;

switch語句:

switch(【】)

{

【】m=1;break;

case6:m=2;break;

case7:m=3;break;

case8:m=4;break;

【】m=5;

}

30.執(zhí)行以下程序后sum的值是【】。

main()

{

inti,sum;

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

sum+=i;

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

}

31.以下程序運行后的輸出結(jié)果是______。

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

32.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

33.在進行軟件結(jié)構(gòu)設(shè)計時,應(yīng)遵循的最主要原理是【】。

34.注釋說明了程序的功能,它分為【】注釋和功能性注釋。

35.數(shù)據(jù)庫理論中,數(shù)據(jù)的獨立性一般可分為物理獨立性和______。

36.軟件工程的出現(xiàn)是由于【】。

37.若a是血型變量,則表達式(a=2*3,a*2),a+6的值為______。

38.數(shù)據(jù)庫的邏輯模型設(shè)計階段的任務(wù)是將______轉(zhuǎn)換成關(guān)系模式。

39.數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、______、邏輯設(shè)計階段、物理設(shè)計階段、實施階段、運行和維護階段。

40.以下程序的輸出結(jié)果是【】。

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){eharstr[][10]={"China","Beijing"},*p=str[o];printf("%s\n",p+10);}程序運行后的輸出結(jié)果是()。

A.ChinaB.BeijingC.ngD.ing

42.下列程序的輸出結(jié)果是#include"stdio.h"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}

A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5

43.下面敘述正確的是______。A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

B.算法的空間復雜度是指算法程序中指令(或語句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上三種描述都不對

44.下面宏定義正確的是()

A.#defineSa*b

B.#definePI3.14;

C.#definemax(a,b)((a)>(b)?(a);(b))

D.#defines(x)(x)*(x);

45.設(shè)有語句:charstr1[]="string",str2[8],*ste3,*str4="string";,則下列不是對庫函數(shù)strcpy的正確調(diào)用的是______。

A.strcpy(str1,"HELLOI");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLOY");

D.strcpy(str4,"HELLO4");

46.若x是整型變量,pb是基本類型為整型的指針變量,則正確的賦值語句是()

A.pb=&x;B.pb=x;C.*pb=&x;D.*pb=*x;

47.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出比中的值為大寫字母的表達式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<='Z')

C.(kk+32)>='a'&&(kk+32)<='z'

D.isalpha(kk)&&(kk<91)

48.以下程序的輸出結(jié)果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

49.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(j=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序運行后的輸出結(jié)果是

A.12B.123C.234D.345

50.設(shè)有以下程序段:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'),*p;p=&a[0];下面選項中,其值為6的表達式為______。

A.P++->nB.p->n++C.(*p).n++D.++p->n

51.若有以下的說明,對初值中整數(shù)2的正確引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

52.若有定義語句:inta[2][3],*p[3],則以下語句中正確的是A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;

53.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始)123<CR>45678<CR>則輸出結(jié)果是()。

A.1267B.1256C.1278D.1245

54.有以下程序main(){inta[3][2]={0},(*ptr)[2],i,i;for(i=0;i<2;i++){ptr=a+i;scanf("%d",ptr);ptr+++;}for(i=0;i<3;i++){foil(j=0;j<2;j++)printf("%2d",a[i][j]);printf("\n");}若運行時輸入:123<回車>,則輸出結(jié)果為

A.產(chǎn)生錯誤信息B.102000C.123000D.102030

55.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯誤的是A.函數(shù)調(diào)用可以作為獨立的語句存在

B.函數(shù)調(diào)用可以作為一個函數(shù)的實參

C.函數(shù)調(diào)用可以出現(xiàn)在表達式中

D.函數(shù)調(diào)用可以作為一個函數(shù)的形參

56.在執(zhí)行下述程序時,若從鍵盤輸入6和8,則結(jié)果為

main()

{inta,b,s;

scanf("%d%d",&a,&b);

S=a

if(a<b)

s=b;

S*=s;

printf("%d",s);}

A.36B.64C.48D.以上都不對

57.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成________。

A.屬性B.關(guān)系C.鍵D.域

58.當執(zhí)行下面的程序時,如果輸入ABC,則輸出的結(jié)果是()。#include<Stdlib.h>main(){charss[]="1,2,3,4,5";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}

A.ABC6789B.ABDC67C.123ABC678D.ABC456789

59.請讀程序段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));程序段的輸出結(jié)果是______。

A.68B.0C.字符'D'的地址D.不確定的值

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);}程序執(zhí)行后輸出結(jié)果是()。

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

四、選擇題(20題)61.若有定義:“int*P,x=0,*p,p=&x;”,則語句“printf("%d\n",*p);”的輸出結(jié)果是()。

A.隨機值B.0C.x的地址D.P的地址

62.

設(shè)有定義的語句:“charc1=92,c2=92;”,則以下表達式中的值為零的是()。

A.c1^c2B.c1&c2C.~c2D.c1E.c2

63.

64.

65.下列關(guān)于線性鏈表的敘述中,正確的是()。

A.各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致

B.各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)

C.進行插入與刪除時,不需要移動表中的元素

D.以上說法均不正確

66.有以下程序

67.

68.有下列程序:

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);

}

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

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

69.

有以下程序:

#include<strintg.h>

main

{charp[20]={a,b,c,d),q[]="abc",r[]="

abcde";

strcpy(p+strlen(q),r);strcat(p,q);

printf("%d%d\n",sizeof(p),strlen(p));

}

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

溫馨提示

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

最新文檔

評論

0/150

提交評論