




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2022-2023年江蘇省南通市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(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;則表達(dá)式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要進(jìn)行()次元素間的比較。
A.4B.5C.7D.10
8.以下選項(xiàng)中表示空函數(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.以下程序運(yùn)行后,輸出結(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)成。下列圖符名標(biāo)識的圖符不屬于數(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已正確定義并分別指向兩個字符串。若要求:當(dāng)s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項(xiàng)中正確的是()。
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;}
程序運(yùn)行后的輸出結(jié)果是()。A.1B.2C.4D.8
18.在深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個數(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.有以下程序:
程序運(yùn)行時,輸入的值在哪個范圍才會有輸出結(jié)果()。
A.不等于10的整數(shù)
B.大于3且不等于l0的整數(shù)
C.大于3或等于l0的整數(shù)
D.小于3的整數(shù)
二、2.填空題(20題)21.數(shù)據(jù)庫理論中,數(shù)據(jù)的獨(dú)立性一般可分為物理獨(dú)立性和______。
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);
}
程序運(yùn)行時,如果從鍵盤輸入: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)系表達(dá)【】。
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ù)的操作運(yùn)算。
29.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
30.若fp已正確定義為一個文件指針,d1.dat為二進(jìn)制文件,請?zhí)羁眨员銥椤白x”而打開此文件:
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ù)實(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的有序線性表中進(jì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ù)的獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(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格式字符中,以帶符號的十進(jìn)制形式輸出整數(shù)的格式字符是【】;以八進(jìn)制無符號形式輸出整數(shù)的格式字符是【】;以十六進(jìn)制無符號形式輸出整數(shù)的格式字符是【】;以十進(jìn)制無符號形式輸出整數(shù)的格式字符是【】。
39.以下函數(shù)的功能是計(jì)算請?zhí)羁铡?/p>
doublefun(intn)
{doubles=0.0,fac=1.0;inti;
for(i=1;i<=n;i++)
{fac=fac【】;
s=s+fac;
}
returns;
}
40.用以下程序計(jì)算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];,以下選項(xiàng)中對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é)點(diǎn)訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
46.以下不能定義為用戶標(biāo)識符的是()。
A.scanfB.VoidC.3comD.int
47.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運(yùn)行后的輸出結(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é)點(diǎn)數(shù)均達(dá)到最大值
B.可能缺少若干個左右葉子結(jié)點(diǎn)
C.完全二叉樹一般不是滿二叉樹
D.具有結(jié)點(diǎn)的完全二叉樹的深度為[log2n]+1
51.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實(shí)體與聯(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);}程序的運(yù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ù)的實(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é)點(diǎn):
則以下選項(xiàng)中,可將q所指結(jié)點(diǎn)從鏈表中刪除并釋放該結(jié)點(diǎn)的語句組是
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語句:
以下選項(xiàng)中與上述if語句等價(jià)的語句是()。
A.
B.
C.
D.
64.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.let=4B.m=2C.m=6D.m=5
65.若有定義:charc;doubled;程序運(yùn)行時輸入: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);
}
程序運(yùn)行后的輸出結(jié)果是
A.10,1B.2,1
C.10,0D.2,0
67.軟件生命周期中,花費(fèi)最多的階段是()。
A.詳細(xì)設(shè)計(jì)B.軟件編碼C.軟件測試D.軟件維護(hù)
68.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。
A.int**q;B.int(*q);C.int*q;D.int*q;
69.數(shù)據(jù)庫設(shè)計(jì)包括兩個方面的設(shè)計(jì)內(nèi)容,它們是()
A.概念設(shè)計(jì)和邏輯設(shè)計(jì)B.模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)C.內(nèi)模式設(shè)計(jì)和物理設(shè)計(jì)D.結(jié)構(gòu)特性設(shè)計(jì)和行為特性設(shè)計(jì)
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í)行算法所需要的計(jì)算工作量
73.有三個關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是()。
A.自然連接B.交C.投影D.并
74.
75.設(shè)已有定義:floatx;,則以下對指針變量P進(jìn)行定義且賦初值的語句中正確的是()。
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.以下程序運(yùn)行后的輸出結(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.寫出下列程序的運(yùn)行結(jié)果。
main
{intn;
For(n=3;n<=10;n++)
{if(n%6==0)break;Printf(“%d”,n);}}
六、程序設(shè)計(jì)題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dā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解析:因?yàn)樵诤瘮?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解析:棧操作原則上“后進(jìn)先出”,棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進(jìn)棧,B、C處于中間,A最早進(jìn)棧。所以出棧時一定是先出D,再出C,最后出A。
5.A本題需了解3個知識點(diǎn):①標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線;②do是C語言的一個關(guān)鍵字,不能再用做變量名和函數(shù)名;③c語言規(guī)定指數(shù)形式的實(shí)型數(shù)量e或E后面的指數(shù)必須是整數(shù)。
6.B
7.B
8.C空函數(shù)是函數(shù)體沒有執(zhí)行語句的函數(shù)。選項(xiàng)A、D不是空函數(shù);選項(xiàng)B是函數(shù)的聲明;只有選項(xiàng)C是空函數(shù)。故本題答案為C選項(xiàng)。
9.B
10.BT為結(jié)構(gòu)體類型名,可以用來定義結(jié)構(gòu)體變量。故本題答案為B選項(xiàng)。
11.C
12.A解析:數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。數(shù)據(jù)流圖中的主要圖形元素有:加工(轉(zhuǎn)換)、數(shù)據(jù)流、存儲文件(數(shù)據(jù)源)、源和潭。
13.BB選項(xiàng)輸出的格式為%d,即整型格式,所以輸出字符‘A’的ASCII值65,而不是字母A。因?yàn)榇髮懽帜副绕鋵?yīng)的小寫字母的ASCII值小32,所以A選項(xiàng)正確。字符‘A’的ASCII值是65,以%c格式輸出可以輸出字母A,所以C選項(xiàng)正確。因?yàn)樽址瓵’的ASCII值比字符‘B’的小1,所以D選項(xiàng)正確。故本題答案為B選項(xiàng)。
14.D在C語言中,不能直接比較兩個字符串的大小,必須用特定的函數(shù)來完成,選項(xiàng)A錯誤;選項(xiàng)B不管大于還是小于都執(zhí)行S,不符合題意;選項(xiàng)C正好相反,當(dāng)s2大于s1時,執(zhí)行語句S,可知選項(xiàng)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é)點(diǎn)。對于滿二叉樹,每一層上的結(jié)點(diǎn)數(shù)都達(dá)到最大值,即在滿二叉樹的第k層上有2k-1個結(jié)點(diǎn)。所以,在深度為5的滿二叉樹中,所有葉子結(jié)點(diǎn)在第5層上,即其結(jié)點(diǎn)數(shù)為2(k-1)=2(5-1)=16。
19.D
20.Bif-else控制結(jié)構(gòu)中,else總是與最近的未配對的if匹配。本題的執(zhí)行過程為:如果輸入整數(shù)小于3則不進(jìn)行任何操作,否則判斷該整數(shù)是否不等于l0,若為真則進(jìn)行輸出。因此程序輸出的數(shù)據(jù)為大于3且不等于l0的整數(shù)。
21.邏輯獨(dú)立性邏輯獨(dú)立性解析:數(shù)據(jù)的獨(dú)立性一般可分為物理獨(dú)立性和邏輯獨(dú)立性。
22.11解析:在執(zhí)行邏輯表達(dá)式'j=!ch&&i++'時,首先判斷j=!ch的值,因?yàn)?ch=\'$\''不為0,所以'j=!ch=0',編譯系統(tǒng)便不再計(jì)算表達(dá)式'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解析:因?yàn)閏是字符類型變量,它只能接收一個字符,所以c=A,字符型變量在參與算術(shù)運(yùn)算的時候是用其相應(yīng)的ASCII碼參與運(yùn)算的,這樣++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的當(dāng)前值和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的當(dāng)前值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ù)的操作運(yùn)算。
29.98768769876\r\n876解析:指針是一種數(shù)據(jù)類型,這種數(shù)據(jù)類型的變量用來存放內(nèi)存中分配的存儲單元的首地址。指針的定義:
類型說明符*指針變量名;
30.d1.dat"rb"d1.dat,'rb'解析:打開文件的函數(shù)為fopen('文件名','mode'),其中'mode'表示文件的打開方式。如果打開的是二進(jìn)制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已存在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件。'a'為追加方式打開。若文件存在時,將打開這個文件并且在文件的末尾進(jìn)行追加。當(dāng)文件不存在,將創(chuàng)建新文件。'r+'打開一個已存在文件用于更新(可讀可寫)。\'w+'創(chuàng)建一個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當(dāng)文件不存在時,創(chuàng)建新文件,并在文件末尾進(jìn)行追加(可讀可寫)。根據(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āng)于d=(5>4>3);其計(jì)算過程為:先算5>4,結(jié)果為真,得1,即d=(1>3);然后計(jì)算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解析:因?yàn)樵谡{(diào)用子函數(shù)時進(jìn)行的是數(shù)值傳遞,調(diào)用于函數(shù)并不能改變實(shí)參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。
36.物理獨(dú)立性物理獨(dú)立性解析:數(shù)據(jù)的獨(dú)立性是指數(shù)據(jù)和應(yīng)用程序相互獨(dú)立,分為物理獨(dú)立性和邏輯獨(dú)立性。其中物理獨(dú)立性是指數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式)改變時,不需要修改應(yīng)用程序。而邏輯獨(dú)立性是指當(dā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的作用是存放和以及要加到的那一項(xiàng)的值。通過分析可知,第i項(xiàng)的值可以由第i-1項(xiàng)的值得到,即第i項(xiàng)是第i-1項(xiàng)的值除以i??梢姍M線處應(yīng)添“/i”或與它等價(jià)的表達(dá)式。
40.0i<=100;sum
41.D解析:C語言中數(shù)組下標(biāo)是從0開始的,所以二維數(shù)組a[2][3]的第一維下標(biāo)取值為0、1;第二維的下標(biāo)取值為0、1、2,因而選項(xiàng)A)、B)、C)都是錯誤的,選項(xiàng)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;等價(jià)于a=(p1==&m);將p1是否等于地址m的值(0)賦給變量a,b=(*p1)/(*p2)+7;該句的含義是將后面表達(dá)式的的值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ù)組的下標(biāo)默認(rèn)為0,因此數(shù)組p的下標(biāo)范圍為:0~7。程序循環(huán)過程為:第1次循環(huán)i=0,執(zhí)行循環(huán),并且i自加,得i=1,因此p[i]為p[1]=12,12%2=0,不執(zhí)行后面的語句;接著進(jìn)行第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é)點(diǎn);③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點(diǎn);②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點(diǎn)。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點(diǎn)。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點(diǎn),e、c、h、f是右子樹的結(jié)點(diǎn)。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點(diǎn),b右邊子樹無結(jié)點(diǎn)。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點(diǎn)。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點(diǎn)位置。所以可知后序遍歷的結(jié)果是D。
46.D解析:標(biāo)識符是C語言中用來表示變量名、數(shù)組名、函數(shù)名、指針名、結(jié)構(gòu)名、聯(lián)合名、枚舉常數(shù)名、用戶定義的數(shù)據(jù)類型名、語句標(biāo)號等用途的字符序列。標(biāo)識符由1~32個字符組成,第一個字符必須是字母或下劃線,后面的字符可以是字母、數(shù)字或下劃線。標(biāo)識符不能與C關(guān)鍵字相同,并區(qū)分大小寫。選項(xiàng)D)錯誤,因?yàn)閕nt是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個選項(xiàng)中選項(xiàng)D符合題意。
48.D解析:本題中,scanf函數(shù)的格式控制沒有空格,所以,對于選項(xiàng)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é)點(diǎn)都有兩個子結(jié)點(diǎn)的二叉樹。完全二叉樹指除最后一層外,每一層上的結(jié)點(diǎn)數(shù)均達(dá)到最大值,在最后一層上只缺少右邊的若干子結(jié)點(diǎn)(葉子結(jié)點(diǎn))的二叉樹。
51.B解析:關(guān)系數(shù)據(jù)庫邏輯設(shè)計(jì)的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實(shí)體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實(shí)體集也可以轉(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)系表達(dá)式的值為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解析:選項(xiàng)A),共用體的每個成員的起始地址都相同;選項(xiàng)B),共用體變量所占的內(nèi)存長度等于最長的成員的長度;選項(xiàng)C)因?yàn)槊總€成員的起始地址相同,所以整型數(shù)5以浮點(diǎn)型輸出時為5.000000;選項(xiàng)D)C語言規(guī)定,不能把共用體變量作為函數(shù)的參數(shù)。
58.A解析:本題考查while循環(huán)。y的值在while循環(huán)的控制表達(dá)式中加1,在循環(huán)體內(nèi)減1,所以總的y值不變,且控制條件++y永遠(yuǎn)非零。當(dāng)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),當(dāng)q所指內(nèi)容不是字符串結(jié)束標(biāo)志'\\0\'時,讓q所指內(nèi)容增1,然后將指針q增1指向下一個位置。所以函數(shù)fun1()實(shí)現(xiàn)的功能是:將傳入字符串的所有字符自增1。主函數(shù),指針p在被傳入fun1()函數(shù)之前,初始化指向的是寧符數(shù)組a的第4個元素\'g\',所以最終輸出的結(jié)果應(yīng)該是Prohsbn。故應(yīng)該選擇A。
61.D題目中有兩個分別指向結(jié)點(diǎn)的指針p和q,其中p->next=q,q->next->data=C。要將q結(jié)點(diǎn)從鏈表中刪除,只要將指針p所指結(jié)點(diǎn)的next域指向q指針?biāo)附Y(jié)點(diǎn)的下一個結(jié)點(diǎn),即令p->next=q->next,也可以表示為(*p).next=(*q).next。操作完成后,便將q指針?biāo)附Y(jié)點(diǎn)從鏈表中刪除,隨后將該結(jié)點(diǎn)釋放即可。
62.A外層循環(huán)i,值分別為l23,內(nèi)層循環(huán)j分別為l23、23和3,所以答案為A)。
63.C嵌套的if語句功能是將k賦值為a、b、c中的最小值,選項(xiàng)A)中沒有比較a、c的大小,選項(xiàng)B)中語句”((b<c)?a:b):((b>c)?b:c)“錯誤,選項(xiàng)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ù)的精度可能不足,選項(xiàng)C,D錯誤。%f主要針對float類型的變量的輸入。%d主要針對整型數(shù)據(jù)的輸入,%c主要針對字符類型的數(shù)據(jù)的輸入,選項(xiàng)A錯誤。故答案為B選項(xiàng)。
66.B本題考查不同運(yùn)算符的使用。
題目中給出的程序要求將變量a、b的值輸出,其中a=d*10%8,這里考查乘法運(yùn)算符“*”和求余運(yùn)算符“%”的優(yōu)先級與結(jié)合方式?!?”與“%”的優(yōu)先級相同,結(jié)合方式為從左往右,即先計(jì)算d*10,最后得到的結(jié)果為a=2。變量b=a&&(-1),“&&”運(yùn)算符為邏輯與運(yùn)算符,只有該運(yùn)算符的左右兩邊都為真時,該邏輯運(yùn)算才為真。運(yùn)算符左邊a=2,右邊為(-1),都不為0,故該邏輯運(yùn)算的值為1,即b=1。輸出的結(jié)果為2,1。
67.D本題考查對軟件生命周期的理解,軟件生命周期整體上可分為定義階段、開發(fā)階段和維護(hù)階段。其中定義階段包括可行性研究與計(jì)劃制訂和需求分析;開發(fā)階段包括概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、開發(fā)和測試;維護(hù)階段是一個單獨(dú)階段,不包含在開發(fā)階段內(nèi),它是所花費(fèi)用最多的一個階段。
68.B本題考查指針函數(shù)。其定義的基本格式為:類型說明符(*函數(shù)名)。“類型說明符”表示返回的指針值指向的數(shù)據(jù)類型。
69.A解析:模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)是概念設(shè)計(jì)的兩種方法。物理設(shè)計(jì)是根據(jù)特定的計(jì)算機(jī)系統(tǒng),對數(shù)據(jù)的存儲結(jié)構(gòu)和存取方法進(jìn)行設(shè)計(jì),從而實(shí)現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計(jì)和行為特性-設(shè)計(jì)是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個特性。結(jié)構(gòu)特性的設(shè)計(jì),設(shè)計(jì)各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計(jì),改變實(shí)體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。
70.D
71.B本題考查實(shí)參與形參調(diào)用,從實(shí)參傳遞到形參時,只是數(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)系的,是獨(dú)立于計(jì)算機(jī)的;數(shù)據(jù)的存儲結(jié)構(gòu)是研究數(shù)據(jù)元素和數(shù)據(jù)元素之間的關(guān)系如何在計(jì)算機(jī)中表示的,它們并非一一對應(yīng)。算法的執(zhí)行效率不僅與問題的規(guī)模有關(guān),還與數(shù)據(jù)的存儲結(jié)構(gòu)有關(guān)。
73.A解析:結(jié)構(gòu)化程序的概念首先是從以往編程過程中無限制地使用轉(zhuǎn)移語句而提出的。轉(zhuǎn)移語句可以使程序的控制流程強(qiáng)制性地轉(zhuǎn)向程序的任一處,在傳統(tǒng)流程圖中,就是用上節(jié)我們提到的“很隨意”的流程線來描述這種轉(zhuǎn)移功能。如果一個程序中多處出現(xiàn)這種轉(zhuǎn)移情況,將會導(dǎo)致程序流程無序可尋,程序結(jié)構(gòu)雜亂無章,這樣的程序是令人難以理解和接受的,并且容易出錯。尤其是在實(shí)際軟件產(chǎn)品的開發(fā)中,更多的追求軟件的可讀性和可修改性,象這種結(jié)構(gòu)和風(fēng)格的程序是不允許出現(xiàn)的。
74.C
75.B指針是用來存放地址的變量,用(類型名+指針變量名)的形式定義。賦值時應(yīng)將某個變量地址即8Ⅸ賦給指針變量,所以選擇B。
76.C在本題程序中,首先定義了一個fun函數(shù),函數(shù)帶有兩個指針變量的形參,在程序體中,定義一個整型變量m用來保存計(jì)算的結(jié)果,然后執(zhí)行第一條運(yùn)算語句,并將運(yùn)算結(jié)果保存至變量m,然后執(zhí)行第二條運(yùn)算語句,最后輸出程序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)等價(jià)于m=m+(-1)*(-1)=121+1=122。因此,本題程序的輸出結(jié)果為122,答案選C。
77.Csum+=i等價(jià)于sun+i,在本題中sum沒有賦初值,而題中只輸出sum的值,因此整個結(jié)果為不確定值。
78.B存放字符串的字符數(shù)組的名字就是這個字符串的首地址。本題的功能是對字符串”tomeetme”進(jìn)行選擇式輸出,從第一個字母開始,每輸出一個字符即跳過一個。
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年江蘇省南通市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(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;則表達(dá)式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要進(jìn)行()次元素間的比較。
A.4B.5C.7D.10
8.以下選項(xiàng)中表示空函數(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.以下程序運(yùn)行后,輸出結(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)成。下列圖符名標(biāo)識的圖符不屬于數(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已正確定義并分別指向兩個字符串。若要求:當(dāng)s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項(xiàng)中正確的是()。
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;}
程序運(yùn)行后的輸出結(jié)果是()。A.1B.2C.4D.8
18.在深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個數(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.有以下程序:
程序運(yùn)行時,輸入的值在哪個范圍才會有輸出結(jié)果()。
A.不等于10的整數(shù)
B.大于3且不等于l0的整數(shù)
C.大于3或等于l0的整數(shù)
D.小于3的整數(shù)
二、2.填空題(20題)21.數(shù)據(jù)庫理論中,數(shù)據(jù)的獨(dú)立性一般可分為物理獨(dú)立性和______。
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);
}
程序運(yùn)行時,如果從鍵盤輸入: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)系表達(dá)【】。
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ù)的操作運(yùn)算。
29.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{chars[]="9876",*p;
for(p=s;p<s+2;p++)printf("%s\n",p);
}
30.若fp已正確定義為一個文件指針,d1.dat為二進(jìn)制文件,請?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ù)實(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的有序線性表中進(jì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ù)的獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(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格式字符中,以帶符號的十進(jìn)制形式輸出整數(shù)的格式字符是【】;以八進(jìn)制無符號形式輸出整數(shù)的格式字符是【】;以十六進(jìn)制無符號形式輸出整數(shù)的格式字符是【】;以十進(jìn)制無符號形式輸出整數(shù)的格式字符是【】。
39.以下函數(shù)的功能是計(jì)算請?zhí)羁铡?/p>
doublefun(intn)
{doubles=0.0,fac=1.0;inti;
for(i=1;i<=n;i++)
{fac=fac【】;
s=s+fac;
}
returns;
}
40.用以下程序計(jì)算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];,以下選項(xiàng)中對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é)點(diǎn)訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
46.以下不能定義為用戶標(biāo)識符的是()。
A.scanfB.VoidC.3comD.int
47.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運(yùn)行后的輸出結(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é)點(diǎn)數(shù)均達(dá)到最大值
B.可能缺少若干個左右葉子結(jié)點(diǎn)
C.完全二叉樹一般不是滿二叉樹
D.具有結(jié)點(diǎn)的完全二叉樹的深度為[log2n]+1
51.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實(shí)體與聯(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);}程序的運(yù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ù)的實(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é)點(diǎn):
則以下選項(xiàng)中,可將q所指結(jié)點(diǎn)從鏈表中刪除并釋放該結(jié)點(diǎn)的語句組是
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語句:
以下選項(xiàng)中與上述if語句等價(jià)的語句是()。
A.
B.
C.
D.
64.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.let=4B.m=2C.m=6D.m=5
65.若有定義:charc;doubled;程序運(yùn)行時輸入: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);
}
程序運(yùn)行后的輸出結(jié)果是
A.10,1B.2,1
C.10,0D.2,0
67.軟件生命周期中,花費(fèi)最多的階段是()。
A.詳細(xì)設(shè)計(jì)B.軟件編碼C.軟件測試D.軟件維護(hù)
68.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。
A.int**q;B.int(*q);C.int*q;D.int*q;
69.數(shù)據(jù)庫設(shè)計(jì)包括兩個方面的設(shè)計(jì)內(nèi)容,它們是()
A.概念設(shè)計(jì)和邏輯設(shè)計(jì)B.模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)C.內(nèi)模式設(shè)計(jì)和物理設(shè)計(jì)D.結(jié)構(gòu)特性設(shè)計(jì)和行為特性設(shè)計(jì)
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í)行算法所需要的計(jì)算工作量
73.有三個關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是()。
A.自然連接B.交C.投影D.并
74.
75.設(shè)已有定義:floatx;,則以下對指針變量P進(jìn)行定義且賦初值的語句中正確的是()。
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 60670-1:2024 RLV EN Boxes and enclosures for electrical accessories for household and similar fixed electrical installations - Part 1: General requirements
- 2025年度電商渠道拓展與營銷合作合同范本
- 2025年度個人住房按揭貸款合同范本-@-1
- 2025年度肉羊屠宰加工企業(yè)戰(zhàn)略合作框架合同4篇
- 班級歷史文化月活動計(jì)劃
- 2025年理發(fā)、美容服務(wù)合作協(xié)議書
- 以消費(fèi)者為中心的品牌策略計(jì)劃
- 幼兒園園所文化建設(shè)的教研活動計(jì)劃
- 推動護(hù)理??瓢l(fā)展與提升的策略計(jì)劃
- 教學(xué)目標(biāo)達(dá)成情況分析計(jì)劃
- 飛機(jī)儀電與飛控系統(tǒng)原理智慧樹知到期末考試答案章節(jié)答案2024年中國人民解放軍海軍航空大學(xué)
- 數(shù)據(jù)分析應(yīng)用項(xiàng)目化教程(Python) 課件 項(xiàng)目1 認(rèn)識數(shù)據(jù)分析
- DL-T-5759-2017配電系統(tǒng)電氣裝置安裝工程施工及驗(yàn)收規(guī)范
- JJG(交通) 192-2023 負(fù)壓篩析儀
- 城市更新模式探討
- 農(nóng)行網(wǎng)點(diǎn)負(fù)責(zé)人述職報(bào)告范本
- 常見軍事訓(xùn)練傷的康復(fù)流程
- SY∕T 7087-2016 石油天然氣工業(yè) 鉆井和采油設(shè)備 液氮泵送設(shè)備
- 1.1時代為我搭舞臺(課件)-【中職專用】中職思想政治《心理健康與職業(yè)生涯》(高教版2023·基礎(chǔ)模塊)
- 下肢靜脈曲張危險(xiǎn)因素
- 小學(xué)思政課活動實(shí)施方案
評論
0/150
提交評論