2022-2023年江蘇省南通市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2022-2023年江蘇省南通市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2022-2023年江蘇省南通市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2022-2023年江蘇省南通市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2022-2023年江蘇省南通市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022-2023年江蘇省南通市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.有下列程序:

fun(intx)

{intp;

if(x==0‖x==1)return(3);

p=x-fun(x-2);

returnp;

}

main()

{printf("%d\n",fun(7));}

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

A.7B.3C.2D.0

3.設(shè)有說明:charw;intx;f1oaty;doublez;則表達式w*x+z-y值的數(shù)據(jù)類型為()。

A.floatB.charC.intD.double

4.第

4

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

A.ABCEDB.DCBEAC.DBCEAD.CDABE

5.下列變量聲明合法的是()。A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=0xfdaL;

D.float2aaa=1e-3;

6.在10000個int型變量中找出最大的100個,使用下列排序算法中哪一種用時最快()

A.冒泡排序B.快速排序C.歸并排序D.堆排序

7.依次插入序列(50,72,43,85,75,20,34,45,65,30)后建立的二叉搜索樹中,查找元素30要進行()次元素間的比較。

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

8.以下選項中表示空函數(shù)的是()。

A.intfun(){return0;}

B.intfun();

C.intfun(){}

D.intfun(inta,intB){return1;}

9.

10.若有語句“typedefstructS{intg;charh;}T;”,則下列敘述中正確的是()。

A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

11.以下程序運行后,輸出結(jié)果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}

A.1B.7C.9D.11

12.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一特定的圖符構(gòu)成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是______。

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

13.以下不能輸出字符A的語句是(注:字符A的ASCII值為65,字符a的ASCII值為97)()。

A.printf(“%c\n”,‘a(chǎn)’-32);

B.printf(“%d\n”,‘A’);

C.printf(“%c\n”,65);

D.printf(“%c\n”,‘B’-1);

14.s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項中正確的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

15.在一個長度為n(n>1)的單鏈表上,設(shè)有頭和尾兩個指針,執(zhí)行()操作與鏈表的長度有關(guān)。

A.刪除單鏈表中的第一個元素

B.刪除單鏈表中的最后一個元素

C.在單鏈表第一個元素前插入一個新元素

D.在單鏈表最后一個元素后插入一個新元素

16.

17.有以下程序

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

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

}

intf(intx)

{returnx*2;}

程序運行后的輸出結(jié)果是()。A.1B.2C.4D.8

18.在深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為()。

A.31B.32C.16D.15

19.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結(jié)果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

20.有以下程序:

程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果()。

A.不等于10的整數(shù)

B.大于3且不等于l0的整數(shù)

C.大于3或等于l0的整數(shù)

D.小于3的整數(shù)

二、2.填空題(20題)21.數(shù)據(jù)庫理論中,數(shù)據(jù)的獨立性一般可分為物理獨立性和______。

22.已定義charch=′$′;inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為【】。

23.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

24.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序運行時,如果從鍵盤輸入:A,B,<CR>,則輸出結(jié)果為______。

25.以下函數(shù)的功能是求x的y次方,請?zhí)羁铡?/p>

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

returnz;

}

26.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達【】。

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

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

28.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及列數(shù)據(jù)的操作運算。

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

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

30.若fp已正確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:

fp=fopen(【】);。

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

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptrl=a,*ptr2=b;

intk;

for(k=0;k<7;k++)

if(*(ptrl+k)==*(ptr2+k))

printf("%c",*(ptrl+k));}

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

#include<stdio.h>

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

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

}

33.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

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

sstrcpy(str1,str2);

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

}

34.在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數(shù)為【】。

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

#include<stdio.h>

int(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

36.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,這稱為______。

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

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

38.在printf格式字符中,以帶符號的十進制形式輸出整數(shù)的格式字符是【】;以八進制無符號形式輸出整數(shù)的格式字符是【】;以十六進制無符號形式輸出整數(shù)的格式字符是【】;以十進制無符號形式輸出整數(shù)的格式字符是【】。

39.以下函數(shù)的功能是計算請?zhí)羁铡?/p>

doublefun(intn)

{doubles=0.0,fac=1.0;inti;

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

{fac=fac【】;

s=s+fac;

}

returns;

}

40.用以下程序計算1到100的整數(shù)的累加和。請?zhí)羁铡?/p>

main()

{inti,sum=【】;

i=1;

for(【】)

{sum+=j(luò)

i++;

}

printf("sum=%d\n",【】);

}

三、1.選擇題(20題)41.若有定義:inta[2][3];,以下選項中對a數(shù)組元素正確引用的是

A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]

42.執(zhí)行以下程序后,a,b的值分別為main(){ina,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}

A.-1,5B.1,6C.0,7D.4,10

43.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

44.下列程序的輸出結(jié)果是()。main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}

A.42B.45C.56D.60

45.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

46.以下不能定義為用戶標識符的是()。

A.scanfB.VoidC.3comD.int

47.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運行后的輸出結(jié)果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

48.設(shè)變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:□代表空格字符)

A.10□X□20□Y<回車>

B.10□X20□Y<回車>

C.10□X<回車>20□Y<回車>

D.10X<回車>20Y<回車>

49.有以下程序int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b:8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}執(zhí)行后輸出結(jié)果是

A.7,8,8B.7,8,7C.8,7,7D.8,7,8

50.下面關(guān)于完全二叉樹的敘述中,錯誤的是______。

A.除了最后一層外,每_層上的結(jié)點數(shù)均達到最大值

B.可能缺少若干個左右葉子結(jié)點

C.完全二叉樹一般不是滿二叉樹

D.具有結(jié)點的完全二叉樹的深度為[log2n]+1

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

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

52.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=1,b=3;if((++a<0)&&!(b--<=0))printf("%d,%d\n",a,B;elseprintf("%d,%d\n",b,A);}

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

53.有以下程序#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);}程序的運行結(jié)果是

A.12300B.123C.1D.321

54.以下程序的輸出結(jié)果是()#include<stdio.h>main(){structstru{inta,b:charc[6];}:printf("%d\n",sizeof(stru)),}

A.2B.4C.8D.10

55.若執(zhí)行下述程序時,從鍵盤輸入的數(shù)據(jù)是3和6,則程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){intx,y,z;scanf("%d%d",&X,&y);z=y+x;if(x<y)z=y+x;printf("%d",z);}

A.9B.3C.0D.有語法錯誤

56.main()

{inta=4,b=5,c;

ifa<B)

{c=a*b;printf("%d,%d,%d\n",b,a,c);}

else

{c=b/a;printf("%d,%d,%d\n",b,a,c);}

}

A.4,5,12B.20C.5,4,20D.12

57.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是

A.data的每個成員起始地址都相同

B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等

C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000

D.data可以作為函數(shù)的實參

58.有下列程序:

main()

{intx=0;

inty=0;

while(x<7&&++y)

{y--;

printf(:%d,%d",y,x);

}

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

A.0,7B.7,7C.0,6D.1,6

59.有以下程序:

#include<stdio.h>

#include<stdlib.h>

structNODE

{intnum;

structNODE*next;

};

main()

{struetNODE*p,*q,*r;

intsum=0;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)malloc(sizeof(struetNODE));

r=(structNODE*)malloc(sizeof(structNODE));

P->num=1;q->num=2;r->num=3;

p->next=q;q->next=r;r->next=NULL;

sum+=q->next->num;sum+=P->num;

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

}

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

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

60.有以下程序:voidfun1(char*p){char*q;q=p;while(*q!='\0'){(*q)++;q++;}}main(){chara[]={"Program"),*p;p=&a[3];fun1(p)printf("%s\n",A);}程序執(zhí)行后的輸出結(jié)果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

四、選擇題(20題)61.假定已建立以下鏈表結(jié)構(gòu),且指針p和q已指向如下圖所示的結(jié)點:

則以下選項中,可將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句組是

A.(*p).next=(*q).next;free(p);B.p=q->next;free(q);

C.p=q;free(q);D.p->next=q->next;free(q);

62.有以下程序

63.有如下嵌套的if語句:

以下選項中與上述if語句等價的語句是()。

A.

B.

C.

D.

64.有以下程序:

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

A.let=4B.m=2C.m=6D.m=5

65.若有定義:charc;doubled;程序運行時輸入:12<;回車>;,能把字符1輸入給變量c、數(shù)值2輸入給變量d的輸入語句是()。

66.有以下程序

main()

{inta,b,d=5;

a=d*10%8;b=a&&(-1);

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

}

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

A.10,1B.2,1

C.10,0D.2,0

67.軟件生命周期中,花費最多的階段是()。

A.詳細設(shè)計B.軟件編碼C.軟件測試D.軟件維護

68.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

69.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()

A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計

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

charstr[15]=”hello!”;

printf(“%d\n”,strlen(str));

A.15B.14C.7D.6

71.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}輸出的結(jié)果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

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

A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)是一一對應(yīng)的

B.算法的時間復(fù)雜度與空間復(fù)雜度一定相關(guān)

C.算法的效率只與問題的規(guī)模有關(guān),而與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

D.算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量

73.有三個關(guān)系R、S和T如下:

則由關(guān)系R和S得到關(guān)系T的操作是()。

A.自然連接B.交C.投影D.并

74.

75.設(shè)已有定義:floatx;,則以下對指針變量P進行定義且賦初值的語句中正確的是()。

A.int*p=(float)x;

B.float*p=&x;

C.floatp=&x;

D.float=1024;

76.有如下程序

#include"stdio.h"

voidfun(int*a,int*b)

{intm;

m=(*a+*b)*(*a+*b);

m+=(*a-*b)*(*a-*b);

printf("%d\n",m);}

main()

{inta=5,b=6,*x=&a,*y=&b;

fun(x,y);}

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

A.120B.121

C.122D.123

77.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0

78.閱讀下面程序,則執(zhí)行后的結(jié)果是()。

A.tomeetme

B.tmem

C.oete

D.tome

79.

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

#include<stdio.h>

main()

{inti;

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

switch(i%5)

{case0:printf("*");break;

case1:printf("#");break;

default:printf("\n");

case2:printf("&");

}

}

A.&#B.#&C.#&D.&

**&#

&**

五、程序改錯題(1題)81.寫出下列程序的運行結(jié)果。

main

{intn;

For(n=3;n<=10;n++)

{if(n%6==0)break;Printf(“%d”,n);}}

六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。

例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當是“ABCDEFG”。

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

請勿改動maini)函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(chara)

{

voidmain

{

chars[81];

print{("Enterastring:\n");

gets(s):

fun(S);

printf("Thestringafterdeleted:\n");

puts(s);

}

參考答案

1.D

2.C解析:因為在函數(shù)fun(intx)中,如果參數(shù)x等于0或1時,返回值3。否則p=x-fun(x-2)這是一個遞歸函數(shù),所以在主函數(shù)調(diào)用fun(7)時,其過程為:“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1))=7-(5-(3-3))=7-5=2”,所以最后的輸出結(jié)果為2。

3.D

4.B解析:棧操作原則上“后進先出”,棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進棧,B、C處于中間,A最早進棧。所以出棧時一定是先出D,再出C,最后出A。

5.A本題需了解3個知識點:①標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線;②do是C語言的一個關(guān)鍵字,不能再用做變量名和函數(shù)名;③c語言規(guī)定指數(shù)形式的實型數(shù)量e或E后面的指數(shù)必須是整數(shù)。

6.B

7.B

8.C空函數(shù)是函數(shù)體沒有執(zhí)行語句的函數(shù)。選項A、D不是空函數(shù);選項B是函數(shù)的聲明;只有選項C是空函數(shù)。故本題答案為C選項。

9.B

10.BT為結(jié)構(gòu)體類型名,可以用來定義結(jié)構(gòu)體變量。故本題答案為B選項。

11.C

12.A解析:數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。數(shù)據(jù)流圖中的主要圖形元素有:加工(轉(zhuǎn)換)、數(shù)據(jù)流、存儲文件(數(shù)據(jù)源)、源和潭。

13.BB選項輸出的格式為%d,即整型格式,所以輸出字符‘A’的ASCII值65,而不是字母A。因為大寫字母比其對應(yīng)的小寫字母的ASCII值小32,所以A選項正確。字符‘A’的ASCII值是65,以%c格式輸出可以輸出字母A,所以C選項正確。因為字符‘A’的ASCII值比字符‘B’的小1,所以D選項正確。故本題答案為B選項。

14.D在C語言中,不能直接比較兩個字符串的大小,必須用特定的函數(shù)來完成,選項A錯誤;選項B不管大于還是小于都執(zhí)行S,不符合題意;選項C正好相反,當s2大于s1時,執(zhí)行語句S,可知選項D正確。

15.B

16.A

17.D解析:本題考查函數(shù)返回值作參數(shù),最初n=1,f(n)=f(1)=2,將f(n)的結(jié)果代入第二個f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

18.C解析:二叉樹的一個性質(zhì)是,在二叉樹的第k層上,最多有2(k-1)(k>=1)個結(jié)點。對于滿二叉樹,每一層上的結(jié)點數(shù)都達到最大值,即在滿二叉樹的第k層上有2k-1個結(jié)點。所以,在深度為5的滿二叉樹中,所有葉子結(jié)點在第5層上,即其結(jié)點數(shù)為2(k-1)=2(5-1)=16。

19.D

20.Bif-else控制結(jié)構(gòu)中,else總是與最近的未配對的if匹配。本題的執(zhí)行過程為:如果輸入整數(shù)小于3則不進行任何操作,否則判斷該整數(shù)是否不等于l0,若為真則進行輸出。因此程序輸出的數(shù)據(jù)為大于3且不等于l0的整數(shù)。

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

22.11解析:在執(zhí)行邏輯表達式'j=!ch&&i++'時,首先判斷j=!ch的值,因為'ch=\'$\''不為0,所以'j=!ch=0',編譯系統(tǒng)便不再計算表達式'i++'的值,i的值不變,仍為1。

23.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

24.BB解析:因為c是字符類型變量,它只能接收一個字符,所以c=A,字符型變量在參與算術(shù)運算的時候是用其相應(yīng)的ASCII碼參與運算的,這樣++c得到字母B的ASCII碼,用putchar函數(shù)輸出是輸出其相應(yīng)的字符,所以是B。

25.xx解析:函數(shù)的定義形式為;

函數(shù)類型函數(shù)名(形參表)

{

類型說明語句;

執(zhí)行語句;

}

本題中函數(shù)的功能是:累積變量以求得變量的Y次方。

26.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或不為0。本題具體做法如下:Y%2=1或Y%2!=0。

27.333,3解析:本題在while(n++<=1)語句后,直接加了分號,說明如果while()的條件為真時,該循環(huán)什么都不做:n++是先取n的當前值和1做比較,然后再將n加1。第一次循環(huán),n=0時,循環(huán)條件n++=<1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時,循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時,循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時仍將n加1,得到n=3.退出循環(huán)后執(zhí)行printf語句,第二個printf語句輸出n++,是先輸出n的當前值3,然后再將n加l,即程序結(jié)束后得到n=4,但輸出的是3。

28.存儲結(jié)構(gòu)存儲結(jié)構(gòu)解析:數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運算。

29.98768769876\r\n876解析:指針是一種數(shù)據(jù)類型,這種數(shù)據(jù)類型的變量用來存放內(nèi)存中分配的存儲單元的首地址。指針的定義:

類型說明符*指針變量名;

30.d1.dat"rb"d1.dat,'rb'解析:打開文件的函數(shù)為fopen('文件名','mode'),其中'mode'表示文件的打開方式。如果打開的是二進制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已存在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件。'a'為追加方式打開。若文件存在時,將打開這個文件并且在文件的末尾進行追加。當文件不存在,將創(chuàng)建新文件。'r+'打開一個已存在文件用于更新(可讀可寫)。\'w+'創(chuàng)建一個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當文件不存在時,創(chuàng)建新文件,并在文件末尾進行追加(可讀可寫)。根據(jù)題意,應(yīng)該填'd1.dat','rb'。

31.gaga解析:用字符指針處理字符串,首先要使指針指向這個字符串,即題中的ptr1=a和ptr2=b。然后就是通過指針的移動可以引用到字符串中的每一個字符。題中的*(ptr1+k)是使指針ptr1向后移動k個位置,然后取出指向的字符。注意:用字符數(shù)組作為字符串和用指針指向的一個字符串之間的區(qū)別。

32.00解析:在本題中,d=(a>b>c);相當于d=(5>4>3);其計算過程為:先算5>4,結(jié)果為真,得1,即d=(1>3);然后計算1>3,結(jié)果為假,得0。

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

34.log2n

35.7979解析:因為在調(diào)用子函數(shù)時進行的是數(shù)值傳遞,調(diào)用于函數(shù)并不能改變實參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。

36.物理獨立性物理獨立性解析:數(shù)據(jù)的獨立性是指數(shù)據(jù)和應(yīng)用程序相互獨立,分為物理獨立性和邏輯獨立性。其中物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式)改變時,不需要修改應(yīng)用程序。而邏輯獨立性是指當邏輯結(jié)構(gòu)改變時,不需要修改應(yīng)用程序。

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

38.d0xu

39./i或*(1.O/i)或/(double)i/i或*(1.O/i)或/(double)i解析:主函數(shù)中首先定義了兩個double型的變量s和fac,并給它們賦初值為0.0和1.0,在函數(shù)中s和fac的作用是存放和以及要加到的那一項的值。通過分析可知,第i項的值可以由第i-1項的值得到,即第i項是第i-1項的值除以i??梢姍M線處應(yīng)添“/i”或與它等價的表達式。

40.0i<=100;sum

41.D解析:C語言中數(shù)組下標是從0開始的,所以二維數(shù)組a[2][3]的第一維下標取值為0、1;第二維的下標取值為0、1、2,因而選項A)、B)、C)都是錯誤的,選項D)表示數(shù)組元素a[0][0]。

42.C解析:inta,b,k=4,m=6,*p1=&k,*p2=&m;聲明整型變量a,b,k,m和指針p1,p2,并分別將4和6賦給k和m,將k和m的地址賦給P1和p2;a=p1==&m;等價于a=(p1==&m);將p1是否等于地址m的值(0)賦給變量a,b=(*p1)/(*p2)+7;該句的含義是將后面表達式的的值7賦給變量b。

43.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

44.B解析:在C語言中,數(shù)組的下標默認為0,因此數(shù)組p的下標范圍為:0~7。程序循環(huán)過程為:第1次循環(huán)i=0,執(zhí)行循環(huán),并且i自加,得i=1,因此p[i]為p[1]=12,12%2=0,不執(zhí)行后面的語句;接著進行第2次循環(huán),此時i=1,小于7執(zhí)行循環(huán),并且i自加,得i=2,因此p[i]為p[2]=13,13%2=1,執(zhí)行后面的語句;這樣一直到退出循環(huán)。最后j的值為j=13+15+17=45。

45.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點,e、c、h、f是右子樹的結(jié)點。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點,b右邊子樹無結(jié)點。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點位置。所以可知后序遍歷的結(jié)果是D。

46.D解析:標識符是C語言中用來表示變量名、數(shù)組名、函數(shù)名、指針名、結(jié)構(gòu)名、聯(lián)合名、枚舉常數(shù)名、用戶定義的數(shù)據(jù)類型名、語句標號等用途的字符序列。標識符由1~32個字符組成,第一個字符必須是字母或下劃線,后面的字符可以是字母、數(shù)字或下劃線。標識符不能與C關(guān)鍵字相同,并區(qū)分大小寫。選項D)錯誤,因為int是C語言中的關(guān)鍵字。

47.D解析:本題中首先定義一個字符數(shù)組s,并將字符串'ABCD'存到數(shù)組s中,定義了一個字符指針變量p,在接下來for循環(huán)中,循環(huán)體共執(zhí)行了三次,第一次p指向s[1],所以此時輸出的p所指字符串的值為BCD,第二次循環(huán)p指向s[2],此時輸出p所指的字符串的值為CD,第三次循環(huán)p指向s[3],此時輸出的p所指的字符串的值為D。所以,4個選項中選項D符合題意。

48.D解析:本題中,scanf函數(shù)的格式控制沒有空格,所以,對于選項A)、B)、C),輸入的第一個空格會作為字符賦值給變量c1,而不會被解釋成分隔符。

49.B解析:本題定義了一個返回值為指針的函數(shù)f(),此函數(shù)有兩個指針型的形參x和y,該函數(shù)的功能,是返回x和y指向的變量中值較小的那個指針變量。主函數(shù)中定義了兩個指針變量p和q,井讓它們指向了變量a和b,調(diào)用函數(shù)f(),返回指向的變量值較小的指針變量,r的值為指針變量p的值(變量a的地址),因此最后輸出的*p、*q和*r的值是7、8和7。

50.B解析:滿二叉樹指除最后一層外每一層上所有結(jié)點都有兩個子結(jié)點的二叉樹。完全二叉樹指除最后一層外,每一層上的結(jié)點數(shù)均達到最大值,在最后一層上只缺少右邊的若干子結(jié)點(葉子結(jié)點)的二叉樹。

51.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)系。

52.C

53.B解析:在函數(shù)中首先把整型數(shù)組a[10]中的每個元素寫入文件d1.dat中,然后再次打開這個文件,把文件d1.dat中的內(nèi)容讀入到整型變量n中,最后輸出變量n的值。

54.D

55.B解析:變量x得到數(shù)據(jù)3,變量y得到數(shù)據(jù)6。z=6+3=9。x<y即3<6關(guān)系表達式的值為1,執(zhí)行z=y-x=6-3=3。最后輸出z的值為3。

56.C解析:本題考查ifelse語句。第一個if語句,先判斷條件,發(fā)現(xiàn)a<b成立,執(zhí)行下列的復(fù)合語句,得c=a*b=20,b、a的值不變。

57.D解析:選項A),共用體的每個成員的起始地址都相同;選項B),共用體變量所占的內(nèi)存長度等于最長的成員的長度;選項C)因為每個成員的起始地址相同,所以整型數(shù)5以浮點型輸出時為5.000000;選項D)C語言規(guī)定,不能把共用體變量作為函數(shù)的參數(shù)。

58.A解析:本題考查while循環(huán)。y的值在while循環(huán)的控制表達式中加1,在循環(huán)體內(nèi)減1,所以總的y值不變,且控制條件++y永遠非零。當x加到7時不滿足循環(huán)條件,結(jié)束循環(huán)。

59.B解析:程序中q->next=r,所以q->next->num即為r->num,值為3,而p->num=1,所以sum=3+1=4。

60.A解析:在函數(shù)fun1()中,首先將形參p的內(nèi)容存入臨時指針q中,然后使用—個while循環(huán),當q所指內(nèi)容不是字符串結(jié)束標志'\\0\'時,讓q所指內(nèi)容增1,然后將指針q增1指向下一個位置。所以函數(shù)fun1()實現(xiàn)的功能是:將傳入字符串的所有字符自增1。主函數(shù),指針p在被傳入fun1()函數(shù)之前,初始化指向的是寧符數(shù)組a的第4個元素\'g\',所以最終輸出的結(jié)果應(yīng)該是Prohsbn。故應(yīng)該選擇A。

61.D題目中有兩個分別指向結(jié)點的指針p和q,其中p->next=q,q->next->data=C。要將q結(jié)點從鏈表中刪除,只要將指針p所指結(jié)點的next域指向q指針所指結(jié)點的下一個結(jié)點,即令p->next=q->next,也可以表示為(*p).next=(*q).next。操作完成后,便將q指針所指結(jié)點從鏈表中刪除,隨后將該結(jié)點釋放即可。

62.A外層循環(huán)i,值分別為l23,內(nèi)層循環(huán)j分別為l23、23和3,所以答案為A)。

63.C嵌套的if語句功能是將k賦值為a、b、c中的最小值,選項A)中沒有比較a、c的大小,選項B)中語句”((b<c)?a:b):((b>c)?b:c)“錯誤,選項D)中沒有比較b、c大小。

64.C第一次外循環(huán)i的值為l,第一次內(nèi)循環(huán)j的值為3,不滿足條件執(zhí)行in}=i}j即m的值為3;第二次j的值為2,不滿足條件執(zhí)行m·=i*j,即m的值為6;第三次j的值為1,不滿足條件執(zhí)行nl*=i*j,即m的值仍為6。第二次外循環(huán)i的值為2,j的值為3,滿足條件,執(zhí)行break語句,跳出循環(huán)。

65.B%lf是針對double類型,如果僅用%f,輸入的數(shù)據(jù)可能沒有被完全接收,數(shù)據(jù)的精度可能不足,選項C,D錯誤。%f主要針對float類型的變量的輸入。%d主要針對整型數(shù)據(jù)的輸入,%c主要針對字符類型的數(shù)據(jù)的輸入,選項A錯誤。故答案為B選項。

66.B本題考查不同運算符的使用。

題目中給出的程序要求將變量a、b的值輸出,其中a=d*10%8,這里考查乘法運算符“*”和求余運算符“%”的優(yōu)先級與結(jié)合方式。“*”與“%”的優(yōu)先級相同,結(jié)合方式為從左往右,即先計算d*10,最后得到的結(jié)果為a=2。變量b=a&&(-1),“&&”運算符為邏輯與運算符,只有該運算符的左右兩邊都為真時,該邏輯運算才為真。運算符左邊a=2,右邊為(-1),都不為0,故該邏輯運算的值為1,即b=1。輸出的結(jié)果為2,1。

67.D本題考查對軟件生命周期的理解,軟件生命周期整體上可分為定義階段、開發(fā)階段和維護階段。其中定義階段包括可行性研究與計劃制訂和需求分析;開發(fā)階段包括概要設(shè)計、詳細設(shè)計、開發(fā)和測試;維護階段是一個單獨階段,不包含在開發(fā)階段內(nèi),它是所花費用最多的一個階段。

68.B本題考查指針函數(shù)。其定義的基本格式為:類型說明符(*函數(shù)名)。“類型說明符”表示返回的指針值指向的數(shù)據(jù)類型。

69.A解析:模式設(shè)計和內(nèi)模式設(shè)計是概念設(shè)計的兩種方法。物理設(shè)計是根據(jù)特定的計算機系統(tǒng),對數(shù)據(jù)的存儲結(jié)構(gòu)和存取方法進行設(shè)計,從而實現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計和行為特性-設(shè)計是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個特性。結(jié)構(gòu)特性的設(shè)計,設(shè)計各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計,改變實體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。

70.D

71.B本題考查實參與形參調(diào)用,從實參傳遞到形參時,只是數(shù)值的傳遞,調(diào)用函數(shù)中值的改變不會影響主函數(shù)中的值,因此原樣輸出。

72.D根據(jù)時間復(fù)雜度和空間復(fù)雜度的定義可知,算法的時間復(fù)雜度與空間復(fù)雜度并不相關(guān)。數(shù)據(jù)的邏輯結(jié)構(gòu)就是數(shù)據(jù)元素之間的邏輯關(guān)系,它是從邏輯上描述數(shù)據(jù)元素之間關(guān)系的,是獨立于計算機的;數(shù)據(jù)的存儲結(jié)構(gòu)是研究數(shù)據(jù)元素和數(shù)據(jù)元素之間的關(guān)系如何在計算機中表示的,它們并非一一對應(yīng)。算法的執(zhí)行效率不僅與問題的規(guī)模有關(guān),還與數(shù)據(jù)的存儲結(jié)構(gòu)有關(guān)。

73.A解析:結(jié)構(gòu)化程序的概念首先是從以往編程過程中無限制地使用轉(zhuǎn)移語句而提出的。轉(zhuǎn)移語句可以使程序的控制流程強制性地轉(zhuǎn)向程序的任一處,在傳統(tǒng)流程圖中,就是用上節(jié)我們提到的“很隨意”的流程線來描述這種轉(zhuǎn)移功能。如果一個程序中多處出現(xiàn)這種轉(zhuǎn)移情況,將會導(dǎo)致程序流程無序可尋,程序結(jié)構(gòu)雜亂無章,這樣的程序是令人難以理解和接受的,并且容易出錯。尤其是在實際軟件產(chǎn)品的開發(fā)中,更多的追求軟件的可讀性和可修改性,象這種結(jié)構(gòu)和風(fēng)格的程序是不允許出現(xiàn)的。

74.C

75.B指針是用來存放地址的變量,用(類型名+指針變量名)的形式定義。賦值時應(yīng)將某個變量地址即8Ⅸ賦給指針變量,所以選擇B。

76.C在本題程序中,首先定義了一個fun函數(shù),函數(shù)帶有兩個指針變量的形參,在程序體中,定義一個整型變量m用來保存計算的結(jié)果,然后執(zhí)行第一條運算語句,并將運算結(jié)果保存至變量m,然后執(zhí)行第二條運算語句,最后輸出程序m的值。

在主函數(shù)中,首先定義兩個整型變量a和b,并分別賦值為5和6,定義兩個指針變量x和y,分別指向變量a和b。然后調(diào)用函數(shù)fun,調(diào)用函數(shù)傳遞的參數(shù)為x和y,因此,執(zhí)行m=(*a+*b)*(*a+*b)=(5+6)*(5+6)=121,然后執(zhí)行m+=(*a-*b)*(*a-*b)等價于m=m+(-1)*(-1)=121+1=122。因此,本題程序的輸出結(jié)果為122,答案選C。

77.Csum+=i等價于sun+i,在本題中sum沒有賦初值,而題中只輸出sum的值,因此整個結(jié)果為不確定值。

78.B存放字符串的字符數(shù)組的名字就是這個字符串的首地址。本題的功能是對字符串”tomeetme”進行選擇式輸出,從第一個字母開始,每輸出一個字符即跳過一個。

79.D

80.Afor循環(huán)語句嵌套一個switch語句;i=1,i%5=1,執(zhí)行case1,遇到break退出switch語句,i=2,i%5=2,執(zhí)行case2,i=3,i%5=3,執(zhí)行default語句,然后執(zhí)行case2……

81.

82.\n\tvoidfun(char*a)

\n{

\ninti,j=0;

\nfor(i=0;a[i]!=\0;i++)

\nif(a[i]!=*)

\na[j++]=a[i];//若不是要刪除的字符*則保留

\na[j]=\0;//最后加上字符串結(jié)束符\0

\n}

\n【解析】此題是刪除字符串中的星號。思路是通過for循環(huán)完成對字符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號前的位置,“if(a[i]!=*)”“a[i++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。\n2022-2023年江蘇省南通市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.有下列程序:

fun(intx)

{intp;

if(x==0‖x==1)return(3);

p=x-fun(x-2);

returnp;

}

main()

{printf("%d\n",fun(7));}

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

A.7B.3C.2D.0

3.設(shè)有說明:charw;intx;f1oaty;doublez;則表達式w*x+z-y值的數(shù)據(jù)類型為()。

A.floatB.charC.intD.double

4.第

4

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

A.ABCEDB.DCBEAC.DBCEAD.CDABE

5.下列變量聲明合法的是()。A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=0xfdaL;

D.float2aaa=1e-3;

6.在10000個int型變量中找出最大的100個,使用下列排序算法中哪一種用時最快()

A.冒泡排序B.快速排序C.歸并排序D.堆排序

7.依次插入序列(50,72,43,85,75,20,34,45,65,30)后建立的二叉搜索樹中,查找元素30要進行()次元素間的比較。

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

8.以下選項中表示空函數(shù)的是()。

A.intfun(){return0;}

B.intfun();

C.intfun(){}

D.intfun(inta,intB){return1;}

9.

10.若有語句“typedefstructS{intg;charh;}T;”,則下列敘述中正確的是()。

A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

11.以下程序運行后,輸出結(jié)果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}

A.1B.7C.9D.11

12.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一特定的圖符構(gòu)成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是______。

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

13.以下不能輸出字符A的語句是(注:字符A的ASCII值為65,字符a的ASCII值為97)()。

A.printf(“%c\n”,‘a(chǎn)’-32);

B.printf(“%d\n”,‘A’);

C.printf(“%c\n”,65);

D.printf(“%c\n”,‘B’-1);

14.s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項中正確的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

15.在一個長度為n(n>1)的單鏈表上,設(shè)有頭和尾兩個指針,執(zhí)行()操作與鏈表的長度有關(guān)。

A.刪除單鏈表中的第一個元素

B.刪除單鏈表中的最后一個元素

C.在單鏈表第一個元素前插入一個新元素

D.在單鏈表最后一個元素后插入一個新元素

16.

17.有以下程序

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

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

}

intf(intx)

{returnx*2;}

程序運行后的輸出結(jié)果是()。A.1B.2C.4D.8

18.在深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為()。

A.31B.32C.16D.15

19.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結(jié)果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

20.有以下程序:

程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果()。

A.不等于10的整數(shù)

B.大于3且不等于l0的整數(shù)

C.大于3或等于l0的整數(shù)

D.小于3的整數(shù)

二、2.填空題(20題)21.數(shù)據(jù)庫理論中,數(shù)據(jù)的獨立性一般可分為物理獨立性和______。

22.已定義charch=′$′;inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為【】。

23.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

24.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序運行時,如果從鍵盤輸入:A,B,<CR>,則輸出結(jié)果為______。

25.以下函數(shù)的功能是求x的y次方,請?zhí)羁铡?/p>

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

returnz;

}

26.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達【】。

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

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

28.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及列數(shù)據(jù)的操作運算。

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

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

30.若fp已正確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:

fp=fopen(【】);。

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

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptrl=a,*ptr2=b;

intk;

for(k=0;k<7;k++)

if(*(ptrl+k)==*(ptr2+k))

printf("%c",*(ptrl+k));}

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

#include<stdio.h>

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

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

}

33.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

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

sstrcpy(str1,str2);

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

}

34.在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數(shù)為【】。

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

#include<stdio.h>

int(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

36.數(shù)據(jù)的獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,這稱為______。

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

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

38.在printf格式字符中,以帶符號的十進制形式輸出整數(shù)的格式字符是【】;以八進制無符號形式輸出整數(shù)的格式字符是【】;以十六進制無符號形式輸出整數(shù)的格式字符是【】;以十進制無符號形式輸出整數(shù)的格式字符是【】。

39.以下函數(shù)的功能是計算請?zhí)羁铡?/p>

doublefun(intn)

{doubles=0.0,fac=1.0;inti;

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

{fac=fac【】;

s=s+fac;

}

returns;

}

40.用以下程序計算1到100的整數(shù)的累加和。請?zhí)羁铡?/p>

main()

{inti,sum=【】;

i=1;

for(【】)

{sum+=j(luò)

i++;

}

printf("sum=%d\n",【】);

}

三、1.選擇題(20題)41.若有定義:inta[2][3];,以下選項中對a數(shù)組元素正確引用的是

A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]

42.執(zhí)行以下程序后,a,b的值分別為main(){ina,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}

A.-1,5B.1,6C.0,7D.4,10

43.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

44.下列程序的輸出結(jié)果是()。main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}

A.42B.45C.56D.60

45.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

46.以下不能定義為用戶標識符的是()。

A.scanfB.VoidC.3comD.int

47.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運行后的輸出結(jié)果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

48.設(shè)變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:□代表空格字符)

A.10□X□20□Y<回車>

B.10□X20□Y<回車>

C.10□X<回車>20□Y<回車>

D.10X<回車>20Y<回車>

49.有以下程序int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b:8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}執(zhí)行后輸出結(jié)果是

A.7,8,8B.7,8,7C.8,7,7D.8,7,8

50.下面關(guān)于完全二叉樹的敘述中,錯誤的是______。

A.除了最后一層外,每_層上的結(jié)點數(shù)均達到最大值

B.可能缺少若干個左右葉子結(jié)點

C.完全二叉樹一般不是滿二叉樹

D.具有結(jié)點的完全二叉樹的深度為[log2n]+1

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

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

52.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=1,b=3;if((++a<0)&&!(b--<=0))printf("%d,%d\n",a,B;elseprintf("%d,%d\n",b,A);}

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

53.有以下程序#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);}程序的運行結(jié)果是

A.12300B.123C.1D.321

54.以下程序的輸出結(jié)果是()#include<stdio.h>main(){structstru{inta,b:charc[6];}:printf("%d\n",sizeof(stru)),}

A.2B.4C.8D.10

55.若執(zhí)行下述程序時,從鍵盤輸入的數(shù)據(jù)是3和6,則程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){intx,y,z;scanf("%d%d",&X,&y);z=y+x;if(x<y)z=y+x;printf("%d",z);}

A.9B.3C.0D.有語法錯誤

56.main()

{inta=4,b=5,c;

ifa<B)

{c=a*b;printf("%d,%d,%d\n",b,a,c);}

else

{c=b/a;printf("%d,%d,%d\n",b,a,c);}

}

A.4,5,12B.20C.5,4,20D.12

57.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是

A.data的每個成員起始地址都相同

B.變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等

C.程序段:data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000

D.data可以作為函數(shù)的實參

58.有下列程序:

main()

{intx=0;

inty=0;

while(x<7&&++y)

{y--;

printf(:%d,%d",y,x);

}

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

A.0,7B.7,7C.0,6D.1,6

59.有以下程序:

#include<stdio.h>

#include<stdlib.h>

structNODE

{intnum;

structNODE*next;

};

main()

{struetNODE*p,*q,*r;

intsum=0;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)malloc(sizeof(struetNODE));

r=(structNODE*)malloc(sizeof(structNODE));

P->num=1;q->num=2;r->num=3;

p->next=q;q->next=r;r->next=NULL;

sum+=q->next->num;sum+=P->num;

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

}

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

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

60.有以下程序:voidfun1(char*p){char*q;q=p;while(*q!='\0'){(*q)++;q++;}}main(){chara[]={"Program"),*p;p=&a[3];fun1(p)printf("%s\n",A);}程序執(zhí)行后的輸出結(jié)果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

四、選擇題(20題)61.假定已建立以下鏈表結(jié)構(gòu),且指針p和q已指向如下圖所示的結(jié)點:

則以下選項中,可將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句組是

A.(*p).next=(*q).next;free(p);B.p=q->next;free(q);

C.p=q;free(q);D.p->next=q->next;free(q);

62.有以下程序

63.有如下嵌套的if語句:

以下選項中與上述if語句等價的語句是()。

A.

B.

C.

D.

64.有以下程序:

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

A.let=4B.m=2C.m=6D.m=5

65.若有定義:charc;doubled;程序運行時輸入:12<;回車>;,能把字符1輸入給變量c、數(shù)值2輸入給變量d的輸入語句是()。

66.有以下程序

main()

{inta,b,d=5;

a=d*10%8;b=a&&(-1);

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

}

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

A.10,1B.2,1

C.10,0D.2,0

67.軟件生命周期中,花費最多的階段是()。

A.詳細設(shè)計B.軟件編碼C.軟件測試D.軟件維護

68.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

69.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()

A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計

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

charstr[15]=”hello!”;

printf(“%d\n”,strlen(str));

A.15B.14C.7D.6

71.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}輸出的結(jié)果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

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

A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)是一一對應(yīng)的

B.算法的時間復(fù)雜度與空間復(fù)雜度一定相關(guān)

C.算法的效率只與問題的規(guī)模有關(guān),而與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

D.算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量

73.有三個關(guān)系R、S和T如下:

則由關(guān)系R和S得到關(guān)系T的操作是()。

A.自然連接B.交C.投影D.并

74.

75.設(shè)已有定義:floatx;,則以下對指針變量P進行定義且賦初值的語句中正確的是()。

A.int*p=(float)x;

B.float*p=&x;

C.floatp=&x;

D.float=1024;

76.有如下程序

#include"stdio

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論