




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021-2022年廣東省汕頭市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.在瀏覽WWW時,如果連接到一個安全的站點,應(yīng)當以()開頭來書寫統(tǒng)一資源定位器。
A.shttp://B.http:s//C.http://D.https//
2.下列程序段的時間復(fù)雜度為()。A.O(n)B.O(n-1)C.O(n2)D.O(log2n)
3.有以下程序:#include<stdio.h>main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf(“%d\n”,c);}程序的運行結(jié)果是()。
A.1B.2C.3D.4
4.
5.如果要求一個線性表既能較快地查找,又能適應(yīng)動態(tài)變化的要求,可以采用下列哪一種查找方法()
A.分塊B.順序C.折半D.哈希
6.有以下程序:#include<stdio.h>main(){charc;for(;(c=getchar())!=‘#’;){if(c>=‘a(chǎn)’&&c<=‘z’)c=c-‘a(chǎn)’+‘A’;putchar(++c);}}執(zhí)行時輸入aBcDefG##并按<Enter>鍵,則輸出結(jié)果是()。
A.AbCdEFgB.ABCDEFGC.BCDEFGHD.bcdefgh
7.下列敘述中正確的是()。
A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)必定是一一對應(yīng)的
B.由于計算機存儲空間是向量式的存儲結(jié)構(gòu),因此,數(shù)據(jù)的存儲結(jié)構(gòu)一定是線性結(jié)構(gòu)
C.程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),因此,利用數(shù)組只能處理線性結(jié)構(gòu)
D.以上三種說法都不對
8.具有n個結(jié)點的連通圖至少有()條邊。
A.n-1B.nC.n(n-1)/2D.2n
9.定義學(xué)生選修課程的關(guān)系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其屬性分別為學(xué)號、姓名、課程號、課程名、成績、學(xué)分)則對主屬性部分依賴的是()。
A.C#→CnB.(S#,C#)→GC.(S#,C#)→S#D.(S#,C#)→C#
10.下列定義數(shù)組的語句中正確的是______。
A.#definesize10charstr1[size],str2[size+2];
B.charstr[];
C.intnum['10'];
D.intn=5;inta[n][n+2];
11.下列語句組中正確的是()。
A.char*s;s=“Olympic”;
B.chars[7];s=“Olympic”;
C.char*s;s={“Olympic”};
D.chars[7];s={“Olympic”};
12.設(shè)有如下類型說明語句:typedefstruct{intnum;struct{inty,m,d;}date;}PER;則以下定義結(jié)構(gòu)體數(shù)組并賦初值的語句中錯誤的是()。
A.PERst[2]={{1001},2008,8,1,{1002},2006,5,20};
B.PERst[2]={1001,{2008,8,1},1002,{2006,5,20}};
C.PERst[2]={{1001,2008,8,1},{1002,2006,5,20}};
D.PERst[2]={1001,2008,8,1,1002,2006,5,20};
13.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機的出現(xiàn)D.計算機的發(fā)展
14.假定已建立以下鏈表結(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);
15.有1000個無序的整數(shù),希望使用最快的方式找出前50個最大的,最佳的選擇是()
A.冒泡排序B.基數(shù)排序C.堆排序D.快速排序
16.下列程序的輸出結(jié)果是
#include"stdio.h"
#defineN3
#defineM3
voidfun(inta[M][N])
{printf("%d\n",*(a[1]+2));}
main()
{inta[M][N];
inti,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a[i][j]=i+j-(i-j);
fun(a);}A.A.3B.4C.5D.6
17.在下列排序算法中,在待排序的數(shù)據(jù)表已經(jīng)為有序時,花費時間反而最多的是()
A.希爾排序B.堆排序C.冒泡排序D.快速排序
18.下列排序方法中,()方法的比較次數(shù)與記錄的初始排列狀態(tài)無關(guān)。
A.直接插入排序B.冒泡排序C.快速排序D.直接選擇排序
19.
20.關(guān)系數(shù)據(jù)庫的數(shù)據(jù)及更新操作必須遵循()等完整性規(guī)則。
A.實體完整性和參照完整性
B.參照完整性和用戶定義的完整性
C.實體完整性和用戶定義的完整性
D.實體完整性、參照完整性和用戶定義的完整性
二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。
main()
{inta=5,b=4,c=3,d;
d=(a>b>C);
printf(“%d\n”,D);
}
22.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",【】);
for(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=【】;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
23.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許刪除的一端稱作()。
24.若用0至9之間不同的三個數(shù)構(gòu)成一個三位數(shù),下面程序?qū)⒔y(tǒng)計出共有多少種方法。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,j,k,count=0;
for(i=0;i<=9;i++)
for(j=0;i<=9;j++)
if(【】)continue;
elsefor(k=0;k<=9;k++)
if(【】)count++;
printf("%d",count);}
25.下面定義的結(jié)構(gòu)體類型包含3個成員,其中成員變量x用來存入整型數(shù)據(jù),成員變量y用來存入實型數(shù)據(jù),成員變量next是指向自身結(jié)構(gòu)體的指針。請將定義補充完整。
structstu
{intx;
【】
【】next;}
26.數(shù)據(jù)的物理結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的【】。
27.以下程序運行后的輸出結(jié)果是______。
#include<string.h>
voidfun(char*s,intp,intk)
{inti;
for(i=p;i<k-1;i++)s[i]=s[i+2];
}
main()
{chars[]="abcdefg";
fun(s,3,strlen(s));puts(s);
}
28.當數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu))改變時,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。
29.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁?。st=(char*)【】;
30.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。
31.下列程序的輸出結(jié)果是______。
main()
{inta=1,b=2,c=3,t=0;
if(a<B){t=a;a=b;b=t;}
if(a<C){t=a;a=c;c=t;}
printf("%d,%d,%d\n",a,b,C);
}
32.以下函數(shù)用來在w數(shù)組中插入x。n所指向的存儲單元中存放w數(shù)組中字符個數(shù)。數(shù)組w中的字符已按從小到大的順序排列,插入后數(shù)組w中的字符仍有序。請?zhí)羁铡?/p>
voidfun(char*w,charx,int*n)
{inti,p;
p=0;
w[*n]=x;
while(x>w[p])p++;
for(i=*n;i>p;i--)w[i]=【】;
w[p]=x;
++*n;}
33.以下程序的運行結(jié)果是______。
structexmp{charname[10];
intnumber;
};
structexmptest[3]={{"WangXi",1},{"QiYu",2},{"HuHua",3}};
main()
{printf("%c,%s\n",test[0].name[1],test[2].name+3);
}
34.若s是int型變量,且s=8,則s%3+(s+1)%3表達式的值為()。
35.數(shù)據(jù)庫是指按照一定的規(guī)則存儲在計算機中的【】的集合,它能被各種用戶共享。
36.下列程序的運行結(jié)果為【】。
voidaverage();
main()
{floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,99}};
average(*score,12);
}
voidaverage(p,n)
intn;
float*p;
{inti;
floatsum=0;
for(i=0;i<n;i++,p++)sum+=(*p);
printf("%.2f\n",sum/n);
}
37.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間。
st=(char*)【】;
38.以下程序的輸出結(jié)果是______。
main()
{char*p-"abcdefgh",*r;
long*q;
q=(long*)p;
q++;
r=[char*)q;
printf("%s\n",r);
}
39.以下程序的輸出結(jié)果是【】。
main()
{chars[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);}
40.在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數(shù)為【】。
三、1.選擇題(20題)41.已定義以下函數(shù):fun(char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}此函數(shù)的功能是()。
A.將P1所指字符串復(fù)制到p2所指內(nèi)存空間,
B.將p1所指字符串的地址賦給指針p2
C.對p1和p2兩個指針所指字符串進行比較
D.檢查p1和p2兩個指針所指字符串中是否有'\0'
42.棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是
A.ABCEDB.DCBEAC.DBCEAD.CDABE
43.設(shè)有以下定義uniondata{intd1;floatd2;}demo;則下面敘述中錯誤的是()。
A.變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同
B.變量demo中各成員的地址相同
C.變量demo和各成員的地址相同
D.若給demo.d1賦99后,demo.d2中的值是99.0
44.下列敘述中正確的是()。
A.顯示器和打印機都是輸出設(shè)備B.顯示器只能顯示字符C.通常的彩色顯示器都有7種顏色D.打印機只能打印字符和表格
45.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強內(nèi)聚的一類是__________。
A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚
46.若有定義floata=25,b,*p=&b;,則下列對賦值語句*p=a;和p=&a;的正確解釋為()。
A.兩個語句都是將變量a的值賦予變量p
B.*p=a是使p指向變量a,而p=&a是將變量a的值賦予變量指針p
C.*p=a是將變量a的值賦予變量b,而p=&a是使p指向變量a
D.兩個語句都是使p指向變量a
47.下列敘述中正確的是()。
A.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大
B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小
C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小
D.上述三種說法都不對
48.軟件設(shè)計包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計,其中軟件的過程設(shè)計是指()
A.模塊間的關(guān)系B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述C.軟件層次結(jié)構(gòu)D.軟件開發(fā)過程
49.以下程序的輸出結(jié)果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}
A.abe+ABC=DEFdef
B.abc+abe=defdef
C.abcaABCDEFdef
D.abcabcdefdef
50.有以下程序main(){char*s[]={"one","two","three"},*P;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}執(zhí)行后輸出結(jié)果是
A.n,twoB.t,oneC.w,oneD.o,two
51.以下程序運行后,輸出結(jié)果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}
A.cdeB.字符c的AScII碼值C.字符c的地址D.出錯
52.有以下程序:#include<stdio.h>main(){intm=3,n=4,x;x=-m++;x=x+8/++n;prinff("%d\n",x);}程序運行后的輸出結(jié)果是()。
A.3B.5C.-1D.-2
53.以下程序的輸出的結(jié)果是intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staicintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
54.以下程序的輸出結(jié)果是()main(){inti,x[3][3]={l,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);}
A.1,5,9B.1,4,7C.3,5,7D.3,6,9
55.有以下程序;charfun(charx,chary){if(x<y)returnx;returny;}main(){inta='9',b='8',c='7';printf("%c\n",fun(fun(a,B),fun(b,C)));}程序的執(zhí)行結(jié)果是
A.函數(shù)調(diào)用出錯B.8C.9D.7
56.下列有關(guān)格式輸入函數(shù)scanf的敘述中正確的是()
A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”
B.可以只有格式控制項,沒有地址列表項
C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);
D.當輸入數(shù)據(jù)時,必須指明變量地址
57.以下數(shù)組定義中錯誤的是A.intx[][3]={0};
B.intx[2][3]={{l,2},{3,4},{5,6}};
C.intx[][3]={{l,2,3},{4,5,6}};
D.intx[2][3]={l,2,3,4,5,6};
58.以下不合法的用戶標識符是______。A.j2KEYB.DoubleC.4dD._8_
59.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}該程序的輸出結(jié)果是______。
A.2B.4C.6D.8
60.一個關(guān)系中屬性個數(shù)為1時,稱此關(guān)系為()。
A.對應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系
四、選擇題(20題)61.
有以下程序:
#include<stdio.h>
main
{intx=4,y;
do
{y=x;
if(!y)printf("x");
else
printf("y"):
x--;
}while(x);
}
程序的輸出結(jié)果是()。
A.xyyxB.yyyyC.yyxxD.yxyx
62.
63.以下錯誤的定義語句是()。
64.在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。
A.人工管理階段B.文件系統(tǒng)階段C.數(shù)據(jù)庫系統(tǒng)階段D.三個階段相同
65.兩個或兩個以上模塊之間聯(lián)系的緊密程度稱為()。
A.耦合性B.內(nèi)聚性C.復(fù)雜性D.數(shù)據(jù)傳輸特性
66.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。
A.-3B.9C.-12D.6
67.下列條件語句中,輸出結(jié)果與其他語句不同的是()。
A.if(a)printf("%dn",x);elseprint[("%d\n",y)
B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)
C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)
D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)
68.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),
A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定
69.
70.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
71.
72.(56)下列不屬于軟件調(diào)試技術(shù)的是()
A.強行排錯法
B.集成測試法
C.回溯法
D.原因排除法
73.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。
A.
B.
C.
D.
74.有以下程序:
程序運行后的輸出結(jié)果是()。
A.9B.6C.11D.7
75.
76.
77.某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是A.10B.8C.6D.4
78.有下列程序: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
79.HTTP協(xié)議是運行于()協(xié)議之上的應(yīng)用層協(xié)議。
A.FTPB.SMTPC.TCPD.UDP
80.
五、程序改錯題(1題)81.下列給定程序中,fun()函數(shù)的功能是:求3個數(shù)的最小公倍數(shù),例如,給變量a、b、c、分別輸入15、11、2,則輸出結(jié)果應(yīng)當是330。請修改函數(shù)中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),不能增行或減行,也不能更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將形參s所指字符串放入形參a所指的字符數(shù)組中,使a中存放同樣的字符串。說明:不得使用系統(tǒng)提供的字符串函數(shù)。注意:部分源程序存放在文件prog1.c中,請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()指定的部位填入所編寫的若干語句。試題程序:
參考答案
1.C
2.B
3.C該程序中“int*p1=&a,*p2=&b,*p=&c;”定義了3個指針變量,并賦值。指針變量p1指向a,p2指向b,p指向c。執(zhí)行“*p=*p1*(*p2);”語句,給p所指的存儲單元c賦值。p1所指的存儲單元的值,與p2所指的存儲單元b的值相乘,也就是c=a*b,等價于c=1*3=3。故本題答案為C選項。
4.A
5.D
6.C題干中,循環(huán)的作用是將輸入的字符串轉(zhuǎn)化為大寫,getchar函數(shù)讀入一個字符,putchar函數(shù)輸出一個字符,當遇到‘#’字符結(jié)束。“putcha(++C);”,表示將字符變量c加1后輸出。當輸入“aBcDefG##”時,得到的結(jié)果是BCDEFGH。故本題答案為C選項。
7.D解析:一般來說,一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),因此,數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)不一定是一一對應(yīng)的。選項A中的說法是錯誤的。雖然計算機的存儲空間是向量式的存儲結(jié)構(gòu),但由于一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),例如,線性鏈表是線性表的鏈式存儲結(jié)構(gòu)。一般來說,性表的鏈式存儲結(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。性鏈表中,各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點的指針域來指示的。因此,數(shù)據(jù)的存儲結(jié)構(gòu)不一定是線性結(jié)構(gòu)。選項B中的說法也是錯誤的。雖然程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),但是,利用數(shù)組也能處理非線性結(jié)構(gòu)。例如,滿二叉樹與完全二叉樹是非線性結(jié)構(gòu),但對于滿二叉樹與完全二叉樹來說,根據(jù)完全二叉樹的性質(zhì)6,可以按層序進行順序存儲,即利用程序設(shè)計語言中的數(shù)組來存儲,這樣,不僅節(jié)省了存儲空間,又能方便地確定每一個結(jié)點的父結(jié)點與左右子結(jié)點的位置。對于一般的二叉樹來說,也可以將二叉樹中每一個結(jié)點的左指針、右指針以及數(shù)據(jù)域分別用三個數(shù)組中的對應(yīng)元素來存儲,即實際上也是利用了程序設(shè)計語言中的數(shù)組來處理二叉樹這樣的非線性結(jié)構(gòu)。選項C中的說法也是錯誤的。綜上所述,選項A、B與C中的說法都是錯誤的。
8.A
9.A關(guān)系SC中的主鍵是(S#,C#),但C#(課程號)單獨就可以決定Cn(課程名),存在著對主鍵的部分依賴。本題答案為A選項。
10.A
11.A字符型指針變量可以用A選項的賦值方法“Char*s;s=“OlymPiC”;”。C選項的寫法“char*s;s={“Olympic”};”是錯誤的。字符數(shù)組可以在定義的時候初始化,如“chars[]={“Olympic”};”或者“chars[]=“Olympic”;”,但是不可以在定義字符數(shù)組后對數(shù)組名賦值(數(shù)組名是常量,代表數(shù)組首地址),所以B選項和D選項都是錯誤的。對于本例,B、D選項中字符數(shù)組s的大小至少為8,才能存放下字符串(字符串的末尾都有結(jié)束標識‘\\0’),同時,此時S為字符數(shù)組的地址,是常量,不能為其賦值。故本題答案為A選項。
12.A結(jié)構(gòu)體PER類型定義了兩個成員:num為整型,date為嵌套的結(jié)構(gòu)體類型。初始化時,成員值的順序必須與成員定義的順序相同,num必須是整數(shù),date必須是用花括號標注的嵌套的3個整數(shù)。選項A中,{1001}和{1002}都不是整數(shù),所以選項A錯誤。故本題答案為A選項。
13.C解析:軟件工程的基本概念。軟件工程概念的出現(xiàn)源自于軟件危機。為了消除軟件危機,通過認真研究解決軟件危機的方法,認識到軟件工程是使計算機軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念。
14.D解析:本題題面要求刪除q所指結(jié)點并釋放該結(jié)點,而選項A中雖然是刪除了q所指鮚點,但并未釋放q這個結(jié)點,而釋放的是p結(jié)點,所以選項A錯誤;選項B是將q的下一結(jié)點的地址賦值給指針變量p,這意味著p原來的成員變量內(nèi)容被q的下一結(jié)點的成員變量內(nèi)容所代替,即原p結(jié)點也被刪除了,所以選項B錯誤;選項C相當于將q的所有成員變量內(nèi)容代替了p的所有成員變量內(nèi)容,即p結(jié)點被刪除,所以錯誤;選項D是將q的下—結(jié)點的地址賦值給p的成員next\u3000(成員next用于存放一結(jié)點的地址),使得p的next成員不再指向q,而是指向q的下一結(jié)點,相當于刪除了q這個結(jié)點,同叫用free函數(shù)正確釋放了q這一結(jié)點,所以選項D正確。
15.D
16.B
17.D
18.D
19.A
20.D解析:關(guān)系模型中包括關(guān)系的數(shù)據(jù)結(jié)構(gòu)、關(guān)系的操縱和關(guān)系中的數(shù)據(jù)約束。關(guān)系完整性約束即數(shù)據(jù)完整性,包括實體完整性、參照完整性和用戶自定義完整性。
21.00解析:關(guān)系運算符“>”的結(jié)合方式是從左向右的,所以在本題中的表達式a>b=c;從左向右開始計算,a>b的結(jié)果為“1”,接著1和c比較假,該空格處應(yīng)該填0。
22.&a[i]或a+ia[i]或*(a+i)&a[i]或a+i\r\na[i]或*(a+i)解析:主函數(shù)中一開始定義了一個長度為20的整型數(shù)組,然后通過一個循環(huán),循環(huán)20次給它的每個元素賦初值,所以在第一個空格處應(yīng)填各個元素的地址,即填&a[i]或a+i,然后再通過一個循環(huán)執(zhí)行20次,每循環(huán)一次,先判斷該循環(huán)是否大于0,如果大于0將其累加到變量sum中,所以第二個空格處應(yīng)該填入數(shù)組元素,所以應(yīng)該填a或*(a+i)。
23.隊頭隊頭解析:隊列是只允許在一端刪除,在另一端插入的順序表,在隊列中,允許插入的一端叫做“隊尾”,允許刪除的一端叫做“隊頭”。
24.i==jk!i&&k!ji==j\r\nk!i&&k!j解析:本題用雙重for循環(huán)寫了一段0~9之間不同的3個數(shù)構(gòu)成一個三位數(shù)的程序,因為要求三位數(shù)各個位數(shù)的數(shù)不能相同,所以第一個空if語句的條件應(yīng)為i==j,即當兩個位數(shù)上的數(shù)相同的時候,不再執(zhí)行下面的操作,轉(zhuǎn)去執(zhí)行for循環(huán)的下一次循環(huán)。第二個空,需要判斷第三位上的數(shù)不能與其他兩位的數(shù)相同。
25.floaty;structstu*floaty;\r\nstructstu*解析:float定義變量y為實型變量。要求變量next是指向自身結(jié)構(gòu)體的指針,因此變量next應(yīng)該是結(jié)構(gòu)體stu的指針型變量。
26.內(nèi)模式或物理模式或存儲模式內(nèi)模式或物理模式或存儲模式解析:一個數(shù)據(jù)庫只有一個內(nèi)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)庫內(nèi)部的表示方法。例如,記錄的存儲方式是順序存儲、索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲,是否加密等。
27.abcfgabcfg解析:本題考查的是字符數(shù)組用作函數(shù)參數(shù)。C語言中數(shù)組名可以看作該數(shù)組首地址的常量指針、因此可以直接傳遞給指針類型的參數(shù)。本題的主函數(shù)調(diào)用fun(s,3,strlen(s));后,函數(shù)中for循環(huán)就是for(i=3;i<strlen(s)-1;i++),即i從3遞增到字符數(shù)組s的長度-2位置,循環(huán)中讓s[i]=s[i+2],所以函數(shù)fun()實現(xiàn)的功能簡單來說就是將字符串s下標為p+2~k范圍的字符整體復(fù)制到字符串s下標為p~k-2的位置上。在本題中strlen(s)返回s的長度7,所以復(fù)制的字符為s[5]~s[7],即'f'、'g','\\0'三個字符,復(fù)制到s[3]~s[5],故最終輸出的字符串為abcfg(因為s[5]為'\\0',所以后面的字符不會輸出)。
28.物理獨立性數(shù)據(jù)獨立性是數(shù)據(jù)與程序間的互不依賴性,即數(shù)據(jù)庫中數(shù)據(jù)獨立于應(yīng)用程序而不依賴于應(yīng)用程序。也就是說,數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)與存取方式的改變不會影響應(yīng)用程序。數(shù)據(jù)獨立性一般分為物理獨立性與邏輯獨立性兩級。
29.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。
30.存儲結(jié)構(gòu)
31.3123,1,2解析:分析程序,第一個if語句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時a=2,b=1。第二個if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時a=3,c=2。
32.w[i-1]w[i-1]解析:在用數(shù)組實現(xiàn)的有序序列中插入內(nèi)容,必須先尋找插入位置。插入位置找到后,需將插入位置之后的元素向后移動一個位置,留出插入點。最后,將元素插入,并增加序列的元素個數(shù)。函數(shù)為了簡化尋找插入位置循環(huán)的循環(huán)條件,預(yù)先在序列的最后置入插入值。插入位置之后的元素向后移動一個位置必須從最后一個元素開始往前逆序移動,是將前一個元素向后移,所以在空框處應(yīng)填入w[i-1]。
33.aua。a,ua。解析:test是結(jié)構(gòu)體數(shù)組,每個元素均可看作是一個結(jié)構(gòu)體變量,主函數(shù)將結(jié)構(gòu)體數(shù)組元素test[0]中的name域下標為1的元素以字符形式輸出,將結(jié)構(gòu)體數(shù)組元素test[2]中的name域從地址name+3開始以字符串的形式輸出。
34.22解析:考查基本表達式的計算,“%”運算符的功能是取余。題中條件s=8,則s%3=2,(s+1)%3=9%3=0,所以表達式s%3+(s+1)%3=2+0=2。
35.數(shù)據(jù)數(shù)據(jù)解析:數(shù)據(jù)庫是由一個互相關(guān)聯(lián)的數(shù)據(jù)的集合和一組用以訪問這些數(shù)據(jù)的程序組成,這些數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲。
36.82.25
37.malloc(11)或malloc(sizeof(char*)11)malloc(11)或malloc(sizeof(char*)11)解析:該題主要考查malloc函數(shù)的使用。一個字符在內(nèi)存中占一個字節(jié),因此malloc的參數(shù)為11。也可按指向字符指針的大小來分配。
38.efghefgh解析:本題定義了一個字符型指針變量p并通過賦初值讓它指向了一個字符串,定義了另一個字符型指針變量r和一個長整型指針變量q。首先通過語句“q=(long*)p;”把P的地址值強制轉(zhuǎn)換為長整型地址值并賦值給q,然后執(zhí)行“q++;”,地址值增加了4,執(zhí)行語句“r=(char*)q”,把長整型指針變量q的值再強制轉(zhuǎn)換成字符型地址值并賦給r,r的值應(yīng)為字符串中字符“e”的地址,最后輸出r指向的字符串,是“efgh”。
39.BCDCDDBCD\r\nCD\r\nD解析:本題考查指向字符串的指針的運算方法。指針變量p首先指向字符串中的第一個字符A,執(zhí)行p=s+1后,p指向字符串中的第二個字符B,然后輸出值“BCD”并換行,依次執(zhí)行循環(huán)語句。
40.nn解析:在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數(shù)為n。
41.A解析:本題中的while((*p2=*p1)!='\\0')語句首先進行賦值*p2=*p1,即把p1所指存儲單元的字符逐一復(fù)制到p2所指存儲單元中,然后判斷p1所指單元內(nèi)容是否為'\\0',若判斷條件成立,則指針p1和p2依次指向下一個字符,繼續(xù)執(zhí)行循環(huán)體語句,否則循環(huán)終止。
42.B解析:棧操作原則上“后進先出”,棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進棧,B、C處于中間,A最早進棧。所以出棧時一定是先出D,再出C,最后出A。
43.D解析:聯(lián)合體的所有成員共占同一段內(nèi)存,所以聯(lián)合體變量的長度與它的最長成員所占長度…致,本題中float所占內(nèi)存字節(jié)數(shù)為4,而\u3000int類型在TurboC\u30002.0中是占2字節(jié)、在VisualC++6.0中占4字節(jié),所以int類型所占內(nèi)存字節(jié)數(shù)不會超過float,那demo就與成員d2所占字節(jié)數(shù)是相同的,選項A的說法正確。聯(lián)合體的所有成員的首地址都是相同的,和聯(lián)合體變量的地址一致。故選項B和C都是正確的。由于int類型數(shù)據(jù)和float類型數(shù)據(jù)在內(nèi)存中的存放格式是不一樣的,所以給d1賦99后,d2中不會得到99.0這個值。故選項D不正確,答案應(yīng)該選擇D。
44.A
45.D解析:內(nèi)聚性是一個模塊內(nèi)部各元素間彼此結(jié)合的緊密程度的度量。內(nèi)聚是從功能角度來度量模塊內(nèi)的聯(lián)系。內(nèi)聚共有7類,它們之㈨的內(nèi)聚性由弱到強排列順序為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。
46.C解析:“p”是指針變量,指向一個地址:“*p”,為p指針所指向地址的內(nèi)容。
47.D解析:時間復(fù)雜度是指一個算法執(zhí)行時間的相對度量;空間復(fù)雜度是指算法在運行過程中臨時占用所需存儲空間大小的度量。人們都希望選擇一個既省存儲空間、又省執(zhí)行時間的算法。然而,有時為了加快算法的運行速度,不得不增加空間開銷;有時為了能有效地存儲算法和數(shù)據(jù),又不得不犧牲運行時間。時間和空間的效率往往是一對矛盾,很難做到兩全。但是,這不適用于所有的情況,也就是說時間復(fù)雜度和空間復(fù)雜度之間雖然經(jīng)常矛盾,但是二者不存在必然的聯(lián)系。因此,選項A、B、C的說法都是錯誤的。故本題的正確答案是D。
48.B軟件設(shè)計包括軟件的結(jié)構(gòu)設(shè)計、數(shù)據(jù)接口設(shè)計和過程設(shè)計。其中軟件結(jié)構(gòu)設(shè)計主要包括系統(tǒng)由哪些子系統(tǒng)構(gòu)成,以及這些子系統(tǒng)之間的關(guān)系是怎樣的,并將這些內(nèi)容編寫成文檔;數(shù)據(jù)接口設(shè)計的任務(wù)是為每個子系統(tǒng)設(shè)計其與其他子系統(tǒng)間的接口,并編寫成文檔,這個接口要是一個無二義的接口,不需要子系統(tǒng)的操作知識就可以使用;過程設(shè)計是指系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述。
49.B解析:字符數(shù)組元素作函數(shù)參數(shù)是單向的值傳遞。函數(shù)cchar的功能是將大寫字母轉(zhuǎn)換為小寫字母。主函數(shù)中while循環(huán)語句的條件是判斷指針p當前指向的字符是否為空,若不為空,則調(diào)用函數(shù)cchar,即主函數(shù)中通過循環(huán)語句將字符串'ABC+abc=defDEF'中的大寫字母全部轉(zhuǎn)換為小寫字母,因此printf的輸出結(jié)果為選項B。
50.C解析:本題考核的知識點是指針數(shù)組。本崽首先定義了一個有3個元素的指針數(shù)組s,并遭過賦值使s[0]指向字符串“one”s[1]指向字符串“two”,s[2]指向字符串“three”,然后通過賦值語句“p=s[1]”,使p指向了字符串“two”,故”(p+1)”就是字符“w”。所以,C選項為所選。
51.C解析:指針數(shù)組中的每一個元素都相當于一個指針變量。一維指針數(shù)組的定義形式為:類型名*數(shù)組名[數(shù)組長度],在本題main函數(shù)中定義指針數(shù)組d,它有兩個元素,其初值分別是“ab”、“cde”的首地址。d[1]的值為“cde”的首地址。%x是指以十六進制數(shù)形式輸出整數(shù)。
52.D解析:程序中x=-m++執(zhí)行后x=-3,執(zhí)行x=x+8/++n相當于執(zhí)行x=-3+8/5,即n先增加1,再代入表達式運算,結(jié)果為-2。
53.C解析:本題首先定義一個全局變量x并賦初值為3,主函數(shù)中使用這個全局變量控制循環(huán)次數(shù),循環(huán)執(zhí)行了2次,調(diào)用兩次tncre()函數(shù)。第一次調(diào)用incre(),定義一個靜態(tài)變量x并賦初值1,然后執(zhí)行“x*=x+1”,使x的值變?yōu)?;第二次調(diào)用incre()函數(shù)時,靜態(tài)變量將保留上一次退出時的值即2,執(zhí)行語句“x*=x+1”后,x的值變成6,輸出x的值為6。所以,4個選項中C為所選。
54.C
55.D解析:本題考核的知識點是函數(shù)的返回值以及返回值作為函數(shù)的參數(shù)。經(jīng)過分析得出函數(shù)fun()的功能是比較形參x和形參y的大小,返回較小的一個.函數(shù)fun()有兩個參數(shù).本題中,首先定義了三個整型變量a、b和c,分別賦初值為9、8和7.然后執(zhí)行函數(shù)fun(fun(a,b),fun(b,c))。在該函數(shù)中分別將fun(a,b)和fun(b,C)函數(shù)的返回值作為該函數(shù)的兩個實參。在函數(shù)fun(a,b)中,由于a>b,故返回較小值b即8,在函數(shù)fun(b,C)中,由于b<c,故返回較小值c即為7,因此調(diào)用函數(shù)fun(fun(a,b),fun(b,C))相當于執(zhí)行函數(shù)fun(8,7),返回較小值即7。所以,4個選項中選項D符合題意。
56.D解析:如果是指針型變量或數(shù)組名,則變量前不加地址符號&,所以選項A的說法有誤。必須有地址列表項才能實現(xiàn)正確輸入,所以選項B的說法有誤。在輸入數(shù)據(jù)時,不可以指定實型數(shù)據(jù)的精度,所以選項C的說法有誤。只有選項D的說法正確。
57.B(16)B)解析:二維數(shù)組的初始化有以下幾種形式:①分行進行初始化。②不分行的初始化。③部分數(shù)組元素初始化。④省略第一維的定義,不省略第二維的定義。選項B)等號右邊分了3行,大于等號左邊數(shù)組的行數(shù)2。
58.C解析:C語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種符號組成,而且第—個字符必須是字母或下劃線。大寫字母和小寫字母被認為是兩個不同的字符,用戶在定義標識符時應(yīng)做到“見名知意”,且不允許使用關(guān)鍵字作標識符。
59.B解析:函數(shù)fib內(nèi)部有兩個遞歸調(diào)用,當n=3時,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值為4。
60.C解析:在關(guān)系模型數(shù)據(jù)庫中,基本結(jié)構(gòu)是二維表,這種二維表稱為關(guān)系。關(guān)系的列稱為屬性,一個具有N個屬性的關(guān)系稱為N元關(guān)系。注意:各種關(guān)系查詢語言與過程性語言和非過程性語言的關(guān)系,過程性語言的特點。
61.C
\n本題考查do-while語句和if…else語句。do-while語句的功能是先執(zhí)行循環(huán)體再判斷條件,所以,先判斷if語句的條件,y=-4,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=3,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將X的值減1,x=2,滿足while循環(huán)條件,繼續(xù)循環(huán)。第三次循環(huán):先判斷if語句的條件,y=2,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將X的值減1,x=l,滿足while循環(huán)條件,繼續(xù)循環(huán)。第四次循環(huán):先判斷if語句的條件,y=-1,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將x的值減1,x=0,不滿足while循環(huán)條件,結(jié)束循環(huán)。所以B正確。
\n
62.B
63.A二維數(shù)組定義行數(shù)可以省略,列數(shù)不能省略,所以答案選擇A)。
64.C數(shù)據(jù)管理發(fā)展至今已經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中最后一個階段結(jié)構(gòu)簡單,使用方便邏輯性強物理性少,在各方面的表現(xiàn)都最好,一直占據(jù)數(shù)據(jù)庫領(lǐng)域的主導(dǎo)地位,所以選擇C)。
65.A解析:耦合性是模塊間互相連接的緊密程度的度量,取決于各個模塊之間接口的復(fù)雜度、調(diào)用方式以及哪些信息通過接口。
[知識拓展]模塊的獨立程序是評價設(shè)計好壞的一個重要標準,衡量軟件的模塊獨立性有兩個定性的度量標準。其中內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度最,內(nèi)聚性是從功能角度來度量模塊內(nèi)的聯(lián)系;耦合性是模塊間互相連接的緊密程度的度量,耦合性從整體的角度來度量模塊間的聯(lián)系。
66.C解析:本題中首先定義一個整型變量a并給它賦初值為3,在表達式中,從右開始執(zhí)行,即先執(zhí)行“a-=a*a;”等價于a=a-a*a即a=3-3*3=-6,此時a的值為-6,接著執(zhí)行“a+=a-;”相當于執(zhí)行a=a+a即a=-6+(-6)=-12,此時a的值為-12。所以,4個選項中選項C符合題意。
67.D主要考查if判斷語句,A選項if(a),如果a為真,則輸出X,否則輸出Y。B選項if(a==0),如果a恒等于0,則輸出Y,否則輸出X。C選項a(!=o),如果a不等于0,則輸出X,否則輸出y。D選項if(a==0),如果a恒等于0,則輸出X,否則輸出y。由以上結(jié)論可知,輸出結(jié)果不同的為D選項。
68.D解析:在C語言的標準中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應(yīng)該選擇D。
69.A
70.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:
①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。
71.C
72.B
73.A本題考查的是typedef的用法和結(jié)構(gòu)體變量的定義方法。typedef可用于聲明結(jié)構(gòu)體類型,其格式為“typedefstruct{結(jié)構(gòu)元素定義}結(jié)構(gòu)類型;”。本題正確答案為A)。
74.B本題考查的是用于字符串處理的函數(shù)。
75.C
76.D
77.C根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。
78.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。
79.C
80.C
81.(1)錯誤:j=1;
正確:i=0;
(2)錯誤:while(temp!=0&&m!=0&&n!=0)
正確:while(temp!=0||m!=0I{n!=0)
【解析】其中while循環(huán)是判斷能否除盡x、y、z,循環(huán)中“i=i+1;”進行了加1操作,i應(yīng)該從1開始進行循環(huán),所以i的初始值應(yīng)該是0,這樣第一個錯誤標識下的“i=1;”就改為“i=0;”。
第二個標識下while循環(huán)邏輯關(guān)系應(yīng)該是或的關(guān)系,因為最小公倍數(shù)成立的條件是同時除盡,所以只要不是同時除盡,循環(huán)就繼續(xù),這樣“while(temp!=0&&m!=0&&n!=0)”應(yīng)該是“while(temp!=0||m!=0||n!=0)”。
82.1voidfun(char*a,char*s)2{while(*s!:'。1)3{*a=*s;4a++;5s++;}7*a='\\0';}要將指針變量s所指的字符串存入指針變量a所指的字符串中,程序要求不能使用系統(tǒng)提供的字符串函數(shù)。本題可以使用循環(huán)語句,依次取出a所指字符串中的元素,將其存入s所指的字符串中,最后為s所指的字符串添加字符串結(jié)束標志'\\0'。2021-2022年廣東省汕頭市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.在瀏覽WWW時,如果連接到一個安全的站點,應(yīng)當以()開頭來書寫統(tǒng)一資源定位器。
A.shttp://B.http:s//C.http://D.https//
2.下列程序段的時間復(fù)雜度為()。A.O(n)B.O(n-1)C.O(n2)D.O(log2n)
3.有以下程序:#include<stdio.h>main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf(“%d\n”,c);}程序的運行結(jié)果是()。
A.1B.2C.3D.4
4.
5.如果要求一個線性表既能較快地查找,又能適應(yīng)動態(tài)變化的要求,可以采用下列哪一種查找方法()
A.分塊B.順序C.折半D.哈希
6.有以下程序:#include<stdio.h>main(){charc;for(;(c=getchar())!=‘#’;){if(c>=‘a(chǎn)’&&c<=‘z’)c=c-‘a(chǎn)’+‘A’;putchar(++c);}}執(zhí)行時輸入aBcDefG##并按<Enter>鍵,則輸出結(jié)果是()。
A.AbCdEFgB.ABCDEFGC.BCDEFGHD.bcdefgh
7.下列敘述中正確的是()。
A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)必定是一一對應(yīng)的
B.由于計算機存儲空間是向量式的存儲結(jié)構(gòu),因此,數(shù)據(jù)的存儲結(jié)構(gòu)一定是線性結(jié)構(gòu)
C.程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),因此,利用數(shù)組只能處理線性結(jié)構(gòu)
D.以上三種說法都不對
8.具有n個結(jié)點的連通圖至少有()條邊。
A.n-1B.nC.n(n-1)/2D.2n
9.定義學(xué)生選修課程的關(guān)系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其屬性分別為學(xué)號、姓名、課程號、課程名、成績、學(xué)分)則對主屬性部分依賴的是()。
A.C#→CnB.(S#,C#)→GC.(S#,C#)→S#D.(S#,C#)→C#
10.下列定義數(shù)組的語句中正確的是______。
A.#definesize10charstr1[size],str2[size+2];
B.charstr[];
C.intnum['10'];
D.intn=5;inta[n][n+2];
11.下列語句組中正確的是()。
A.char*s;s=“Olympic”;
B.chars[7];s=“Olympic”;
C.char*s;s={“Olympic”};
D.chars[7];s={“Olympic”};
12.設(shè)有如下類型說明語句:typedefstruct{intnum;struct{inty,m,d;}date;}PER;則以下定義結(jié)構(gòu)體數(shù)組并賦初值的語句中錯誤的是()。
A.PERst[2]={{1001},2008,8,1,{1002},2006,5,20};
B.PERst[2]={1001,{2008,8,1},1002,{2006,5,20}};
C.PERst[2]={{1001,2008,8,1},{1002,2006,5,20}};
D.PERst[2]={1001,2008,8,1,1002,2006,5,20};
13.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機的出現(xiàn)D.計算機的發(fā)展
14.假定已建立以下鏈表結(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);
15.有1000個無序的整數(shù),希望使用最快的方式找出前50個最大的,最佳的選擇是()
A.冒泡排序B.基數(shù)排序C.堆排序D.快速排序
16.下列程序的輸出結(jié)果是
#include"stdio.h"
#defineN3
#defineM3
voidfun(inta[M][N])
{printf("%d\n",*(a[1]+2));}
main()
{inta[M][N];
inti,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a[i][j]=i+j-(i-j);
fun(a);}A.A.3B.4C.5D.6
17.在下列排序算法中,在待排序的數(shù)據(jù)表已經(jīng)為有序時,花費時間反而最多的是()
A.希爾排序B.堆排序C.冒泡排序D.快速排序
18.下列排序方法中,()方法的比較次數(shù)與記錄的初始排列狀態(tài)無關(guān)。
A.直接插入排序B.冒泡排序C.快速排序D.直接選擇排序
19.
20.關(guān)系數(shù)據(jù)庫的數(shù)據(jù)及更新操作必須遵循()等完整性規(guī)則。
A.實體完整性和參照完整性
B.參照完整性和用戶定義的完整性
C.實體完整性和用戶定義的完整性
D.實體完整性、參照完整性和用戶定義的完整性
二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。
main()
{inta=5,b=4,c=3,d;
d=(a>b>C);
printf(“%d\n”,D);
}
22.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",【】);
for(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=【】;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
23.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許刪除的一端稱作()。
24.若用0至9之間不同的三個數(shù)構(gòu)成一個三位數(shù),下面程序?qū)⒔y(tǒng)計出共有多少種方法。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,j,k,count=0;
for(i=0;i<=9;i++)
for(j=0;i<=9;j++)
if(【】)continue;
elsefor(k=0;k<=9;k++)
if(【】)count++;
printf("%d",count);}
25.下面定義的結(jié)構(gòu)體類型包含3個成員,其中成員變量x用來存入整型數(shù)據(jù),成員變量y用來存入實型數(shù)據(jù),成員變量next是指向自身結(jié)構(gòu)體的指針。請將定義補充完整。
structstu
{intx;
【】
【】next;}
26.數(shù)據(jù)的物理結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的【】。
27.以下程序運行后的輸出結(jié)果是______。
#include<string.h>
voidfun(char*s,intp,intk)
{inti;
for(i=p;i<k-1;i++)s[i]=s[i+2];
}
main()
{chars[]="abcdefg";
fun(s,3,strlen(s));puts(s);
}
28.當數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu))改變時,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。
29.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁?。st=(char*)【】;
30.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。
31.下列程序的輸出結(jié)果是______。
main()
{inta=1,b=2,c=3,t=0;
if(a<B){t=a;a=b;b=t;}
if(a<C){t=a;a=c;c=t;}
printf("%d,%d,%d\n",a,b,C);
}
32.以下函數(shù)用來在w數(shù)組中插入x。n所指向的存儲單元中存放w數(shù)組中字符個數(shù)。數(shù)組w中的字符已按從小到大的順序排列,插入后數(shù)組w中的字符仍有序。請?zhí)羁铡?/p>
voidfun(char*w,charx,int*n)
{inti,p;
p=0;
w[*n]=x;
while(x>w[p])p++;
for(i=*n;i>p;i--)w[i]=【】;
w[p]=x;
++*n;}
33.以下程序的運行結(jié)果是______。
structexmp{charname[10];
intnumber;
};
structexmptest[3]={{"WangXi",1},{"QiYu",2},{"HuHua",3}};
main()
{printf("%c,%s\n",test[0].name[1],test[2].name+3);
}
34.若s是int型變量,且s=8,則s%3+(s+1)%3表達式的值為()。
35.數(shù)據(jù)庫是指按照一定的規(guī)則存儲在計算機中的【】的集合,它能被各種用戶共享。
36.下列程序的運行結(jié)果為【】。
voidaverage();
main()
{floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,99}};
average(*score,12);
}
voidaverage(p,n)
intn;
float*p;
{inti;
floatsum=0;
for(i=0;i<n;i++,p++)sum+=(*p);
printf("%.2f\n",sum/n);
}
37.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間。
st=(char*)【】;
38.以下程序的輸出結(jié)果是______。
main()
{char*p-"abcdefgh",*r;
long*q;
q=(long*)p;
q++;
r=[char*)q;
printf("%s\n",r);
}
39.以下程序的輸出結(jié)果是【】。
main()
{chars[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);}
40.在長度為n的線性表中查找一個表中不存在的元素,需要的比較次數(shù)為【】。
三、1.選擇題(20題)41.已定義以下函數(shù):fun(char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}此函數(shù)的功能是()。
A.將P1所指字符串復(fù)制到p2所指內(nèi)存空間,
B.將p1所指字符串的地址賦給指針p2
C.對p1和p2兩個指針所指字符串進行比較
D.檢查p1和p2兩個指針所指字符串中是否有'\0'
42.棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是
A.ABCEDB.DCBEAC.DBCEAD.CDABE
43.設(shè)有以下定義uniondata{intd1;floatd2;}demo;則下面敘述中錯誤的是()。
A.變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同
B.變量demo中各成員的地址相同
C.變量demo和各成員的地址相同
D.若給demo.d1賦99后,demo.d2中的值是99.0
44.下列敘述中正確的是()。
A.顯示器和打印機都是輸出設(shè)備B.顯示器只能顯示字符C.通常的彩色顯示器都有7種顏色D.打印機只能打印字符和表格
45.模塊本身的內(nèi)聚是模塊獨立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強內(nèi)聚的一類是__________。
A.順序性內(nèi)聚B.過程性內(nèi)聚C.邏輯性內(nèi)聚D.功能性內(nèi)聚
46.若有定義floata=25,b,*p=&b;,則下列對賦值語句*p=a;和p=&a;的正確解釋為()。
A.兩個語句都是將變量a的值賦予變量p
B.*p=a是使p指向變量a,而p=&a是將變量a的值賦予變量指針p
C.*p=a是將變量a的值賦予變量b,而p=&a是使p指向變量a
D.兩個語句都是使p指向變量a
47.下列敘述中正確的是()。
A.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大
B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小
C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小
D.上述三種說法都不對
48.軟件設(shè)計包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計,其中軟件的過程設(shè)計是指()
A.模塊間的關(guān)系B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述C.軟件層次結(jié)構(gòu)D.軟件開發(fā)過程
49.以下程序的輸出結(jié)果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}
A.abe+ABC=DEFdef
B.abc+abe=defdef
C.abcaABCDEFdef
D.abcabcdefdef
50.有以下程序main(){char*s[]={"one","two","three"},*P;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}執(zhí)行后輸出結(jié)果是
A.n,twoB.t,oneC.w,oneD.o,two
51.以下程序運行后,輸出結(jié)果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}
A.cdeB.字符c的AScII碼值C.字符c的地址D.出錯
52.有以下程序:#include<stdio.h>main(){intm=3,n=4,x;x=-m++;x=x+8/++n;prinff("%d\n",x);}程序運行后的輸出結(jié)果是()。
A.3B.5C.-1D.-2
53.以下程序的輸出的結(jié)果是intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staicintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
54.以下程序的輸出結(jié)果是()main(){inti,x[3][3]={l,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);}
A.1,5,9B.1,4,7C.3,5,7D.3,6,9
55.有以下程序;charfun(charx,chary){if(x<y)returnx;returny;}main(){inta='9',b='8',c='7';printf("%c\n",fun(fun(a,B),fun(b,C)));}程序的執(zhí)行結(jié)果是
A.函數(shù)調(diào)用出錯B.8C.9D.7
56.下列有關(guān)格式輸入函數(shù)scanf的敘述中正確的是()
A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”
B.可以只有格式控制項,沒有地址列表項
C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);
D.當輸入數(shù)據(jù)時,必須指明變量地址
57.以下數(shù)組定義中錯誤的是A.intx[][3]={0};
B.intx[2][3]={{l,2},{3,4},{5,6}};
C.intx[][3]={{l,2,3},{4,5,6}};
D.intx[2][3]={l,2,3,4,5,6};
58.以下不合法的用戶標識符是______。A.j2KEYB.DoubleC.4dD._8_
59.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}該程序的輸出結(jié)果是______。
A.2B.4C.6D.8
60.一個關(guān)系中屬性個數(shù)為1時,稱此關(guān)系為()。
A.對應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系
四、選擇題(20題)61.
有以下程序:
#include<stdio.h>
main
{intx=4,y;
do
{y=x;
if(!y)printf("x");
else
printf("y"):
x--;
}while(x);
}
程序的輸出結(jié)果是()。
A.xyyxB.yyyyC.yyxxD.yxyx
62.
63.以下錯誤的定義語句是()。
64.在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。
A.人工管理階段B.文件系統(tǒng)階段C.數(shù)據(jù)庫系統(tǒng)階段D.三個階段相同
65.兩個或兩個以上模塊之間聯(lián)系的緊密程度稱為()。
A.耦合性B.內(nèi)聚性C.復(fù)雜性D.數(shù)據(jù)傳輸特性
66.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。
A.-3B.9C.-12D.6
67.下列條件語句中,輸出結(jié)果與其他語句不同的是()。
A.if(a)printf("%dn",x);elseprint[("%d\n",y)
B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)
C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)
D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)
68.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),
A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定
69.
70.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
71.
72.(56)下列不屬于軟件調(diào)試技術(shù)的是()
A.強行排錯法
B.集成測試法
C.回溯法
D.原因排除法
73.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。
A.
B.
C.
D.
74.有以下程序:
程序運行后的輸出結(jié)果是()。
A.9B.6C.11D.7
75.
76.
77.某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是A.10B.8C.6D.4
78.有下列程序: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
79.HTTP協(xié)議是運行于()協(xié)議之上的應(yīng)用層協(xié)議。
A.FTPB.SMTPC.TCPD.UDP
80.
五、程序改錯題(1題)81.下列給定程序中,fun()函數(shù)的功能是:求3個數(shù)的最小公倍數(shù),例如,給變量a、b、c、分別輸入15、11、2,則輸出結(jié)果應(yīng)當是330。請修改函數(shù)中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),不能增行或減行,也不能更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將形參s所指字符串放入形參a所指的字符數(shù)組中,使a中存放同樣的字符串。說明:不得使用系統(tǒng)提供的字符串函數(shù)。注意:部分源程序存放在文件prog1.c中,請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()指定的部位填入所編寫的若干語句。試題程序:
參考答案
1.C
2.B
3.C該程序中“int*p1=&a,*p2=&b,*p=&c;”定義了3個指針變量,并賦值。指針變量p1指向a,p2指
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024基于類腦計算人工智能安全
- 口語交際:轉(zhuǎn)述 教學(xué)設(shè)計-2023-2024學(xué)年語文四年級下冊統(tǒng)編版
- 2025年中考道德與法治全真模擬卷3(含答案)
- 攝影基礎(chǔ)知識培訓(xùn)課件
- 出資贈與合同范本
- 2025年節(jié)約糧食標準教案5篇
- 員工薪酬福利計劃
- 加強社區(qū)“鄰里守望”機制建設(shè)計劃
- 加強幼兒園學(xué)生創(chuàng)新思維能力的工作計劃
- 教學(xué)評價中的定量與定性計劃
- 浙江省杭州市2024年中考英語真題(含答案)
- 化工設(shè)計概論(第二版)完整版課件(全)
- 智慧醫(yī)院可行性研究報告
- 直播運營實戰(zhàn):淘寶直播運營課件
- ??怂箍等鴺藴y量儀的使用課件
- 防洪堤工程施工質(zhì)量保證體系
- 高血壓臨床路徑
- 《新媒體營銷》全套教學(xué)教案
- 消防維修合同范本
- (完整版)質(zhì)量目標細化分解方案-橋梁工程
- 用戶水表(水費)過戶協(xié)議
評論
0/150
提交評論