版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021-2022年云南省麗江市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(20題)1.下面程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}
A.-1B.1C.8D.0
2.下列敘述中正確的是A.C語言中既有邏輯類型也有集合類型
B.C語言中沒有邏輯類型但有集合類型
C.C語言中有邏輯類型但沒有集合類型
D.C語言中既沒有邏輯類型也沒有集合類型
3.當(dāng)執(zhí)行以下程序段時(shí),()。x=-l:do{x=x*X;)while(!x);A.循環(huán)體將執(zhí)行一次B.循環(huán)體將執(zhí)行兩次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯(cuò)誤
4.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時(shí),輸出的結(jié)果是()。A.-1B.1C.4D.0
5.以下選項(xiàng)中不合法的標(biāo)識(shí)符是()。
A.&aB.FORC.printD._00
6.下列變量聲明合法的是()。
A.shorta=1.4e-1;
B.doubleb=1+3e2.8;
C.longdo=OxfdaL;
D.float2
7.在下列語句中,其含義為“q是一個(gè)函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。
A.int**q;B.int(*q);C.int*q;D.int*q;
8.對(duì)初始狀態(tài)為遞增序列的數(shù)組按遞增順序排序,最省時(shí)間的是插入排序算法,最費(fèi)時(shí)間的算法是()
A.堆排序B.快速排序C.插入排序D.歸并排序
9.
10.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是()。
A.1B..0C.6D.2
11.
12.下面程序段的運(yùn)行結(jié)果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));
A.8B.12C.4D.7
13.若變量已正確定義,要求程序段完成5!的計(jì)算,不能完成此操作的程序段是______。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5);
14.請(qǐng)閱讀以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的輸出是
A.34756B.23445C.35745D.12345
15.
16.算法的空間復(fù)雜度是指()。
A.算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲(chǔ)空間
B.算法所處理的數(shù)據(jù)量
C.算法程序中的語句或指令條數(shù)
D.算法在執(zhí)行過程中所需要的臨時(shí)工作單元數(shù)
17.
18.有以下程序(說明:字母A的ASCIl碼值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A.BYB.BTC.YTD.YE
19.下面關(guān)于B樹和B+樹的敘述中,不正確的結(jié)論是()。
A.B樹和B+樹都能有效的支持順序查找
B.B樹和B+樹都能有效的支持隨機(jī)查找
C.B樹和B+樹都是平衡的多叉樹
D.B樹和B+樹都可用于文件索引結(jié)構(gòu)
20.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.1256B.5634C.5612D.3456
二、2.填空題(20題)21.設(shè)有以下程序,為使之正確運(yùn)行,請(qǐng)?jiān)跈M線中填入應(yīng)包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)
______
main()
{printf("\n");
try_me();
printf("\n");}
22.在鏈表的運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是______。
23.與二維表中的“行”的概念最接近的概念是()。
24.下列程序執(zhí)行后輸出的結(jié)果是【】。
main()
{intarr[10],i,k=0);
fot(i=0;i<10;i++)art[i]=i;
for(i=1:i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
25.二分法查找僅限于這樣的表:表中的數(shù)據(jù)元素必須有序,其存儲(chǔ)結(jié)構(gòu)必須是______。
26.為了便于對(duì)照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組成。
27.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。
28.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的______的集合。
29.以下程序的輸出結(jié)果是()。
#include<stdio.h>
fun()
{inta=0;
a+=3;
printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<=4;cc++)
fun();
printf("\n");
}
30.對(duì)一組記錄{54,38,96,23,15,72,60,45,83}進(jìn)行直接插入排序時(shí),當(dāng)插入第5個(gè)記錄到有序表時(shí),尋找插入位置需比較【】次。
31.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<;y++)
z=(*(ptr+y)<x?*(ptr+y);x;
printf("%d\n",z);
}
32.問題處理方案的正確而完整的描述稱為______。
33.最簡單的交換排序方法是______。
34.理解下面的程序,填空完善程序。
main()
{inta,b,c;
scanf("%d%d",【】);
c=【】(a,b);
printf("a=%db=%dmax=%d\n",a,b,c);
}
intmax(x,y)
【】;
{intz;
if(x>y)z=x;
elsez=y(tǒng);
【】;
}
35.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。
#include"stdio.h"
main()
{intx,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
elseprintf("%d",y);
printf("%d\n",z);}
36.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對(duì)數(shù)據(jù)的操作運(yùn)算。
37.若有以下定義和語句:
intw[10]={23,54,10,33,47,98,72,80,61},*p;
p=w;
則通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。
38.設(shè)有以下定義和語句,sizeof(a)的值是【】,sizeof(b)的值是【】。
struct{intday;Charmonth;intyear;}a,*b;
b=&a;
39.下列程序的運(yùn)行結(jié)果是______。
#definePOWER(x)((x)*(x))
main()
{inti=1;
primtf("%d,%d",POWER(i++),i);
}
40.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)中,常用的描述工具是【】。
三、1.選擇題(20題)41.下列選項(xiàng)中,不屬于模塊間耦合的是()
A.內(nèi)容耦合B.異構(gòu)耦合C.控制耦合D.數(shù)據(jù)耦合
42.在16位IBM-PC機(jī)上使用C語言,若有如下定義:stmctdata{inti;charch;doublef;}b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是()。
A.1B.2C.7D.11
43.以下程序的輸出結(jié)果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}
A.12B.23C.14D.32
44.執(zhí)行以下程序段的輸出結(jié)果是()。intm=0x12,n=0x12;m=m-n;printf("%X\n",m);
A.0X0B.0X12C.0x0D.0
45.在下述程序中,判斷i>j共執(zhí)行的次數(shù)是()。main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}
A.4B.7C.5D.6
46.有以下程序
#include<stdio.h>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序運(yùn)行后,若從鍵盤輸入(從第1列開始)
123<回車>
45678<回車>
則輸出結(jié)果是
A.1267B.1256C.1278D.1245
47.用樹形結(jié)構(gòu)來表示實(shí)體之間聯(lián)系的模型稱為()。
A.關(guān)系模型B.層次模型C.網(wǎng)狀模型D.數(shù)據(jù)模型
48.下面程序在屏幕上的輸出是______。main(){printf(“ab\b\bc”);}A.ab\b\bcB.acC.abcD.abc
49.有以下程序:#iaclude<stdio.h>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);}程序運(yùn)行后的輸出結(jié)果是()。
A.42B.45C.56D.60
50.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inti=1,j=3;printf("%d,",i++);{inti=0;i+=j*2;printf("%d,%d,",i,j);}printf("%d,%d\n",i,j);}
A.1,6,3,1,3B.1,6,3,2,3C.1,6,3,6,3D.1,7,3,2,3
51.以下程序的輸出結(jié)是_______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf(%d",a);}
A.200100B.100100C.100200D.200200
52.請(qǐng)讀程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);上面程序的輸出結(jié)果是()。
A.11B.20C.21D.31
53.以下程序運(yùn)行后,輸出結(jié)果是()#include<stdio.h>#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f\n",s(a+b));}
A.49.5B.9.5C.22D.45
54.假定w、x、y、m均為int型變量,則執(zhí)行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;
A.3B.4C.5D.6
55.以下程序運(yùn)行后的輸出結(jié)果是()main(){chars[]="1234",*ps;for(ps=s;ps<s+3;ps++)printf("%c",ps);printf("\n");}
A.123B.112123C.1234D.亂碼
56.現(xiàn)有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(k[i]){if(k[i]%2==0||k[i]%5==0)count++;i++;}printf("%d,%d\n",count,i);}則程序段的輸出結(jié)果為
A.7,8B.8,8C.7,10D.8,10
57.以下不是面向?qū)ο笏枷胫械闹饕卣鞯氖?/p>
A.多態(tài)B.繼承C.封裝D.垃圾回收
58.下列關(guān)于switch語句和break語句的結(jié)論中,只有()是正確的。
A.break語句是switch語句中的一部分
B.在switch語句中根據(jù)需要使用或不使用break語句
C.在switch語句中必須使用break語句
D.以上三個(gè)結(jié)論中有兩個(gè)是正確的
59.產(chǎn)生軟件危機(jī)的原因是:一方面與軟件生產(chǎn)本身的復(fù)雜性有關(guān);另一方面,和______的方法不正確有關(guān)。
A.軟件的使用B.軟件的成本C.軟件的開發(fā)和維護(hù)D.軟件的文檔資料
60.閱讀如下程序段
#include"stdio.h"
voidfc(FILE*);
main(intargc,char*argv[])
{FILE*fp;
inti=1;
while(--argc>0)
{fp=fopen(argv[i++],"r");
fc(fp);
fclose(fp);}}
voidfc(FILE*p)
{charc;
while((c=getc(p))!='#')
putchar(c-32);}
這個(gè)程序段編譯、連接以后生成可執(zhí)行文件50.exe,假定磁盤當(dāng)前目錄下有3個(gè)文本文件,其文件名和內(nèi)容分別為:
文件名內(nèi)容
k1.txtchina#
k2.txtese#
k3.txtyear#
四、選擇題(20題)61.
62.軟件生命周期是指()。
A.軟件的開發(fā)過程
B.軟件的運(yùn)行維護(hù)過程
C.軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程
D.軟件從需求分析、設(shè)計(jì)、實(shí)現(xiàn)到測試完成的過程
63.下列描述中正確的是()。
A.軟件工程只是解決軟件項(xiàng)目的管理問題
B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題
C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則
D.軟件工程只是解決軟件開發(fā)中的技術(shù)問題
64.
65.以下與存儲(chǔ)類別有關(guān)的四組說明符中,全部屬于靜態(tài)類的一組是()。
A.extem和static
B.auto和static
C.register和static
D.register和ex[erll
66.定義無符號(hào)整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。
A.-369B.369C.0.369D.整數(shù)集合11,2,3,4,51
67.
68.
69.
70.現(xiàn)有定義inta;doubleb;floatc;chark;,則表達(dá)式a/b+C—k值的類型為:()。
A.intB.doubleC.floatD.char
71.若有定義語句:A.1B.1.9C.2D.2.4
72.
73.若變量a、i已正確定義,且i已正確賦值,合法的語句是()。
A.a==lB.++iC.a=a++=5D.a=int(i)
74.若有定義inta[9],+P=a;,則P+5表示()。
A.數(shù)組元素a[5]的值B.數(shù)組元素a[5]的地址C.數(shù)組元素a[6]的地址D.數(shù)組元素a[0]的值加上5
75.若有說明:inta[3][4]={0};,則下面正確的敘述是
A.只初始化了第一個(gè)元素,即a[0][0]可得到初值0
B.此初始化語句不正確
C.?dāng)?shù)組a中各元素都可得到初值,但其值不一定為0
D.?dāng)?shù)組a中每個(gè)元素均可得到初值0
76.有以下程序:
#include<stdio.h>
main()
{FILE*fp;inti,a[6]={1,2,3,4,5,6};
fp=fopen("d2.dat","w+");
for=(i=o;i<6;,i++)fpintf(fp,"%d\n",a[i]);
rewind(fp);
for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);
fclose(fp);
for(i=0;i%6;i++)printf("%d,",a[i]);
}
程序運(yùn)行后的輸出結(jié)果是()。
A.4,5,6,1,2,3,
B.1,2,3,3,2,1,
C.1,2,3,4,5,6,
D.6,5,4,3,2,1,
77.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄
B.數(shù)據(jù)行
C.數(shù)據(jù)塊
D.字符(字節(jié))序列
78.以下程序愛中,與語句:
79.結(jié)構(gòu)化程序設(shè)計(jì)的3種結(jié)構(gòu)是()。
A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B.分支結(jié)構(gòu)、等價(jià)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價(jià)結(jié)構(gòu)
D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
80.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲(chǔ)空間D.算法執(zhí)行過程中所需要的存儲(chǔ)空間
五、程序改錯(cuò)題(1題)81.下列給定的程序中,proc()函數(shù)的功能是:將str所指字符串中每個(gè)單詞的最后一個(gè)字母改成大寫(這里的“單詞”是指有空格隔開的字符串)。
例如,若輸人:Howdoyoudo,則輸出:HoWdOyoUd0。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計(jì)題(1題)82.請(qǐng)編一個(gè)函數(shù)fun(ohlr*str),該函數(shù)的功能是把字符串中的內(nèi)容逆置。
例如,字符串中原有的字符串為asdf9,則調(diào)用該函數(shù)后,串中的內(nèi)容為9fdsa。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填人所編寫的若干語句。
試題程序:
#include<string.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidfun(char*str)
{
}
voidmain
{
chara[N];
FILE*out:
printf("Enterastring:");
gets(a);
printf("Theorigiralstringis:");
puts(a);
fun(a):
printf("Thestringaftermodified:");
puts(a);
strcpy(a,"Welcome!");
fun(a);
ut=fopen("outfile.dat","w");
fprintf(out,"%s".a(chǎn));
fclose(out);
}
參考答案
1.D解析:本題考查“++”和“--”運(yùn)算符,運(yùn)算符“++”是操作數(shù)加1,而“--”則是操作數(shù)減1。在do-while循環(huán)中,首先執(zhí)行y--,再執(zhí)行--y。當(dāng)y=2時(shí),執(zhí)行y--,y的值變?yōu)?,--y使y值變?yōu)?,循環(huán)結(jié)束。執(zhí)行輸出時(shí),先輸出y的值0,然后執(zhí)行y--,使y的值變?yōu)?1。
2.D解析:在C語言中沒有邏輯類型,邏輯類型用整型來表示,故選項(xiàng)A和選項(xiàng)C不正確,C語言中沒有集合類型,故選項(xiàng)B不正確。所以,D選項(xiàng)為所選。
3.Ado-wlfile的功能是先執(zhí)行一次循環(huán)體,再判斷條件是否成立,當(dāng)x=-1時(shí),執(zhí)行do語句,x=x*x=1,接著執(zhí)行while后的表達(dá)式,其值為0,退出循環(huán),因此循環(huán)體只執(zhí)行了一次。
4.A本題考查do-while循環(huán)。當(dāng)--y是0(即y是o)時(shí)結(jié)束循環(huán),輸出--y,先將y的值減1再輸出Y的值。
5.AC語言的標(biāo)識(shí)符由字母、數(shù)字、下劃線組成,且第1個(gè)字符必須是字母或下劃線。另外,關(guān)鍵字不能作為標(biāo)識(shí)符。因?yàn)镃語言中區(qū)分大小寫,所以B選項(xiàng)中的“FOR”可以作為標(biāo)識(shí)符來用。A選項(xiàng)中含有非法字符“&”,所以其不合法。故本題答案為A選項(xiàng)。
6.A解析:解答本題需了解3個(gè)知識(shí)點(diǎn):①標(biāo)識(shí)符是由字母、數(shù)字或下劃線組成,并且它的第一個(gè)字符必須是字母或者下劃線;②do是C語言中的一個(gè)關(guān)鍵字,不能再用做變量名和函數(shù)名;③C語言規(guī)定,指數(shù)形式的實(shí)型常量e或E后面的指數(shù)必須是整數(shù)。
7.B本題考查指針函數(shù)。其定義的基本格式為:類型說明符(*函數(shù)名)。“類型說明符”表示返回的指針值指向的數(shù)據(jù)類型。
8.B
9.B
10.C
11.B
12.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個(gè)字符串,然后將指針變量p加3,即使其指向字符串的第四個(gè)元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個(gè)十進(jìn)制數(shù)的整型數(shù)值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數(shù)和strcpy函數(shù)的作用。
strcpy的調(diào)用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復(fù)制到目的地址中,這種復(fù)制將覆蓋原來的字符串。strcat函數(shù)的功能是將源地址的字符串復(fù)制到目的地址字符串的后面。
strlen的調(diào)用格式是:strlen(字符串地址),其功能是返回字符串中字符的個(gè)數(shù)。
那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個(gè)數(shù)為4,那么執(zhí)行strlen后,程序最終輸出的結(jié)果是4。因此本題正確的答案是C。
13.B解析:選項(xiàng)B中每次執(zhí)行循環(huán)體都要執(zhí)行p=1,無法保存上次的運(yùn)算結(jié)果,執(zhí)行完while循環(huán)后p=5。
14.C解析:本題考查了通過數(shù)組首地址引用數(shù)組元素的方法。第一次執(zhí)行fun(a)后,a[0]=3,a[1]=5。第二次執(zhí)行fun(a)時(shí),因?yàn)閟tatic變量j保存著上次執(zhí)行時(shí)的值為2,所以a[2]=7,最后數(shù)組a={3,5,7,4,5},所以正確答案為C)。
15.A
16.A算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A項(xiàng)。
17.B
18.Dfun函數(shù)的意思是當(dāng)*s%2==0的時(shí)候就輸出并且s自加l次,然后判斷。所以可知只有第2和第4個(gè)位置上的才符合要求,所以答案為D。
19.A
20.BFunl是輸出局部變量的值,fun2是把全局變量的值改成3和4,所以輸出的結(jié)果是5634。
21.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數(shù)的存儲(chǔ)分類的概念。如果沒有特別說明,函數(shù)的存儲(chǔ)范圍是從定義函數(shù)的位置到文件的結(jié)尾,如果其他文件想使用這個(gè)函數(shù),需要用ginclude文件包含命令將定義函數(shù)的文件包含進(jìn)來。
22.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個(gè)頭結(jié)點(diǎn),因此在任何情況下,循環(huán)鏈表中至少有一個(gè)結(jié)點(diǎn)存在,從而使空表與非空表的運(yùn)算統(tǒng)一。
23.元組元組解析:在關(guān)系模型中,數(shù)據(jù)結(jié)構(gòu)用單一的二維表結(jié)構(gòu)來表示實(shí)體及實(shí)體間的聯(lián)系。一個(gè)關(guān)系對(duì)應(yīng)一個(gè)二維表。二維表中的列稱為屬性,屬性值的取值范圍稱為值域。二維表中的一行稱為一個(gè)元組。
24.1212解析:本題的第一個(gè)for循環(huán)用于給數(shù)組arr賦初值,第二個(gè)for循環(huán)用于求和運(yùn)算。由于第二個(gè)for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。
25.順序存儲(chǔ)(順序方式存儲(chǔ))順序存儲(chǔ)(順序方式存儲(chǔ))解析:二分法查找對(duì)表的要求是有序的順序表,即第一要求是數(shù)據(jù)元素有序,第二要求是按順序方式存儲(chǔ)。
26.輸出結(jié)果輸出結(jié)果解析:注意:測試的基本方法和步驟。
27.00解析:已知a=10,b=20,所以邏輯表達(dá)式a<b的值為true,即為1,在這個(gè)表達(dá)式前面有一個(gè)邏輯運(yùn)算符!,表示反操作,所以整個(gè)語句的值應(yīng)當(dāng)為false,即為0。
28.軟件工具軟件工具解析:軟件開發(fā)環(huán)境是各類軟件開發(fā)工具的集合體。
29.33333333解析:本題考查for循環(huán),for(cc=1;cc<=4;cc++)表示循環(huán)4次,a+=3表示每次a的值增加3,但是子函數(shù)中沒有將變量a定義為static類型,所以每次調(diào)用完子函數(shù)之后,變量a所做的改變都不能保存,這樣在下一次調(diào)用子函數(shù)時(shí),a的初值仍是0,所以不管調(diào)用多少次,子函數(shù)輸出始終是3。
30.11解析:直接插入排序是在已排好序的序列中用順序查找法查找插入位置。第5個(gè)記錄是15,15和23比較,就知道15應(yīng)放在原23放的位置,23及其以后的記錄后移。
31.66解析:條件運(yùn)算符的優(yōu)選級(jí)高于賦值運(yùn)算符,因此本題先計(jì)算關(guān)系表達(dá)式(*ptr+y)<x)*(ptr+y):x的值,再賦給變量z。當(dāng)y=0時(shí),*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=2,所以z=2;當(dāng)y=1時(shí),*(ptr+y)=4,(*ptr+y)<x)條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=4,所以z=4:當(dāng)y=2時(shí),*(ptr+y)=6,(*(ptr+y)<x條件為真,則整個(gè)條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。
32.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。
33.冒泡排序冒泡排序解析:交換排序是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通過相鄰元素之間的相互交換逐步將線性表變成有序。
34.&a&bmaxintxyreturn(z)
35.33解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因?yàn)閤不大于y,所以執(zhí)行printf('%d\\n',z);語句。
36.存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個(gè)方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)及對(duì)數(shù)據(jù)的操作運(yùn)算。
37.*(p+5)
38.52
39.111,1解析:POWER(i++)中先引用i的值1,再將i的值加1,POWER(i++)=1*1=1。
40.E-R圖E-R圖解析:E-R圖是設(shè)計(jì)概念模型的有力工具。
41.B\nB)【解析】耦合可以分為下列幾種,它們之間的耦合度由高到低排列:
\n內(nèi)容耦合——若一個(gè)模塊直接訪問另一模塊的內(nèi)容,則這兩個(gè)模塊稱為內(nèi)容耦合。
\n公共耦合——若一組模塊都訪問同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),則稱為公共耦合。
\n外部耦合——若一組模塊都訪問同一全局?jǐn)?shù)據(jù)項(xiàng),則稱為外部耦合
\n控制耦合——若一模塊明顯地把開關(guān)量、名字等信息送入另一模塊控制另一模塊的功能,則稱為控制耦合。
\n標(biāo)記耦合——若兩個(gè)以上的模塊都需要其余某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)時(shí),不使用其余全局變量的方式而全使用記錄傳遞的方式,這樣的耦合稱為標(biāo)記耦合。
\n數(shù)據(jù)耦合——若一個(gè)模塊訪問另一個(gè)模塊,被訪問模塊的輸入和輸出都是數(shù)據(jù)項(xiàng)參數(shù),則這兩個(gè)模塊為數(shù)據(jù)耦合。
\n直接耦合——若兩個(gè)模塊沒有直接關(guān)系,它們之間的聯(lián)系完全是通過程序的控制和調(diào)用來實(shí)現(xiàn)的,則稱這兩個(gè)模塊為非直接耦合,這樣的耦合獨(dú)立性最強(qiáng)。
\n
42.D解析:結(jié)構(gòu)體變量所占用內(nèi)存的字節(jié)數(shù)是其所有成員所占用內(nèi)存字節(jié)數(shù)之和。本題中整型變量i所占用的內(nèi)存是2字節(jié),字符型變量ch所占用的內(nèi)存是1字節(jié),雙精度型變量f所占用的內(nèi)存是8字節(jié),三者相加即可。
43.D解析:本題中是一個(gè)含有兩個(gè)結(jié)點(diǎn)的循環(huán)鏈表。
C語言中結(jié)構(gòu)體的定義為:
struct結(jié)構(gòu)題類型名
{
成員項(xiàng)表;
};
44.D解析:格式字符X或x是以十六進(jìn)制無符號(hào)形式輸出整型數(shù)(注:輸出時(shí)不顯示前導(dǎo)0x或0X)。
45.D
46.D解析:putchar(c1)輸出1,putchar(c2)輸出2,printf('%c%c\\n',c5,c6)輸出45。
47.B解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有3種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實(shí)體之間的聯(lián)系是用樹結(jié)構(gòu)來表示的,其中實(shí)體集(記錄型)是樹中的結(jié)點(diǎn),而樹中各結(jié)點(diǎn)之間的連線表示它們之間的關(guān)系。所以,本題的正確答案是B。
48.BC語言中允許使用一種特殊形式的字符常量,就是以一個(gè)“\\”開頭的字符序列,這樣的字符稱為“轉(zhuǎn)義字符”。常用的轉(zhuǎn)義字符有:\\n,換行;\\t,水平制表;\\b,退格;\\r,回車。
49.B解析:程序執(zhí)行過程如下:
i=0:i++<7為真,p[i]%2即為p[1]%2,值為0,不執(zhí)行j+=p[i];j=0;
i=1:i++<7為真,P[i]%2即為p[2]%2,值為1,執(zhí)行j+=p[i];j=13;
i=2:i++<7為真,p[i]%2即為P[3]%2,值為0,不執(zhí)行j+=p[i];j=13;
i=3:i++<7為真,p[i]%2即為P[4]%2,值為1,執(zhí)行j+=p[i]];j=13+15=28;
i=4:i++<7為真,p[i]%2即為p[5]%2,值為0,不執(zhí)行j+=P[i];j=28;
i=5:i++<7為真,P[i]%2即為P[6]%2,值為1,執(zhí)行j+=P[i];j=28+17=45;
i=6:i++<7為真,P[i]%2即為p[7]%2,值為0,不執(zhí)行j+=p[i];j=45;
i=7:i++<7為假,結(jié)束循環(huán),輸出j的值45。
可見,程序的功能是求除p[0]外的其他奇數(shù)的和。
50.B
51.C解析:#define宏名的有效范圍為定義命令之后到本源文件結(jié)束,可以在程序中使用#undef命令終止宏定義的作用域。本題由于#undef的作用,使a的作用范圍在#definea100到#undefa之間,故答案為C。
52.C解析:函數(shù)func的作用是返回兩個(gè)形參的和,第一個(gè)形參是x,y分別自減和自增后的和13,第二個(gè)形參的值為8(根據(jù)語法規(guī)則,應(yīng)當(dāng)先使用,后自增),所以func的返回值為13+8=21。
53.B
54.A解析:條件表達(dá)式“a?b:c”的含義是:當(dāng)a為真時(shí),其值等于表達(dá)式b的值,當(dāng)a為假時(shí),其值等于表達(dá)式c的值。第一個(gè)表達(dá)式:w=6<x=4為假,所以返回x的值,即m=x=4;第二個(gè)表達(dá)式:m=4<y=3為假,所以返回y的值,即m=y=3。
55.D
56.D解析:在C語言中,定義一維數(shù)組的語句一般形式如下:
類型名數(shù)組名[常量表達(dá)式];
一維數(shù)組的引用形式為:數(shù)組名[下標(biāo)表達(dá)式]。count表示能被2整除或被5整除的個(gè)數(shù),i則計(jì)算有多少個(gè)數(shù)組元素。
57.D解析:面向?qū)ο笏枷胫械娜齻€(gè)主要特征是:封裝性、繼承性和多態(tài)性。
58.D
59.C解析:在軟件開發(fā)和維護(hù)的過程中存在著不少問題,從而導(dǎo)致軟件危機(jī)。軟件危機(jī)一方面與軟件生產(chǎn)本身的復(fù)雜性有關(guān),另一方面也和軟件開發(fā)與維護(hù)的方法不正確有關(guān)。
60.88解析:題目實(shí)現(xiàn)的功能是把小寫字母轉(zhuǎn)為大寫字母,并順序輸出顯示。
61.B
62.C\n通常將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用、退役的過程稱為軟件生命周期。
\n
63.C\r\n軟件工程是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護(hù)計(jì)算機(jī)軟件的有關(guān)技術(shù)及管理方法。軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)工程中需要應(yīng)用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發(fā)成本和進(jìn)度無法控制、軟件質(zhì)量難以保證、軟件不可維護(hù)或維護(hù)程度低、軟件得成本不斷提高、軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。軟件項(xiàng)目的管理、軟件產(chǎn)品的生產(chǎn)率、軟件開發(fā)中的技術(shù)都是軟件工程需要解決的部分問題。因此選項(xiàng)C正確。
64.B
65.Aauto用于聲明變量的生存期為自動(dòng),即將不在任何類、結(jié)構(gòu)、枚舉、聯(lián)合和函數(shù)中定義的變量視為全局變量,而在函數(shù)中定義的變量視為局部變量。這個(gè)關(guān)鍵字通常會(huì)被省,因?yàn)樗械淖兞磕J(rèn)就是aut0的。register定義的變量告訴編譯器盡可能的將變量存在CPU內(nèi)部寄存器中而不是通過內(nèi)存尋址訪問以提高效率。static變量會(huì)被放在程序的全局存儲(chǔ)區(qū)中,這樣可以在下一次調(diào)用的時(shí)候還可以保持原來的賦值。這一點(diǎn)是它與堆棧變量和堆變量的區(qū)別。變量用static告知編譯器,自己僅僅在變量的作用范圍內(nèi)可見。這一點(diǎn)是它與全局變量的區(qū)別。當(dāng)static用來修飾全局變量時(shí),它就改變了全局變量的作用域。extern限制在了當(dāng)前文件里,但是沒有改變其存放位置,還是在全局靜態(tài)儲(chǔ)存區(qū)。extem外部聲明,該變量在其他地方有被定義過。因此,答案為A選項(xiàng)。
66.B只有B)選項(xiàng)369可以用無符號(hào)整數(shù)來表示和存儲(chǔ)。A)選項(xiàng)~369有負(fù)號(hào)。選項(xiàng)c)0.369是qJ、數(shù),它們都不能用無符號(hào)整數(shù)類存儲(chǔ)。選項(xiàng)D)是一個(gè)整數(shù)集合需要用數(shù)組來存儲(chǔ)。
67.A
68.B
69.D
70.B雙目運(yùn)算中兩邊運(yùn)算量類型轉(zhuǎn)換規(guī)律:
運(yùn)算數(shù)1\t\t\t\r\n\t\t\t\t\t運(yùn)算數(shù)2\t\t\t\t\r\n\t\t\t\t\t轉(zhuǎn)換結(jié)果類型\t\t\t\t\r\n\t\t\t\t\t短整型\t\t\t\t\r\n\t\t\t\t\t長整型\t\t\t\t\r\n\t\t\t\t\t短整型一>長整型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t長整型\t\t\t\t\r\n\t\t\t\t\t整型一>長整型\t\t\t\t\r\n\t\t\t\t\t字符型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t字符型一>整型\t\t\t\t\r\n\t\t\t\t\t有符號(hào)整型\t\t\t\t\r\n\t\t\t\t\t無符號(hào)整型\t\t\t\t\r\n\t\t\t\t\t有符號(hào)整型一>無符號(hào)整型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t浮點(diǎn)型\t\t\t\t\r\n\t\t\t\t\t整型一>浮點(diǎn)型\t\t\t\t\r\n\t在a/b的時(shí)候,a,b的類型不一致,根據(jù)類型轉(zhuǎn)換規(guī)則,把整型轉(zhuǎn)換成double類型,之后的加、減類似。轉(zhuǎn)化規(guī)則為char,short一>int->unsigned->long->double←float。
71.Ax、y為整數(shù),x/y值為l,加上o.9為1.9,賦值給整型2,接受后為1。
72.A
73.B選項(xiàng)A為表達(dá)式,因此不正確,選項(xiàng)C中a++本身就是表達(dá)式,無需再賦值,選項(xiàng)D中,在強(qiáng)制類型轉(zhuǎn)換時(shí),類型名應(yīng)用括號(hào)括起來,故選擇8選項(xiàng)。
74.B本題考查了通過指針來引用一維數(shù)組元素的方法。題中*P=a;這一賦值語句是指針P指向了數(shù)組a的首地址,P+5是指針P向后移動(dòng)了5個(gè)int類型的存儲(chǔ)單元,所以P+5指向了數(shù)組元素a[5]。
75.D二維數(shù)組進(jìn)行初始化時(shí)可以按照分段進(jìn)行賦值,將每一行看成一段,每一段的個(gè)數(shù)為列數(shù)。也可以按行連續(xù)賦值,不用分段,將所有的數(shù)值寫成一行,系統(tǒng)會(huì)在數(shù)組每一行的元素個(gè)數(shù)與列數(shù)相同時(shí),從下一行開始繼續(xù)賦值。也可以對(duì)部分?jǐn)?shù)組賦初值,未賦初值的元素自動(dòng)取0。題目中可以看成是對(duì)數(shù)組按行進(jìn)行連續(xù)賦值,并且只給出了第一行第一列的數(shù)值0,對(duì)于未賦值的元素,系統(tǒng)自動(dòng)取0,故整個(gè)數(shù)組中的每個(gè)元素都可以取初值0。
76.D\n這個(gè)是對(duì)文件的操作,把數(shù)組的數(shù)寫到文件里,然后再從文件里倒序讀出。所以輸出結(jié)果為6,5,4,3,2,1。
\n
77.D解析:C語言中的文件是流式文件。流式文件是一種無結(jié)構(gòu)文件,即整個(gè)文件是一串字符流或二進(jìn)制流。文件的存取以字符或字節(jié)為單位。
78.Ak=a>b?(b>C?1:o):o;a>b并且b>C,k為1,其他情況k為o,答案為A)。
79.D結(jié)構(gòu)化程序設(shè)計(jì)的基本要點(diǎn):①采用自頂向下、逐步求精的程序設(shè)計(jì)方法;②任何程序都可由順序、選擇和循環(huán)3種基本控制結(jié)構(gòu)構(gòu)造。
80.D【解析】算法的空間復(fù)雜度是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。一個(gè)算法所占用的存儲(chǔ)空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲(chǔ)空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲(chǔ)空間。如果額外空間量相對(duì)于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實(shí)際問題中,為了減少算法所占的存儲(chǔ)空間,通常采用壓縮存儲(chǔ)技術(shù),以便盡量減少不必要的額外空間。
81.
82.\n\tcharch;
\ninti,m,n;
\ni=0:
\nm=n=strlen(str)-1;//求字符串str長度
\nwhile(i<(n+1)/2)//循環(huán)逆置交換
\n{
\nch=str[i];
\nstr[i]=str[m];
\nstr[m]=ch:
\ni++;
\nm--;
\n}
\n【解析】在fun函數(shù)中,首先求行字符串的長度,然后通過循環(huán)進(jìn)行字符交換。要注意的是,如果字符串長度是奇數(shù),則最中間的元素在逆置前后的位置是沒有改變的。\n2021-2022年云南省麗江市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(20題)1.下面程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}
A.-1B.1C.8D.0
2.下列敘述中正確的是A.C語言中既有邏輯類型也有集合類型
B.C語言中沒有邏輯類型但有集合類型
C.C語言中有邏輯類型但沒有集合類型
D.C語言中既沒有邏輯類型也沒有集合類型
3.當(dāng)執(zhí)行以下程序段時(shí),()。x=-l:do{x=x*X;)while(!x);A.循環(huán)體將執(zhí)行一次B.循環(huán)體將執(zhí)行兩次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯(cuò)誤
4.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時(shí),輸出的結(jié)果是()。A.-1B.1C.4D.0
5.以下選項(xiàng)中不合法的標(biāo)識(shí)符是()。
A.&aB.FORC.printD._00
6.下列變量聲明合法的是()。
A.shorta=1.4e-1;
B.doubleb=1+3e2.8;
C.longdo=OxfdaL;
D.float2
7.在下列語句中,其含義為“q是一個(gè)函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。
A.int**q;B.int(*q);C.int*q;D.int*q;
8.對(duì)初始狀態(tài)為遞增序列的數(shù)組按遞增順序排序,最省時(shí)間的是插入排序算法,最費(fèi)時(shí)間的算法是()
A.堆排序B.快速排序C.插入排序D.歸并排序
9.
10.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是()。
A.1B..0C.6D.2
11.
12.下面程序段的運(yùn)行結(jié)果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));
A.8B.12C.4D.7
13.若變量已正確定義,要求程序段完成5!的計(jì)算,不能完成此操作的程序段是______。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5);
14.請(qǐng)閱讀以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的輸出是
A.34756B.23445C.35745D.12345
15.
16.算法的空間復(fù)雜度是指()。
A.算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲(chǔ)空間
B.算法所處理的數(shù)據(jù)量
C.算法程序中的語句或指令條數(shù)
D.算法在執(zhí)行過程中所需要的臨時(shí)工作單元數(shù)
17.
18.有以下程序(說明:字母A的ASCIl碼值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A.BYB.BTC.YTD.YE
19.下面關(guān)于B樹和B+樹的敘述中,不正確的結(jié)論是()。
A.B樹和B+樹都能有效的支持順序查找
B.B樹和B+樹都能有效的支持隨機(jī)查找
C.B樹和B+樹都是平衡的多叉樹
D.B樹和B+樹都可用于文件索引結(jié)構(gòu)
20.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.1256B.5634C.5612D.3456
二、2.填空題(20題)21.設(shè)有以下程序,為使之正確運(yùn)行,請(qǐng)?jiān)跈M線中填入應(yīng)包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)
______
main()
{printf("\n");
try_me();
printf("\n");}
22.在鏈表的運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是______。
23.與二維表中的“行”的概念最接近的概念是()。
24.下列程序執(zhí)行后輸出的結(jié)果是【】。
main()
{intarr[10],i,k=0);
fot(i=0;i<10;i++)art[i]=i;
for(i=1:i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
25.二分法查找僅限于這樣的表:表中的數(shù)據(jù)元素必須有序,其存儲(chǔ)結(jié)構(gòu)必須是______。
26.為了便于對(duì)照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組成。
27.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。
28.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的______的集合。
29.以下程序的輸出結(jié)果是()。
#include<stdio.h>
fun()
{inta=0;
a+=3;
printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<=4;cc++)
fun();
printf("\n");
}
30.對(duì)一組記錄{54,38,96,23,15,72,60,45,83}進(jìn)行直接插入排序時(shí),當(dāng)插入第5個(gè)記錄到有序表時(shí),尋找插入位置需比較【】次。
31.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<;y++)
z=(*(ptr+y)<x?*(ptr+y);x;
printf("%d\n",z);
}
32.問題處理方案的正確而完整的描述稱為______。
33.最簡單的交換排序方法是______。
34.理解下面的程序,填空完善程序。
main()
{inta,b,c;
scanf("%d%d",【】);
c=【】(a,b);
printf("a=%db=%dmax=%d\n",a,b,c);
}
intmax(x,y)
【】;
{intz;
if(x>y)z=x;
elsez=y(tǒng);
【】;
}
35.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。
#include"stdio.h"
main()
{intx,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
elseprintf("%d",y);
printf("%d\n",z);}
36.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對(duì)數(shù)據(jù)的操作運(yùn)算。
37.若有以下定義和語句:
intw[10]={23,54,10,33,47,98,72,80,61},*p;
p=w;
則通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。
38.設(shè)有以下定義和語句,sizeof(a)的值是【】,sizeof(b)的值是【】。
struct{intday;Charmonth;intyear;}a,*b;
b=&a;
39.下列程序的運(yùn)行結(jié)果是______。
#definePOWER(x)((x)*(x))
main()
{inti=1;
primtf("%d,%d",POWER(i++),i);
}
40.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)中,常用的描述工具是【】。
三、1.選擇題(20題)41.下列選項(xiàng)中,不屬于模塊間耦合的是()
A.內(nèi)容耦合B.異構(gòu)耦合C.控制耦合D.數(shù)據(jù)耦合
42.在16位IBM-PC機(jī)上使用C語言,若有如下定義:stmctdata{inti;charch;doublef;}b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是()。
A.1B.2C.7D.11
43.以下程序的輸出結(jié)果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}
A.12B.23C.14D.32
44.執(zhí)行以下程序段的輸出結(jié)果是()。intm=0x12,n=0x12;m=m-n;printf("%X\n",m);
A.0X0B.0X12C.0x0D.0
45.在下述程序中,判斷i>j共執(zhí)行的次數(shù)是()。main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}
A.4B.7C.5D.6
46.有以下程序
#include<stdio.h>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序運(yùn)行后,若從鍵盤輸入(從第1列開始)
123<回車>
45678<回車>
則輸出結(jié)果是
A.1267B.1256C.1278D.1245
47.用樹形結(jié)構(gòu)來表示實(shí)體之間聯(lián)系的模型稱為()。
A.關(guān)系模型B.層次模型C.網(wǎng)狀模型D.數(shù)據(jù)模型
48.下面程序在屏幕上的輸出是______。main(){printf(“ab\b\bc”);}A.ab\b\bcB.acC.abcD.abc
49.有以下程序:#iaclude<stdio.h>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);}程序運(yùn)行后的輸出結(jié)果是()。
A.42B.45C.56D.60
50.下列程序的輸出結(jié)果是______。#include<stdio.h>main(){inti=1,j=3;printf("%d,",i++);{inti=0;i+=j*2;printf("%d,%d,",i,j);}printf("%d,%d\n",i,j);}
A.1,6,3,1,3B.1,6,3,2,3C.1,6,3,6,3D.1,7,3,2,3
51.以下程序的輸出結(jié)是_______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf(%d",a);}
A.200100B.100100C.100200D.200200
52.請(qǐng)讀程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);上面程序的輸出結(jié)果是()。
A.11B.20C.21D.31
53.以下程序運(yùn)行后,輸出結(jié)果是()#include<stdio.h>#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f\n",s(a+b));}
A.49.5B.9.5C.22D.45
54.假定w、x、y、m均為int型變量,則執(zhí)行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;
A.3B.4C.5D.6
55.以下程序運(yùn)行后的輸出結(jié)果是()main(){chars[]="1234",*ps;for(ps=s;ps<s+3;ps++)printf("%c",ps);printf("\n");}
A.123B.112123C.1234D.亂碼
56.現(xiàn)有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(k[i]){if(k[i]%2==0||k[i]%5==0)count++;i++;}printf("%d,%d\n",count,i);}則程序段的輸出結(jié)果為
A.7,8B.8,8C.7,10D.8,10
57.以下不是面向?qū)ο笏枷胫械闹饕卣鞯氖?/p>
A.多態(tài)B.繼承C.封裝D.垃圾回收
58.下列關(guān)于switch語句和break語句的結(jié)論中,只有()是正確的。
A.break語句是switch語句中的一部分
B.在switch語句中根據(jù)需要使用或不使用break語句
C.在switch語句中必須使用break語句
D.以上三個(gè)結(jié)論中有兩個(gè)是正確的
59.產(chǎn)生軟件危機(jī)的原因是:一方面與軟件生產(chǎn)本身的復(fù)雜性有關(guān);另一方面,和______的方法不正確有關(guān)。
A.軟件的使用B.軟件的成本C.軟件的開發(fā)和維護(hù)D.軟件的文檔資料
60.閱讀如下程序段
#include"stdio.h"
voidfc(FILE*);
main(intargc,char*argv[])
{FILE*fp;
inti=1;
while(--argc>0)
{fp=fopen(argv[i++],"r");
fc(fp);
fclose(fp);}}
voidfc(FILE*p)
{charc;
while((c=getc(p))!='#')
putchar(c-32);}
這個(gè)程序段編譯、連接以后生成可執(zhí)行文件50.exe,假定磁盤當(dāng)前目錄下有3個(gè)文本文件,其文件名和內(nèi)容分別為:
文件名內(nèi)容
k1.txtchina#
k2.txtese#
k3.txtyear#
四、選擇題(20題)61.
62.軟件生命周期是指()。
A.軟件的開發(fā)過程
B.軟件的運(yùn)行維護(hù)過程
C.軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程
D.軟件從需求分析、設(shè)計(jì)、實(shí)現(xiàn)到測試完成的過程
63.下列描述中正確的是()。
A.軟件工程只是解決軟件項(xiàng)目的管理問題
B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題
C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則
D.軟件工程只是解決軟件開發(fā)中的技術(shù)問題
64.
65.以下與存儲(chǔ)類別有關(guān)的四組說明符中,全部屬于靜態(tài)類的一組是()。
A.extem和static
B.auto和static
C.register和static
D.register和ex[erll
66.定義無符號(hào)整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。
A.-369B.369C.0.369D.整數(shù)集合11,2,3,4,51
67.
68.
69.
70.現(xiàn)有定義inta;doubleb;floatc;chark;,則表達(dá)式a/b+C—k值的類型為:()。
A.intB.doubleC.floatD.char
71.若有定義語句:A.1B.1.9C.2D.2.4
72.
73.若變量a、i已正確定義,且i已正確賦值,合法的語句是()。
A.a==lB.++iC.a=a++=5D.a=int(i)
74.若有定義inta[9],+P=a;,則P+5表示()。
A.數(shù)組元素a[5]的值B.數(shù)組元素a[5]的地址C.數(shù)組元素a[6]的地址D.數(shù)組元素a[0]的值加上5
75.若有說明:inta[3][4]={0};,則下面正確的敘述是
A.只初始化了第一個(gè)元素,即a[0][0]可得到初值0
B.此初始化語句不正確
C.?dāng)?shù)組a中各元素都可得到初值,但其值不一定為0
D.?dāng)?shù)組a中每個(gè)元素均可得到初值0
76.有以下程序:
#include<stdio.h>
main()
{FILE*fp;inti,a[6]={1,2,3,4,5,6};
fp=fopen("d2.dat","w+");
for=(i=o;i<6;,i++)fpintf(fp,"%d\n",a[i]);
rewind(fp);
for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);
fclose(fp);
for(i=0;i%6;i++)printf("%d,",a[i]);
}
程序運(yùn)行后的輸出結(jié)果是()。
A.4,5,6,1,2,3,
B.1,2,3,3,2,1,
C.1,2,3,4,5,6,
D.6,5,4,3,2,1,
77.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄
B.數(shù)據(jù)行
C.數(shù)據(jù)塊
D.字符(字節(jié))序列
78.以下程序愛中,與語句:
79.結(jié)構(gòu)化程序設(shè)計(jì)的3種結(jié)構(gòu)是()。
A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B.分支結(jié)構(gòu)、等價(jià)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價(jià)結(jié)構(gòu)
D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
80.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲(chǔ)空間D.算法執(zhí)行過程中所需要的存儲(chǔ)空間
五、程序改錯(cuò)題(1題)81.下列給定的程序中,proc()函數(shù)的功能是:將str所指字符串中每個(gè)單詞的最后一個(gè)字母改成大寫(這里的“單詞”是指有空格隔開的字符串)。
例如,若輸人:Howdoyoudo,則輸出:HoWdOyoUd0。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計(jì)題(1題)82.請(qǐng)編一個(gè)函數(shù)fun(ohlr*str),該函數(shù)的功能是把字符串中的內(nèi)容逆置。
例如,字符串中原有的字符串為asdf9,則調(diào)用該函數(shù)后,串中的內(nèi)容為9fdsa。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填人所編寫的若干語句。
試題程序:
#include<string.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidfun(char*str)
{
}
voidmain
{
chara[N];
FILE*out:
printf("Enterastring:");
gets(a);
printf("Theorigiralstringis:");
puts(a);
fun(a):
printf("Thestringaftermodified:");
puts(a);
strcpy(a,"Welcome!");
fun(a);
ut=fopen("outfile.dat","w");
fprintf(out,"%s".a(chǎn));
fclose(out);
}
參考答案
1.D解析:本題考查“++”和“--”運(yùn)算符,運(yùn)算符“++”是操作數(shù)加1,而“--”則是操作數(shù)減1。在do-while循環(huán)中,首先執(zhí)行y--,再執(zhí)行--y。當(dāng)y=2時(shí),執(zhí)行y--,y的值變?yōu)?,--y使y值變?yōu)?,循環(huán)結(jié)束。執(zhí)行輸出時(shí),先輸出y的值0,然后執(zhí)行y--,使y的值變?yōu)?1。
2.D解析:在C語言中沒有邏輯類型,邏輯類型用整型來表示,故選項(xiàng)A和選項(xiàng)C不正確,C語言中沒有集合類型,故選項(xiàng)B不正確。所以,D選項(xiàng)為所選。
3.Ado-wlfile的功能是先執(zhí)行一次循環(huán)體,再判斷條件是否成立,當(dāng)x=-1時(shí),執(zhí)行do語句,x=x*x=1,接著執(zhí)行while后的表達(dá)式,其值為0,退出循環(huán),因此循環(huán)體只執(zhí)行了一次。
4.A本題考查do-while循環(huán)。當(dāng)--y是0(即y是o)時(shí)結(jié)束循環(huán),輸出--y,先將y的值減1再輸出Y的值。
5.AC語言的標(biāo)識(shí)符由字母、數(shù)字、下劃線組成,且第1個(gè)字符必須是字母或下劃線。另外,關(guān)鍵字不能作為標(biāo)識(shí)符。因?yàn)镃語言中區(qū)分大小寫,所以B選項(xiàng)中的“FOR”可以作為標(biāo)識(shí)符來用。A選項(xiàng)中含有非法字符“&”,所以其不合法。故本題答案為A選項(xiàng)。
6.A解析:解答本題需了解3個(gè)知識(shí)點(diǎn):①標(biāo)識(shí)符是由字母、數(shù)字或下劃線組成,并且它的第一個(gè)字符必須是字母或者下劃線;②do是C語言中的一個(gè)關(guān)鍵字,不能再用做變量名和函數(shù)名;③C語言規(guī)定,指數(shù)形式的實(shí)型常量e或E后面的指數(shù)必須是整數(shù)。
7.B本題考查指針函數(shù)。其定義的基本格式為:類型說明符(*函數(shù)名)?!邦愋驼f明符”表示返回的指針值指向的數(shù)據(jù)類型。
8.B
9.B
10.C
11.B
12.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個(gè)字符串,然后將指針變量p加3,即使其指向字符串的第四個(gè)元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個(gè)十進(jìn)制數(shù)的整型數(shù)值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數(shù)和strcpy函數(shù)的作用。
strcpy的調(diào)用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復(fù)制到目的地址中,這種復(fù)制將覆蓋原來的字符串。strcat函數(shù)的功能是將源地址的字符串復(fù)制到目的地址字符串的后面。
strlen的調(diào)用格式是:strlen(字符串地址),其功能是返回字符串中字符的個(gè)數(shù)。
那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個(gè)數(shù)為4,那么執(zhí)行strlen后,程序最終輸出的結(jié)果是4。因此本題正確的答案是C。
13.B解析:選項(xiàng)B中每次執(zhí)行循環(huán)體都要執(zhí)行p=1,無法保存上次的運(yùn)算結(jié)果,執(zhí)行完while循環(huán)后p=5。
14.C解析:本題考查了通過數(shù)組首地址引用數(shù)組元素的方法。第一次執(zhí)行fun(a)后,a[0]=3,a[1]=5。第二次執(zhí)行fun(a)時(shí),因?yàn)閟tatic變量j保存著上次執(zhí)行時(shí)的值為2,所以a[2]=7,最后數(shù)組a={3,5,7,4,5},所以正確答案為C)。
15.A
16.A算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A項(xiàng)。
17.B
18.Dfun函數(shù)的意思是當(dāng)*s%2==0的時(shí)候就輸出并且s自加l次,然后判斷。所以可知只有第2和第4個(gè)位置上的才符合要求,所以答案為D。
19.A
20.BFunl是輸出局部變量的值,fun2是把全局變量的值改成3和4,所以輸出的結(jié)果是5634。
21.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數(shù)的存儲(chǔ)分類的概念。如果沒有特別說明,函數(shù)的存儲(chǔ)范圍是從定義函數(shù)的位置到文件的結(jié)尾,如果其他文件想使用這個(gè)函數(shù),需要用ginclude文件包含命令將定義函數(shù)的文件包含進(jìn)來。
22.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個(gè)頭結(jié)點(diǎn),因此在任何情況下,循環(huán)鏈表中至少有一個(gè)結(jié)點(diǎn)存在,從而使空表與非空表的運(yùn)算統(tǒng)一。
23.元組元組解析:在關(guān)系模型中,數(shù)據(jù)結(jié)構(gòu)用單一的二維表結(jié)構(gòu)來表示實(shí)體及實(shí)體間的聯(lián)系。一個(gè)關(guān)系對(duì)應(yīng)一個(gè)二維表。二維表中的列稱為屬性,屬性值的取值范圍稱為值域。二維表中的一行稱為一個(gè)元組。
24.1212解析:本題的第一個(gè)for循環(huán)用于給數(shù)組arr賦初值,第二個(gè)for循環(huán)用于求和運(yùn)算。由于第二個(gè)for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。
25.順序存儲(chǔ)(順序方式存儲(chǔ))順序存儲(chǔ)(順序方式存儲(chǔ))解析:二分法查找對(duì)表的要求是有序的順序表,即第一要求是數(shù)據(jù)元素有序,第二要求是按順序方式存儲(chǔ)。
26.輸出結(jié)果輸出結(jié)果解析:注意:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年國際貿(mào)易實(shí)務(wù)考試題國際貿(mào)易規(guī)則與操作流程
- 2026年人工智能技術(shù)與應(yīng)用專業(yè)考試題集
- 2026年公務(wù)員考試行測邏輯推理與判斷能力提升題集
- 2026年財(cái)經(jīng)法規(guī)與職業(yè)道德規(guī)范題庫
- 中石油消防管理規(guī)范
- 客訴知識(shí)培訓(xùn)
- 2026上海中醫(yī)藥大學(xué)國際教育學(xué)院英語教師招聘1人考試重點(diǎn)試題及答案解析
- 2026年上海大學(xué)單招綜合素質(zhì)筆試參考題庫含詳細(xì)答案解析
- 2026山西白求恩醫(yī)院 山西醫(yī)學(xué)科學(xué)院急需緊缺高層次人才招聘5人參考考試試題及答案解析
- 2026年鄭州電力職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 大采高綜采工作面操作規(guī)程
- 保密車間出入管理制度
- 肯德基副經(jīng)理養(yǎng)成課程
- 鐵路勞動(dòng)安全 課件 第四章 機(jī)務(wù)勞動(dòng)安全
- 智慧人社大數(shù)據(jù)綜合分析平臺(tái)整體解決方案智慧社保大數(shù)據(jù)綜合分析平臺(tái)整體解決方案
- 脊柱與四肢檢查課件
- 2024年河北省供銷合作總社招聘筆試參考題庫附帶答案詳解
- 宅基地及地上房屋確權(quán)登記申請(qǐng)審批表
- 醫(yī)療衛(wèi)生輿情課件
- 2024年甘肅省安全員A證考試題庫及答案
- 數(shù)據(jù)安全保護(hù)與隱私保護(hù)
評(píng)論
0/150
提交評(píng)論