




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021-2022年四川省眉山市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.按照“先進先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
2.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運算符。
A.&B.^C.‖D.~
3.已知廣義表L=((x,y,z),a,(u,t,w)),從L表中取出原子項t的運算是()。
A.head(tail(tail(L)))
B.tail(head(head(tail(L))))
C.head(tail(head(tail(L))))
D.head(tail(head(tail(tail(L)))))
4.以下選項中不屬于c語言的類型的是()。
A.unsignedlongint
B.longshort
C.unsignedint
D.signedshortint
5.
6.下列程序的輸出結(jié)果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112
7.
8.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
9.有以下程序段
#include<stdio.h>
voidfun(char*fname,char*st)
{FILE*myf;
inti;
myf=fopen(fname,"w");
for(i=0;i<strlen(st);i++)fputc(st[i],myf);
fclose(myf);
}
main()
{fun("test.t","newworld");
fun("test.t","hello,");}
程序執(zhí)行后,文件test.t中的內(nèi)容是A.A.hello,
B.newworldhello,
C.newworld
D.hello,rld
10.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。
A.存儲在外存中的數(shù)據(jù)B.數(shù)據(jù)所占的存儲空間量C.數(shù)據(jù)在計算機中的順序存儲方式D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示
11.若有定義“inta;longb;doublex,y;”,則以下選項中正確的表達式是()。
A.a=x<>yB.a%(int)(x-y)C.(a*y)%bD.y=x+y=x
12.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序
13.有三個關(guān)系R,S和T如下:
其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。
A.選擇B.交C.投影D.并
14.若以下選項中的變量全部為整型變量,且已正確定義并賦值,則語法正確的switch語句是()。
A.switch(a+9){casecl:y=a-b;casec2:y=a+b;}
B.switcha*b{casel0:x=a+b;default:y=a-b;}
C.switch(a+b){casel:case3:y=a+b;break;case0:case4:y=a-b;}
D.switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}
15.對于C語言的函數(shù),下列敘述中正確的是()。
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套
B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用都不能嵌套
D.函數(shù)的定義和調(diào)用都可以嵌套
16.下列關(guān)于信息系統(tǒng)的敘述中,錯誤的是()。
A.廣播電視是一種雙向的、點到多點的信息交互系自
B.網(wǎng)絡(luò)聊天是一種雙向的,以信息交互為主要目的系統(tǒng)
C.電話是一種雙向的、點對點的、以信息交互為主要的的系統(tǒng)
D.雷達是一種以感測和識別為主要目的的系統(tǒng)
17.遞歸式的先序遍歷一個n節(jié)點,深度為d的二叉樹,則需要??臻g的大小為()
A.O(logn)B.O(nlogn)C.O(n)D.O(d)
18.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序運行后的輸出結(jié)果是()。A.ZhangB.ZhaoC.WangD.19
19.一個遞歸的定義可以用遞歸過程求解,也可以用非遞歸過程求解,但單從運行時間來看,通常遞歸過程比非遞歸過程()。
A.較快B.較慢C.相同D.無法確定
20.下面程序的輸出是()。A.17B.18C.23D.24
二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{inti;
for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);
printf("\n");
}
22.設(shè)inta=5,b=6,表達式(++a==b--)?++a:--b的值是【】。
23.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。
24.數(shù)據(jù)模型是用來描述數(shù)據(jù)庫的結(jié)構(gòu)和語義的,數(shù)據(jù)模型有概念數(shù)據(jù)模型和結(jié)構(gòu)數(shù)據(jù)模型兩類,E-R模型是【】
25.下列程序執(zhí)行后輸出的結(jié)果是【】。
f(intA)
{staticc=0;
c=a+c++;
return(c);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
26.棧的3種基本運算是:入棧、退棧和______。
27.已定義charch='$';inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為______。
28.下面程序的功能是用來統(tǒng)計文件中字符個數(shù)。請?zhí)羁铡?/p>
#include"stdio.h"
main()
{longcount=OL;
FILE*fp=【】("text.dat","r");
if(fp==0)
{printf("Openerror\n");
exit(0);
}
while(【】)
{
fgetc(fp);
count++;
}
fclise(fp);
printf("%1d\n",count);
}
29.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{intn,s;
printf("Enteranumber:");scanf("%d",&n);
printf("Output:");
do
{s=n%10;printf("%d",s);【】;
}while(n!=0);
printf("\n");
}
30.對于圖書管理數(shù)據(jù)庫,將圖書表中"人民郵電出版社"的圖書的單價漲價5%。請對下面的SQL語句填空:UPDATE圖書【】WHERE出版單位="人民郵電出版社"
31.設(shè)某循環(huán)隊列的容量為50,頭指針front=5(指向隊頭元素的前一位置),尾指針rear=29(指向隊尾元素),則該循環(huán)隊列中共有【】個元素。
32.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下:
1
11
121
1331
14641
其構(gòu)成規(guī)律是,第0列元素和主對角線元素均為1,其余元素為其左上方和正上方元素之和,數(shù)據(jù)的個數(shù)每行遞增1。請將程序補充完整。
#defintN6
voidYangHui(int*[N][N])
{
inti,j;
x[0][0]=1
for(i=1;i<N;i++)
{
x[i][0]=【】=1
for(j=1;j<i;j++)
x[i][j]=【】;
}
}
33.已定義charch=′$′;inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為【】。
34.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。
35.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、______和處理過程。
36.設(shè)有如下程序main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序運行后,如果從鍵盤上輸入1298,則輸出結(jié)果為
37.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。
structdate
{intday;
intmouth;
intyear;
union{intshare1;
floatshare2;
}share;
}a;
38.用以下程序把從鍵盤輸入的字符存放到一個文件中,用字符#作為結(jié)束符,請按題意要求填空完善程序。
#include<stdio.h>
main()
{FILE*fp;
charch,fname[10];
printf("Inputthenameoffile\n");
gets(fname);
if(fp=fopen(【】))==NULL)
{printf("can'topen\n");
【】;
}
while((ch=getchar())!='#')
fputc(【】);
fclose(fp);
}
39.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
40.有以下程序:
intf(intn)
{if(n==1)retum1;
elsereturnf(n-1)+1;}
main()
{inti,j=0;
for(i=1;i<3;i++)j+=f(i);
printf("%d\n",j);
}
程序運行后的輸出結(jié)果是【】。
三、1.選擇題(20題)41.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。
A.p=1;B.*q=2;C.q=p;D.*p=5;
42.下面程序的輸出結(jié)果為______。#include<string.h>main(){charp1[7]="abc",p2[]="ABC",str[50]="xyz";strcpy(str,strcat(p1,p2));printf("%s",str);}
A.xyzabcABCB.abcABCC.xyzabcD.xyzABC
43.若有說明chars1[30]="abc",s2[]="defghi";,則在使用函數(shù)strcat(s1,s2)后,結(jié)果是()。
A.s1的內(nèi)容更新為abcdefghi
B.s1的內(nèi)容更新為defghi\0
C.s1的內(nèi)容更新為defghiabc\0
D.s1的內(nèi)容更新為abcdefghi\0
44.整型變量x和y的值相等,且為非。值,則以下選項中,結(jié)果為0的表達式是()
A.x||yB.x|yC.x&yD.xy
45.下面各語句行中,能正確地給字符串賦值的語句行是()。
A.charst[4]={"ABCDE"};
B.chars[5]={'A','B','C','D','E'};
C.char*s="ABCDE";
D.char*s;scanf("%s",*s);
46.下列關(guān)系運算中,能使經(jīng)運算后得到的新關(guān)系中屬性個數(shù)多于原來關(guān)系中屬性個數(shù)的是()。
A.選擇B.連接C.投影D.并
47.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序運行后的輸出結(jié)果是
A.編譯出錯B.9C.21D.9
48.有以下程序
#include<stdio.h>
voidfun(char*t,char*s)
{while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{charss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);printf("%s,%s\n",ss,aa);
}
程序的運行結(jié)果是
A.accxyy,bbxxyy
B.acc,bbxxyy
C.accxxyy,bbxxyy
D.accbbxxyy,bbxxyy
49.下列各數(shù)據(jù)類型不屬于構(gòu)造類型的是()。
A.枚舉型B.共用型C.結(jié)構(gòu)型D.數(shù)組型
50.軟件設(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ā)過程
51.有以下程序#definef(x)(x'x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序運行后的輸出結(jié)果是
A.64,28B.4,4C.4,3D.64,64
52.若有語句:char*line[5];,以下敘述中正確的是
A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為char為指針變量
B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組
C.定義line是一個指針數(shù)組,語句中的*號稱為間址運算符
D.定義line是一個指向字符型函數(shù)的指針
53.已有定義int(*p)(),指針p可以
A.代表函數(shù)的返回值B.指向函數(shù)的入口地址C.表示函數(shù)的類型D.表示函數(shù)返回值的類型
54.下列程序的輸出結(jié)果是______。main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}
A.0B.0.25C.0.5D.1
55.在C語言中提供的合法的關(guān)鍵字是______。
A.swicthB.cherC.CaseD.default
56.以下函數(shù)返回a所指數(shù)組中最小的值所在的下標值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在橫線處應(yīng)填入的是______。
A.i=pB.a[p]=a[i]C.p=jD.p=i
57.下述關(guān)于C語言文件的操作的結(jié)論中,正確的是______。
A.對文件操作必須先關(guān)閉文件
B.對文件操作必須先打開文件
C.對文件操作順序無要求
D.對文件操作前必須先測文件是否存在,然后再打開文件
58.設(shè)a和b均為雙精度型變量,且a=5.5、b=2.5,則表達式(int)a+b/b的值是()。
A.6.5B.6C.5.5D.6
59.______是構(gòu)成C語言程序的基本單位。
A.函數(shù)B.過程C.子程序D.子例程
60.下列關(guān)于棧的敘述中正確的是
A.在棧中只能插入數(shù)據(jù)B.在棧中只能刪除數(shù)據(jù)C.棧足先進先出的線性表D.棧是先進后出的線性表
四、選擇題(20題)61.有三個關(guān)系R,S和T如下:
其中關(guān)系T由關(guān)系R和S通過某種操作得到,該操作為()。A.選擇B.投影C.交D.并
62.
63.若在定義語句:inta,b,c,*p=&c;之后,接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是()。A.A.scanf("%d",a,b,c);B.scanf("%d%d%d",a,b,c):
C.scanf("%d",p);
D.scanf("%d",&p);
64.有以下程序
#include<stdio.h>
intfun(int(*s)[4],intn,intk)
{intm,i;
m=s[0][k];
for(i=l;i<n;i++)
if(s[i][k]>m)m=s[i][k];
returnm;
}
main()
{inta[4][4]={{1,2,3,4},{11,12,13,14},{2l,22,23,24},{31,32,33,34}};
printf("%d\n",fun(a,4,0));
}
程序的運行結(jié)果是
A.4B.34
C.31D.32
65.
下列程序執(zhí)行后的輸出結(jié)果是()。
main
{inta[3][3],*p,i};
p=&a[0][0];
for(i=p;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A.3B.6C.9D.隨機數(shù)
66.
67.數(shù)據(jù)庫管理系統(tǒng)中負責數(shù)據(jù)完整性、安全性定義的語言是()。
A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言
68.
69.在單鏈表中,增加頭結(jié)點的目的是______。
A.方便運算的實現(xiàn)B.使單鏈表至少有一個結(jié)點C.標識表結(jié)點中首結(jié)點的位置D.說明單鏈表是線性表的鏈式存儲實現(xiàn)
70.若有定義和語句:
int*(*pp),*P,a=20,b=10;
pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);
則輸出結(jié)果是()。A.A.20,10B.20,20C.10,20D.10,10
71.下列選項中不屬于結(jié)構(gòu)化程序設(shè)計原則的是()。
A.可封裝B.自頂向下C.模塊化D.逐步求精
72.下列合法的聲明語句是()。
A.intabc=50;
B.doubleint=3+5e2.5;
C.longdo=1L;
D.float3asd=3e一3;
73.
74.有以下程序:
程序運行后的輸出結(jié)果是()。
A.3B.4C.5D.6
75.
76.
77.以下程序段中的變量已正確定義
78.
79.若有以下定義和語句:“doubler=99,*p=&r;*P=r;”,則以下正確的敘述是()。
A.兩個*p含義相同,都說明給指針變量p賦值
B.在“doubler=99,*p=&r;”中,把r的地址賦值給了P所指的存儲單元
C.語句“*p=r;”把變量r的值賦給指針變量P
D.語句“*p=r;”取變量r的值放回r中
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從m個學(xué)生的成績中統(tǒng)計出低于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如,輸入8名學(xué)生的成績:6070809065758595則低于平均分的學(xué)生人數(shù)為4(平均分為77.5)。實際輸入時學(xué)生數(shù)以“Enter”鍵作為結(jié)束,成績與成績之間也與Enter鍵作為分隔。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)voidproc(chara[],charbE3,intn),其功能是:刪除一個字符串中指定下標的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標。例如,輸入一個字符串student,然后輸入5,則調(diào)用該函數(shù)后的結(jié)果為studet。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進先出”的原則組織數(shù)據(jù)的。
【知識拓展】“隊列”和“?!倍际且环N特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進先出,后進后出。
2.B按邏輯位運算特點:①用按位與運算將特定位清為0或保留特定位;②用按位或運算將特定的位置為1;③用按位異或運算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。
3.D
4.Bc語言中整型變量分為4種,基本型int,短整型shortint,長整型longint和無符號型(unsignedint、un-signedshort、unsignedlong)。因此B)選項不屬于c語言的類型。
5.A
6.C當執(zhí)行fun函數(shù)時,因為參數(shù)傳遞時是地址傳遞,因此形參值的改變會影響實參中的數(shù),在執(zhí)行fun函數(shù)時先輸出12,接著把*X賦3,*y賦4,此時帶回主函數(shù)中,輸出的值為34。
7.C
8.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。
9.D本題主要考查文件的操作。在本題的程序中,首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個指針類型的形參,其中第一個形參指向需要被操作文件的文件名,而第二個形參指向被操作的字符串。在函數(shù)體中,首先定義一個文件指針,然后以只寫的方式打開第一個形參所指向的文件,接著執(zhí)行for循環(huán),循環(huán)結(jié)束的條件是循環(huán)變量小于被操作字符串的長度,循環(huán)體中的程序fputc(st[i],myf);的功能是將字符串中的當前字符輸入到文件中。由這些分析我們可以知道,函數(shù)fun的作用是將字符串的內(nèi)容寫入到文件中。
在主函數(shù)中,兩次調(diào)用函數(shù)fun,當?shù)谝淮握{(diào)用時,寫入文件的內(nèi)容為newworld,然后第二次調(diào)用函數(shù),此時打開文件,文件的指針重新回到開始,然后往文件中寫內(nèi)容“hello,”,由于此時文件中已經(jīng)有內(nèi)容“newworld”,則需要覆蓋前面一部分的內(nèi)容,因此,程序的最終輸出結(jié)果是hello,rld,本題的正確答案選D。
10.D數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)則是數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的物理實現(xiàn),有時也稱作數(shù)據(jù)的物理結(jié)構(gòu)。兩者的區(qū)別是數(shù)據(jù)的邏輯結(jié)構(gòu)只涉及到數(shù)據(jù)之間抽象的數(shù)學(xué)關(guān)系。存儲結(jié)構(gòu)則涉及到如何在計算機中通過對數(shù)據(jù)的物理存儲進行組織來表達數(shù)據(jù)元素之間的邏輯關(guān)系。比如在線性表的順序存儲中是利用物理存儲空間上的連續(xù)性來表達線性表中數(shù)據(jù)的前后件關(guān)系;在線性表的鏈式存儲中是通過指針域構(gòu)成的邏輯鏈條來表達數(shù)據(jù)的前后件關(guān)系。一般的,一種數(shù)據(jù)的邏輯結(jié)構(gòu)對應(yīng)的物理實現(xiàn),即數(shù)據(jù)的存儲結(jié)構(gòu)不止一種。因此選項D正確。
11.BC語言中沒有“<>”運算符,所以A選項錯誤。運算符“%”的左右兩個操作數(shù)必須為整型數(shù)據(jù),所以B選項正確。表達式“a*y”的結(jié)果為double型,所以C選項錯誤。不能將值賦給像“x+y”這樣的表達式,所以D選項錯誤。故本題答案為B選項。
12.A解析:以下幾種算法的時間復(fù)雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當排序元素序列基本有序的情況下,冒泡排序的交換次數(shù)為0,只是順序掃描數(shù)據(jù)而已,所以其效率是最高的。
13.D\n兩個相同結(jié)構(gòu)關(guān)系的并是由屬于這兩個關(guān)系的元組組成的集合。
\n
14.D選項A,當cl和c2相等時,不成立;選項B,a*b要用括號括起來;選項C,case與后面的數(shù)字用空格隔開。
15.A
16.A廣播/電視是一種單向的、點對多點(面)的以信息傳遞為主要目的的系統(tǒng)。
17.D
18.Bfun(x+2)表示的是結(jié)構(gòu)體數(shù)組中的第3個元素即{03,"Zhao",l8),而輸出的是name元素,所以答案為B。
19.B
20.B
21.ACEACE解析:在本題中,for循環(huán)體每執(zhí)行完一次,變量i的值自加兩次。i的初值為\'a\',執(zhí)行一次循環(huán)后變?yōu)閈'c\',之后再變成\'e\',當其變?yōu)閈'g\'時,循環(huán)條件若不滿足,循環(huán)終止,故本題共輸出3個字符。表達式'i-\'a\'+\ue008\'A\'\ue009'即表示輸出i對應(yīng)的大寫字母,結(jié)果為ACE。
22.77解析:此表達式為三目運算符,++a的值為6,b--的值為6,則整個表達式的值為++a的值,++a的值為7。請注意前綴++,--和后綴++,--的區(qū)別。
23.存儲結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運算。
24.概念數(shù)據(jù)模型概念數(shù)據(jù)模型
25.77解析:在程序執(zhí)行時,static變量僅初始化一次,下次使用時將使用上次保存的值。
26.讀棧頂元素讀棧頂元素解析:棧的基本運算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個新的元素;退棧是指取出棧頂元素并賦值給一個變量;讀棧頂元素是將棧頂元素賦值給一個指定的變量,不刪除棧頂元素。
27.11解析:在執(zhí)行邏輯表達式“j=!ch&&i++”時,首先判斷j=!ch的值,因為“ch='$'”不為0,所以“j=!ch=0”,編譯系統(tǒng)便不再計算表達式“i++”的值,i的值不變,仍為1。
28.fopen!feof(fp)fopen\r\n!feof(fp)解析:第一空從右邊的括號中可以看出,這里應(yīng)該填入一個fopen,整條語句用來打開一個名為text.dat的文件。第二空是一個while循環(huán)的循環(huán)條件表達式,循環(huán)體每次讀取一個字符,并讓count增1,所以循環(huán)條件應(yīng)該是“如果文件還沒結(jié)束”,故應(yīng)該填!feof(fp)。
29.n/=10或n=n/10n/=10或n=n/10解析:每次循環(huán)把n除以10所得的商賦給n。
30.SET單價=單價*1.05SET單價=單價*1.05解析:更新表中元組的值,使用UPDATE命令,一次可以更新表中的一個或多個屬性值。UPDATE短語之后指定更新數(shù)據(jù)所屬的表,將新的屬性值或表達式賦值給對應(yīng)的屬性名(SET單價=單價*1.05),并置于SET短語之后。要求對人民郵電出版社的圖書漲5%,需要用WHERE短語對元組進行限制,即對符合條件的元組進行更新。
31.2424解析:在循環(huán)隊列中因為頭指針指向的是隊頭元素的前一個位置,所以是從第6個位置開始有數(shù)據(jù)元素,所以隊列中的數(shù)據(jù)元素的個數(shù)為29-5=24。
32.x[i][i]x[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]解析:在程序中有兩重循環(huán)。在第一層for循環(huán)中將每行的第0列賦值為1,對角線上的元素賦值為1,顯然在第一個空白處應(yīng)該填入對角線上的元素即x[i][i],在第二重循環(huán)中給每行其他元素賦值,而在每行中除了第0列和對角線的元素外其他元素為其對應(yīng)的上一行中同列和同列的前一列的元素相加,所以在第二個空白處應(yīng)該填入x[i-1][j-1]+x[i-1][j]。
33.11解析:在執(zhí)行邏輯表達式'j=!ch&&i++'時,首先判斷j=!ch的值,因為'ch=\'$\''不為0,所以'j=!ch=0',編譯系統(tǒng)便不再計算表達式'i++'的值,i的值不變,仍為1。
34.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)解析:Jackson方法是—‘種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化方法。
35.數(shù)據(jù)存儲數(shù)據(jù)存儲
36.89218921
37.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。
38.fname"#"exit(0)chfp
39.*(p+5)或p[5]*(p+5)或p[5]
40.33解析:i=1時,f(1)=1,j=j+f(1)=0+1=1;i=2時,f2=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此時循環(huán)結(jié)束,程序運行后的輸出結(jié)果是3。
41.D解析:選項A),B),C)的指針賦值表達方式都不正確,*p=5表達整數(shù)5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。
42.B解析:strcpy(str1,s1):作用是將字符串s1拷貝到字符數(shù)組str1中去。strcat(字符數(shù)組1,字符數(shù)組2):把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中,函數(shù)調(diào)用后返回字符數(shù)組1的地址。本題定義了三個字符數(shù)組p1,p2,sir,strcat(p1,p2)函數(shù)的作用是將字符串數(shù)組p2接到字符串p1的后面,結(jié)果放在字符數(shù)組p1中,再通過strcpy()函數(shù)將該字符串拷貝到str數(shù)組中,原str數(shù)組中的字符串xyz被覆蓋,因此打印輸出字符串str即可得到abcABC。
43.D解析:strcat(s1,s2)是把s2字符串連接到s1字符串的末尾,要保證s1能容納下連接后的字符串。
44.D
45.C解析:選項A)字符串的賦值產(chǎn)生越界錯誤,不正確;選項B)是字符數(shù)組的賦值,而不是字符串的賦值;選項D)中scanf的列表項必須為變量的地址。
46.B選擇,連接,投影是專門的關(guān)系運算,選擇是選擇滿足條件的元組,而投影是選擇滿足條件的屬性或者說列。并是傳統(tǒng)的關(guān)系運算,是將兩個關(guān)系中的元組合并在一起再去掉重復(fù)的部分。選擇,投影,并三個運算得到的結(jié)果屬性數(shù)并沒有改變或者說還有減少,而連接時將兩個關(guān)系進行笛卡爾積運算,在挑選滿足條件的項。其屬性個數(shù)一般會多于原來關(guān)系中的屬性數(shù)。
47.B解析:本題考查函數(shù)的綜合知識。首先,我們可以利用強制轉(zhuǎn)換類型轉(zhuǎn)換運算符將一個表達式轉(zhuǎn)換成所需類型。如:(double)a是將a轉(zhuǎn)換成double類型;(int)(x+y)是將x+y的值轉(zhuǎn)換成整型。
本題可按部就班地逐步運算:
fun((int)fun(a+c,b),a-c)
fun((int)fun(10,5),2-8)
fun((int)15.000000,-6)
fun(15,-6)
9
48.D解析:本題中fun函數(shù)實現(xiàn)了字符串函數(shù)strcat的功能,將字符串a(chǎn)a連接到字符串ss的末尾。調(diào)用fun函數(shù)時,形參t和s分別指向了字符串ss和aa,然后通過一個while循環(huán)使t指向字符串ss的結(jié)束符的位置,第二個while循環(huán)將字符串a(chǎn)a中的字符(包括結(jié)束符'\\0')逐個復(fù)制到字符串ss的末尾處。
49.A本題考查高級語言的數(shù)據(jù)類型。其中屬于構(gòu)造類型的主要有結(jié)構(gòu)體類型、聯(lián)合體類型,即共用體類型和數(shù)組類型。
50.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)換成軟件的過程描述。
51.C解析:本題考查的是帶參數(shù)的宏。宏替換與函數(shù)調(diào)用不同,前者是字面上的,在編譯期間完成,后者是內(nèi)容上的,在運行期間才進行。題目中第1條要替換的語句i1=(8)/f(4);展開后是i1=(8*)/(4*4);結(jié)果使i1=4.而第2條語句i2=f(4+4)/f(2+2);展開后為i2=(4+4*4+4)/(2+2*2+2);結(jié)果使i2=24/8=3。故應(yīng)該選擇C。
52.A解析:C語言中[]比*優(yōu)先級高,因此line先與[5]結(jié)合,形成line[5]形式,這是數(shù)組形式,它有5個元素,然后再與line前面的'*'結(jié)合,表示此數(shù)組是一個指針數(shù)組,每個數(shù)組元素都是一個基類型為char的指針變量。
53.B解析:此題考查了函數(shù)指針的概念,函數(shù)指針是定義一個指針指向函數(shù)的入口地址,可用這個指針來調(diào)用函數(shù)。
54.C
55.D
56.D解析:該程序先判斷a[i]<a[p],如果條件為真,則a[i]比當前設(shè)定的最小值小(p保留的當前最小元素的下標),那么將i賦給p,即將比較過的最小元素下標保留在p中,作為下面判斷的標準。
57.B解析:在C中對文件操作必須先打開文件,待文件操作完畢后要關(guān)閉文件。對文件以讀的方式進行打開操作時,同時會執(zhí)行文件的檢查文件是否存在,不存在將會返回空的文件指針,如果對文件以寫的方式打開時,文件不存在,將會自動創(chuàng)建文件,因此在C中打開文件前不必對其檢查文件是否存在,故答案為B。
58.D解析:在這個表達式中,優(yōu)先級最高的是(int)a,也就是對5.5取整,結(jié)果是5,其次是b/b,即2.5/2.5,結(jié)果是1.000000,最后相加結(jié)果為6.000000(表達式的最終結(jié)果為實型),所以4個選項中D正確。
59.A解析:C程序是由函數(shù)構(gòu)成的?!獋€C源程序至少包含—個main函數(shù),也可以包含—個main函數(shù)和若干個其他函數(shù),因此,函數(shù)是C程序的基本單位。
60.D解析:對棧可進行插入和刪除數(shù)據(jù)的操作,但必須牢記插入和刪除數(shù)據(jù)都只能在棧頂,是一種特殊的線性表.所以棧是先進后出的線性表。
61.D
62.B
63.C題中整型指針變量P存放的是變量C的地址。所以本題答案為C。
64.C本題考查的重點還是二維數(shù)組的操作。題目將二維數(shù)組與函數(shù)相結(jié)合,考查了函數(shù)對二維數(shù)組的調(diào)用。程序主體分為兩個部分:主函數(shù)main和函數(shù)fun。main函數(shù)結(jié)構(gòu)較簡單,功能很明確,首先初始化了一個二維數(shù)組,隨后將fun(a,4,0)作為printf函數(shù)的實參輸出。下面分析一下fun函數(shù)的作用,fun函數(shù)包括三個形參,其中一個形參為用指針定義的二維數(shù)組,另外兩個為整型常量n和k。在fun函數(shù)中,先定義了一個整型變量m=s[0][k],表示m為s中第1行第k+1列的數(shù)據(jù)。下面的for循環(huán)是題目的關(guān)鍵,該for循環(huán)的意義是令m為數(shù)組s中k+1列從第1行到第n行的數(shù)據(jù)中最大的數(shù)值。題目中m的初始值為a[0][0],即m=1,從第1行到第4行第1列上的數(shù)值分別為1,11,21,31。最大的數(shù)為31,令m=31,返回m,并將m作為結(jié)果輸出。
65.D
\n程序執(zhí)行在for循環(huán),當i=p時,i中放的是P的地址,類型不符合,因此輸出隨機數(shù),故選擇D進項.
\n
66.A
67.D數(shù)據(jù)定義語言負責數(shù)據(jù)的模式定義和數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言負責數(shù)據(jù)的操縱;數(shù)據(jù)控制語言負責數(shù)據(jù)完整性、安全性的定義與檢查,以及并發(fā)控制、故障恢復(fù)等功能。無“數(shù)據(jù)管理語言”的說法。
68.D
69.A\nA?!窘馕觥款^結(jié)點不僅標識了表中首結(jié)點的位置,而且根據(jù)單鏈表(包含頭結(jié)點)的結(jié)構(gòu),只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結(jié)點的目的是為了便于運算的實現(xiàn)。
\n
70.D本題考查指針變量的賦值。**PP是定義一個指針變量,語句pp=&p是將pp指向指針P,*P和**PP都是指針P所指的內(nèi)存空間的內(nèi)容,即b的值。
71.AA?!窘馕觥拷Y(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、模塊化、限制使用goto語句等。
72.A標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。B選項int不是表達變量類型的標識符,它不能再用做變量名和函數(shù)名。C選項do是C語言的一個關(guān)鍵字。D選項標識符只能以字母或下劃線開始。
73.C
74.B&按位與,如果兩個相應(yīng)的二進制位都為l,則該位的結(jié)果值為1,否則為0。l按位或,兩個相應(yīng)的二1進制位中只要有一個為l,該位的結(jié)果值為l。2的二進制為100000010,4的二進制為00000100,所以做或運算結(jié)果為100000110,該數(shù)與5即00000101做與操作結(jié)果為00000100,1即4。
75.B
76.D
77.A由于內(nèi)層循環(huán)for(k=1;k<3;k++)后面直接跟了空語句“;”,因此在循環(huán)內(nèi)部什么操作也不做,執(zhí)行完內(nèi)層循環(huán)后執(zhí)行打印語句,所以打印了一個“*,’故本題答案A)。
78.A
79.B在定義*p=&r時,是表示r的地址賦給了p所指的存儲單元,因此選項B正確。
80.B
81.(1)錯誤:intave,t=0;
正確:floatave,t=0.0;
(2)錯誤:if(s[i]>ave)
正確:if(s[i]<ave)
(3)錯誤:aver=ave;
正確:*aver=ave;
【解析】由程序可知變量ave和t中分別存放的是學(xué)生的平均分數(shù)和分數(shù)的總和,都是float型數(shù)據(jù),因此“intave,t=0;”應(yīng)改為“floatave,t=0.0;”。題目要求統(tǒng)計出低于平均分數(shù)的學(xué)生人數(shù),因此“if(s[i]>ave)”應(yīng)改為“if(s[i]<ave)”。平均分數(shù)是通過指針變量傳遞給主函數(shù)的,因此“aver=ave;”改為“*aver=ave;”。
82.
【解析】按照題目中的要求,刪除一個字符串中指定下標的字符。首先,將指定下標之前的字符放入字符數(shù)組b中,然后將指定下標之后的字符也放入字符數(shù)組b中,最后為新的字符數(shù)組b添加結(jié)束符。
2021-2022年四川省眉山市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.按照“先進先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
2.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運算符。
A.&B.^C.‖D.~
3.已知廣義表L=((x,y,z),a,(u,t,w)),從L表中取出原子項t的運算是()。
A.head(tail(tail(L)))
B.tail(head(head(tail(L))))
C.head(tail(head(tail(L))))
D.head(tail(head(tail(tail(L)))))
4.以下選項中不屬于c語言的類型的是()。
A.unsignedlongint
B.longshort
C.unsignedint
D.signedshortint
5.
6.下列程序的輸出結(jié)果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112
7.
8.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
9.有以下程序段
#include<stdio.h>
voidfun(char*fname,char*st)
{FILE*myf;
inti;
myf=fopen(fname,"w");
for(i=0;i<strlen(st);i++)fputc(st[i],myf);
fclose(myf);
}
main()
{fun("test.t","newworld");
fun("test.t","hello,");}
程序執(zhí)行后,文件test.t中的內(nèi)容是A.A.hello,
B.newworldhello,
C.newworld
D.hello,rld
10.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。
A.存儲在外存中的數(shù)據(jù)B.數(shù)據(jù)所占的存儲空間量C.數(shù)據(jù)在計算機中的順序存儲方式D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示
11.若有定義“inta;longb;doublex,y;”,則以下選項中正確的表達式是()。
A.a=x<>yB.a%(int)(x-y)C.(a*y)%bD.y=x+y=x
12.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序
13.有三個關(guān)系R,S和T如下:
其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。
A.選擇B.交C.投影D.并
14.若以下選項中的變量全部為整型變量,且已正確定義并賦值,則語法正確的switch語句是()。
A.switch(a+9){casecl:y=a-b;casec2:y=a+b;}
B.switcha*b{casel0:x=a+b;default:y=a-b;}
C.switch(a+b){casel:case3:y=a+b;break;case0:case4:y=a-b;}
D.switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}
15.對于C語言的函數(shù),下列敘述中正確的是()。
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套
B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用都不能嵌套
D.函數(shù)的定義和調(diào)用都可以嵌套
16.下列關(guān)于信息系統(tǒng)的敘述中,錯誤的是()。
A.廣播電視是一種雙向的、點到多點的信息交互系自
B.網(wǎng)絡(luò)聊天是一種雙向的,以信息交互為主要目的系統(tǒng)
C.電話是一種雙向的、點對點的、以信息交互為主要的的系統(tǒng)
D.雷達是一種以感測和識別為主要目的的系統(tǒng)
17.遞歸式的先序遍歷一個n節(jié)點,深度為d的二叉樹,則需要棧空間的大小為()
A.O(logn)B.O(nlogn)C.O(n)D.O(d)
18.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序運行后的輸出結(jié)果是()。A.ZhangB.ZhaoC.WangD.19
19.一個遞歸的定義可以用遞歸過程求解,也可以用非遞歸過程求解,但單從運行時間來看,通常遞歸過程比非遞歸過程()。
A.較快B.較慢C.相同D.無法確定
20.下面程序的輸出是()。A.17B.18C.23D.24
二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{inti;
for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);
printf("\n");
}
22.設(shè)inta=5,b=6,表達式(++a==b--)?++a:--b的值是【】。
23.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。
24.數(shù)據(jù)模型是用來描述數(shù)據(jù)庫的結(jié)構(gòu)和語義的,數(shù)據(jù)模型有概念數(shù)據(jù)模型和結(jié)構(gòu)數(shù)據(jù)模型兩類,E-R模型是【】
25.下列程序執(zhí)行后輸出的結(jié)果是【】。
f(intA)
{staticc=0;
c=a+c++;
return(c);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
26.棧的3種基本運算是:入棧、退棧和______。
27.已定義charch='$';inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為______。
28.下面程序的功能是用來統(tǒng)計文件中字符個數(shù)。請?zhí)羁铡?/p>
#include"stdio.h"
main()
{longcount=OL;
FILE*fp=【】("text.dat","r");
if(fp==0)
{printf("Openerror\n");
exit(0);
}
while(【】)
{
fgetc(fp);
count++;
}
fclise(fp);
printf("%1d\n",count);
}
29.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{intn,s;
printf("Enteranumber:");scanf("%d",&n);
printf("Output:");
do
{s=n%10;printf("%d",s);【】;
}while(n!=0);
printf("\n");
}
30.對于圖書管理數(shù)據(jù)庫,將圖書表中"人民郵電出版社"的圖書的單價漲價5%。請對下面的SQL語句填空:UPDATE圖書【】WHERE出版單位="人民郵電出版社"
31.設(shè)某循環(huán)隊列的容量為50,頭指針front=5(指向隊頭元素的前一位置),尾指針rear=29(指向隊尾元素),則該循環(huán)隊列中共有【】個元素。
32.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下:
1
11
121
1331
14641
其構(gòu)成規(guī)律是,第0列元素和主對角線元素均為1,其余元素為其左上方和正上方元素之和,數(shù)據(jù)的個數(shù)每行遞增1。請將程序補充完整。
#defintN6
voidYangHui(int*[N][N])
{
inti,j;
x[0][0]=1
for(i=1;i<N;i++)
{
x[i][0]=【】=1
for(j=1;j<i;j++)
x[i][j]=【】;
}
}
33.已定義charch=′$′;inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為【】。
34.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。
35.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、______和處理過程。
36.設(shè)有如下程序main(){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(“%d”,n1);}}程序運行后,如果從鍵盤上輸入1298,則輸出結(jié)果為
37.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。
structdate
{intday;
intmouth;
intyear;
union{intshare1;
floatshare2;
}share;
}a;
38.用以下程序把從鍵盤輸入的字符存放到一個文件中,用字符#作為結(jié)束符,請按題意要求填空完善程序。
#include<stdio.h>
main()
{FILE*fp;
charch,fname[10];
printf("Inputthenameoffile\n");
gets(fname);
if(fp=fopen(【】))==NULL)
{printf("can'topen\n");
【】;
}
while((ch=getchar())!='#')
fputc(【】);
fclose(fp);
}
39.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
40.有以下程序:
intf(intn)
{if(n==1)retum1;
elsereturnf(n-1)+1;}
main()
{inti,j=0;
for(i=1;i<3;i++)j+=f(i);
printf("%d\n",j);
}
程序運行后的輸出結(jié)果是【】。
三、1.選擇題(20題)41.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。
A.p=1;B.*q=2;C.q=p;D.*p=5;
42.下面程序的輸出結(jié)果為______。#include<string.h>main(){charp1[7]="abc",p2[]="ABC",str[50]="xyz";strcpy(str,strcat(p1,p2));printf("%s",str);}
A.xyzabcABCB.abcABCC.xyzabcD.xyzABC
43.若有說明chars1[30]="abc",s2[]="defghi";,則在使用函數(shù)strcat(s1,s2)后,結(jié)果是()。
A.s1的內(nèi)容更新為abcdefghi
B.s1的內(nèi)容更新為defghi\0
C.s1的內(nèi)容更新為defghiabc\0
D.s1的內(nèi)容更新為abcdefghi\0
44.整型變量x和y的值相等,且為非。值,則以下選項中,結(jié)果為0的表達式是()
A.x||yB.x|yC.x&yD.xy
45.下面各語句行中,能正確地給字符串賦值的語句行是()。
A.charst[4]={"ABCDE"};
B.chars[5]={'A','B','C','D','E'};
C.char*s="ABCDE";
D.char*s;scanf("%s",*s);
46.下列關(guān)系運算中,能使經(jīng)運算后得到的新關(guān)系中屬性個數(shù)多于原來關(guān)系中屬性個數(shù)的是()。
A.選擇B.連接C.投影D.并
47.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序運行后的輸出結(jié)果是
A.編譯出錯B.9C.21D.9
48.有以下程序
#include<stdio.h>
voidfun(char*t,char*s)
{while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{charss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);printf("%s,%s\n",ss,aa);
}
程序的運行結(jié)果是
A.accxyy,bbxxyy
B.acc,bbxxyy
C.accxxyy,bbxxyy
D.accbbxxyy,bbxxyy
49.下列各數(shù)據(jù)類型不屬于構(gòu)造類型的是()。
A.枚舉型B.共用型C.結(jié)構(gòu)型D.數(shù)組型
50.軟件設(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ā)過程
51.有以下程序#definef(x)(x'x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序運行后的輸出結(jié)果是
A.64,28B.4,4C.4,3D.64,64
52.若有語句:char*line[5];,以下敘述中正確的是
A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為char為指針變量
B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組
C.定義line是一個指針數(shù)組,語句中的*號稱為間址運算符
D.定義line是一個指向字符型函數(shù)的指針
53.已有定義int(*p)(),指針p可以
A.代表函數(shù)的返回值B.指向函數(shù)的入口地址C.表示函數(shù)的類型D.表示函數(shù)返回值的類型
54.下列程序的輸出結(jié)果是______。main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}
A.0B.0.25C.0.5D.1
55.在C語言中提供的合法的關(guān)鍵字是______。
A.swicthB.cherC.CaseD.default
56.以下函數(shù)返回a所指數(shù)組中最小的值所在的下標值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在橫線處應(yīng)填入的是______。
A.i=pB.a[p]=a[i]C.p=jD.p=i
57.下述關(guān)于C語言文件的操作的結(jié)論中,正確的是______。
A.對文件操作必須先關(guān)閉文件
B.對文件操作必須先打開文件
C.對文件操作順序無要求
D.對文件操作前必須先測文件是否存在,然后再打開文件
58.設(shè)a和b均為雙精度型變量,且a=5.5、b=2.5,則表達式(int)a+b/b的值是()。
A.6.5B.6C.5.5D.6
59.______是構(gòu)成C語言程序的基本單位。
A.函數(shù)B.過程C.子程序D.子例程
60.下列關(guān)于棧的敘述中正確的是
A.在棧中只能插入數(shù)據(jù)B.在棧中只能刪除數(shù)據(jù)C.棧足先進先出的線性表D.棧是先進后出的線性表
四、選擇題(20題)61.有三個關(guān)系R,S和T如下:
其中關(guān)系T由關(guān)系R和S通過某種操作得到,該操作為()。A.選擇B.投影C.交D.并
62.
63.若在定義語句:inta,b,c,*p=&c;之后,接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是()。A.A.scanf("%d",a,b,c);B.scanf("%d%d%d",a,b,c):
C.scanf("%d",p);
D.scanf("%d",&p);
64.有以下程序
#include<stdio.h>
intfun(int(*s)[4],intn,intk)
{intm,i;
m=s[0][k];
for(i=l;i<n;i++)
if(s[i][k]>m)m=s[i][k];
returnm;
}
main()
{inta[4][4]={{1,2,3,4},{11,12,13,14},{2l,22,23,24},{31,32,33,34}};
printf("%d\n",fun(a,4,0));
}
程序的運行結(jié)果是
A.4B.34
C.31D.32
65.
下列程序執(zhí)行后的輸出結(jié)果是()。
main
{inta[3][3],*p,i};
p=&a[0][0];
for(i=p;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A.3B.6C.9D.隨機數(shù)
66.
67.數(shù)據(jù)庫管理系統(tǒng)中負責數(shù)據(jù)完整性、安全性定義的語言是()。
A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言
68.
69.在單鏈表中,增加頭結(jié)點的目的是______。
A.方便運算的實現(xiàn)B.使單鏈表至少有一個結(jié)點C.標識表結(jié)點中首結(jié)點的位置D.說明單鏈表是線性表的鏈式存儲實現(xiàn)
70.若有定義和語句:
int*(*pp),*P,a=20,b=10;
pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);
則輸出結(jié)果是()。A.A.20,10B.20,20C.10,20D.10,10
71.下列選項中不屬于結(jié)構(gòu)化程序設(shè)計原則的是()。
A.可封裝B.自頂向下C.模塊化D.逐步求精
72.下列合法的聲明語句是()。
A.intabc=50;
B.doubleint=3+5e2.5;
C.longdo=1L;
D.float3asd=3e一3;
73.
74.有以下程序:
程序運行后的輸出結(jié)果是()。
A.3B.4C.5D.6
75.
76.
77.以下程序段中的變量已正確定義
78.
79.若有以下定義和語句:“doubler=99,*p=&r;*P=r;”,則以下正確的敘述是()。
A.兩個*p含義相同,都說明給指針變量p賦值
B.在“doubler=99,*p=&r;”中,把r的地址賦值給了P所指的存儲單元
C.語句“*p=r;”把變量r的值賦給指針變量P
D.語句“*p=r;”取變量r的值放回r中
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從m個學(xué)生的成績中統(tǒng)計出低于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如,輸入8名學(xué)生的成績:6070809065758595則低于平均分的學(xué)生人數(shù)為4(平均分為77.5)。實際輸入時學(xué)生數(shù)以“Enter”鍵作為結(jié)束,成績與成績之間也與Enter鍵作為分隔。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)voidproc(chara[],charbE3,intn),其功能是:刪除一個字符串中指定下標的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標。例如,輸入一個字符串student,然后輸入5,則調(diào)用該函數(shù)后的結(jié)果為studet。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進先出”的原則組織數(shù)據(jù)的。
【知識拓展】“隊列”和“?!倍际且环N特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進先出,后進后出。
2.B按邏輯位運算特點:①用按位與運算將特定位清為0或保留特定位;②用按位或運算將特定的位置為1;③用按位異或運算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。
3.D
4.Bc語言中整型變量分為4種,基本型int,短整型shortint,長整型longint和無符號型(unsignedint、un-signedshort、unsignedlong)。因此B)選項不屬于c語言的類型。
5.A
6.C當執(zhí)行fun函數(shù)時,因為參數(shù)傳遞時是地址傳遞,因此形參值的改變會影響實參中的數(shù),在執(zhí)行fun函數(shù)時先輸出12,接著把*X賦3,*y賦4,此時帶回主函數(shù)中,輸出的值為34。
7.C
8.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。
9.D本題主要考查文件的操作。在本題的程序中,首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個指針類型的形參,其中第一個形參指向需要被操作文件的文件名,而第二個形參指向被操作的字符串。在函數(shù)體中,首先定義一個文件指針,然后以只寫的方式打開第一個形參所指向的文件,接著執(zhí)行for循環(huán),循環(huán)結(jié)束的條件是循環(huán)變量小于被操作字符串的長度,循環(huán)體中的程序fputc(st[i],myf);的功能是將字符串中的當前字符輸入到文件中。由這些分析我們可以知道,函數(shù)fun的作用是將字符串的內(nèi)容寫入到文件中。
在主函數(shù)中,兩次調(diào)用函數(shù)fun,當?shù)谝淮握{(diào)用時,寫入文件的內(nèi)容為newworld,然后第二次調(diào)用函數(shù),此時打開文件,文件的指針重新回到開始,然后往文件中寫內(nèi)容“hello,”,由于此時文件中已經(jīng)有內(nèi)容“newworld”,則需要覆蓋前面一部分的內(nèi)容,因此,程序的最終輸出結(jié)果是hello,rld,本題的正確答案選D。
10.D數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)則是數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的物理實現(xiàn),有時也稱作數(shù)據(jù)的物理結(jié)構(gòu)。兩者的區(qū)別是數(shù)據(jù)的邏輯結(jié)構(gòu)只涉及到數(shù)據(jù)之間抽象的數(shù)學(xué)關(guān)系。存儲結(jié)構(gòu)則涉及到如何在計算機中通過對數(shù)據(jù)的物理存儲進行組織來表達數(shù)據(jù)元素之間的邏輯關(guān)系。比如在線性表的順序存儲中是利用物理存儲空間上的連續(xù)性來表達線性表中數(shù)據(jù)的前后件關(guān)系;在線性表的鏈式存儲中是通過指針域構(gòu)成的邏輯鏈條來表達數(shù)據(jù)的前后件關(guān)系。一般的,一種數(shù)據(jù)的邏輯結(jié)構(gòu)對應(yīng)的物理實現(xiàn),即數(shù)據(jù)的存儲結(jié)構(gòu)不止一種。因此選項D正確。
11.BC語言中沒有“<>”運算符,所以A選項錯誤。運算符“%”的左右兩個操作數(shù)必須為整型數(shù)據(jù),所以B選項正確。表達式“a*y”的結(jié)果為double型,所以C選項錯誤。不能將值賦給像“x+y”這樣的表達式,所以D選項錯誤。故本題答案為B選項。
12.A解析:以下幾種算法的時間復(fù)雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當排序元素序列基本有序的情況下,冒泡排序的交換次數(shù)為0,只是順序掃描數(shù)據(jù)而已,所以其效率是最高的。
13.D\n兩個相同結(jié)構(gòu)關(guān)系的并是由屬于這兩個關(guān)系的元組組成的集合。
\n
14.D選項A,當cl和c2相等時,不成立;選項B,a*b要用括號括起來;選項C,case與后面的數(shù)字用空格隔開。
15.A
16.A廣播/電視是一種單向的、點對多點(面)的以信息傳遞為主要目的的系統(tǒng)。
17.D
18.Bfun(x+2)表示的是結(jié)構(gòu)體數(shù)組中的第3個元素即{03,"Zhao",l8),而輸出的是name元素,所以答案為B。
19.B
20.B
21.ACEACE解析:在本題中,for循環(huán)體每執(zhí)行完一次,變量i的值自加兩次。i的初值為\'a\',執(zhí)行一次循環(huán)后變?yōu)閈'c\',之后再變成\'e\',當其變?yōu)閈'g\'時,循環(huán)條件若不滿足,循環(huán)終止,故本題共輸出3個字符。表達式'i-\'a\'+\ue008\'A\'\ue009'即表示輸出i對應(yīng)的大寫字母,結(jié)果為ACE。
22.77解析:此表達式為三目運算符,++a的值為6,b--的值為6,則整個表達式的值為++a的值,++a的值為7。請注意前綴++,--和后綴++,--的區(qū)別。
23.存儲結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運算。
24.概念數(shù)據(jù)模型概念數(shù)據(jù)模型
25.77解析:在程序執(zhí)行時,static變量僅初始化一次,下次使用時將使用上次保存的值。
26.讀棧頂元素讀棧頂元素解析:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉庫用品合同范本
- 企業(yè)商品采購合同范本
- 亞馬遜店鋪租賃合同范本
- 企業(yè)銷售用工合同范本
- 勞動合同范本6
- 入駐農(nóng)莊合同范例
- 農(nóng)田服務(wù)采購合同范本
- 第15課 隨光奏樂-光敏傳感器和自定義模塊的應(yīng)用 教學(xué)設(shè)計-2023--2024學(xué)年清華大學(xué)版(2012)初中信息技術(shù)九年級下冊
- 2025年汽車液力變矩器項目申請報告
- 2025年無機非金屬材料項目規(guī)劃申請報告模范
- 學(xué)前兒童游戲智慧樹知到期末考試答案章節(jié)答案2024年麗水學(xué)院
- ERP原理及應(yīng)用教程(第四版)全套教學(xué)課件
- 2024年高考改革新方案
- 學(xué)前教育考題及答案
- 第三單元簡易方程(二)(知識精講+典題精練)-2023-2024學(xué)年五年級下冊數(shù)學(xué)高頻考點重難點講義(滬教版)
- 建筑施工現(xiàn)場環(huán)境保護與治理培訓(xùn)
- 第1課《我們的閑暇時光》教學(xué)設(shè)計
- 《中國傳統(tǒng)民歌欣賞》課件
- 模塊1鐵道線路養(yǎng)護與維修認知《鐵道線路養(yǎng)護與維修》教學(xué)課件
- 高鐵無砟軌道精調(diào)精測課件
- 2024年企業(yè)規(guī)章制度修訂方案
評論
0/150
提交評論