版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年四川省內(nèi)江市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:structSTU{charname[10];intnum;floatTotalScore;};voidf(structSTU*p){structSTUs[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;++p;++q;*p=*q;}main(){structSTUs[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};f(s);printf("%s%d%3.0f\n",s[1].name,s[1].num,s[1].TotalScore);}程序運行后的輸出結(jié)果是______。
A.SunDan20044580
B.Penghua20045537
C.LiSiGUO20042580
D.SunDan20041703
2.與“y=(x>0?1:x<0?-1:0)”;的功能相同的if語句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;
B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"
C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;
D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;
3.在關(guān)系中凡能惟一標(biāo)識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的()
A.連接碼B.關(guān)系碼C.外碼D.候選碼
4.軟件設(shè)計中劃分模塊的一個準(zhǔn)則是()。A.低內(nèi)聚低耦合B.高內(nèi)聚低耦合C.低內(nèi)聚高耦合D.高內(nèi)聚高耦合
5.
讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一個文件指針,指向待讀取的文件
B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址
D.一個內(nèi)存塊的字節(jié)數(shù)
6.設(shè)有定義“Charp[]={‘1’,‘2’,‘3’},*q=p;”,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是()。A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
7.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
8.
9.C語言提供的合法關(guān)鍵字是()
A.switchB.cherC.caseD.default
10.對關(guān)系S和R進行集合運算,結(jié)果中既包含S中的所有元組也包含R中的所有元組,這樣的集合運算稱為()
A.并運算B.交運算C.差運算D.積運算
11.設(shè)n、m為一棵二叉樹上的兩個結(jié)點,在中序遍歷時,n在m之前的條件是_____________。
A.n在m右方B.n是m的祖先C.n在m左方D.n是m子孫
12.在非線性結(jié)構(gòu)中,每個結(jié)點()。
A.無直接前趨
B.只有一個直接前趨和個數(shù)不受限制的直接后繼
C.只有一個直接前驅(qū)和后繼
D.有個數(shù)不受限制的直接前驅(qū)和后繼
13.
14.表達式a*(-b+c)的逆波蘭式是()
A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*
15.
16.以下是根據(jù)文件大小分配存儲空間的一個算法偽代碼,請問其空間復(fù)雜度是多少()A.O(n)B.O(n^2)C.O(2^n)D.O(n*log(n))
17.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)
18.以下程序的輸出結(jié)果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}
A.650B.1470C.5430D.輸出值不定
19.設(shè)有定義:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函數(shù)fun返回值的類型是()。
A.T類型的結(jié)構(gòu)體B.指向結(jié)構(gòu)體類型的指針C.int類型的元素D.int類型的指針
20.下列判斷正確的是()。
A.chara="ABCD":等價于char*a;*a="ABCD":
B.charstr[10]={"ABCD"}:等價于charstr[10];str[]={"ABCD"};
C.char*s="ABCD":等價于chars;*s="ABCD";
D.charc[5]="ABCD",d[5]="ABCD":等價于charc[5]-d[5]="ABCD";
二、2.填空題(20題)21.實現(xiàn)程序可將磁盤中的一個文件復(fù)制到另一個文件中,兩個文件的文件名在可執(zhí)行命令的命令行中(相當(dāng)于copy命令),假定文件在當(dāng)前目錄下。請補全程序。
#include<stdio.h>
voidmain(intargc,char*argv[])
{FILE*f1,*f2;
if(argc<【】)
{printf("parametererror!\n");exit(0);}
f1=fopen(argv[1],"r");
f2=fopen(argv[2],"w");
while(【】)fputc(fgetc(f1),f2);
fclose(f1);
fclose(f2);
}
22.執(zhí)行下面程序段時輸出suet,請?zhí)羁铡?/p>
main()
{staticchara[]="student";
char*p;
for(p=a;p<【】;p+=2)
putchar(*p);
}
23.【】是數(shù)據(jù)庫設(shè)計的核心。
24.以下程序的功能是:通過函數(shù)func輸入字符并統(tǒng)計輸入字符的個數(shù)。輸入時用字符作為輸入結(jié)束標(biāo)志。請?zhí)羁铡?include<stdio.h>long();/*函數(shù)說明語句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}
25.有如下圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:
structaa
{intdata;
【】}node;
26.以下程序運行后的輸出結(jié)果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
27.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使相同的數(shù)只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)fun返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。
例如,若一維數(shù)組中的數(shù)據(jù)是:
2223445666677899101010
刪除后,數(shù)組中的內(nèi)容應(yīng)該是:2345678910。請?zhí)羁铡?/p>
#include<stdio.h>
#defineN80
intfun(inta[],intn)
{inti,j=1;
for(i=1;i<n;i++)
if(a[j-1]【】a[i])a[j++]=a[i];
【】;
}
main()
{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);
n=fun(a,n);
printf("\nThedataafterdeleted:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");
}
28.以下程序的功能是調(diào)用函數(shù)fun計算:m=1-2+3-4+…+9-10,并輸出結(jié)果。請?zhí)羁铡?/p>
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
m+=i*f;
f=【】;
returnm;
}
main()
{printf("m=%d\n",【】);}
29.結(jié)構(gòu)化分析方法是面向______進行分析的方法。
30.數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、______、邏輯設(shè)計階段、物理設(shè)計階段、實施階段、運行和維護階段。
31.設(shè)inta=5,b=6,表達式(++a==b--)?++a:--b的值是【】。
32.有以下程序
intfa(intx){returnx*x;}
intfb(intx){retumx*x*x;}
intf(int(*f1)(),int(*f2)(),intx)
{returnf2(x)-f1(x);}
main()
{inti;i=f(fa,fb,2);printf("%d\n",i);}
程序運行后,輸出結(jié)果是【】。
33.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為為算法的【】。
34.若a=l,b=2,則表達式!(x=a)||y=b)&&0的值是______。
35.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。
36.函數(shù)pi的功能是根據(jù)以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)
現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。
#include"math.h"
{doubles=0.0;longi;
for(i=1;i<=n;i++)s=s+【】;
return(sqrt(6*S));
}
37.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?zhí)羁眨?/p>
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,B);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*bar)
{inti,j,x;
for(i=0;i<m;i++)
{X=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];()=x:
}
}
38.常見的拓撲結(jié)構(gòu)有【】。
39.下面函數(shù)用來求出兩個整數(shù)之和,并通過形參傳回兩數(shù)相加之和值。請?zhí)羁铡?/p>
intadd(intx,inty,【】,)
{【】=x+y;}
40.以下程序的功能是:利用指針指向三個整型變量,并通過指針運算找出三個數(shù)中的最大值,輸出到屏幕上。請?zhí)羁铡?/p>
main()
{intx,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
【】;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax=*pz;
printf("max=%d\n",max);}
三、1.選擇題(20題)41.設(shè)函數(shù)fun的定義形式為voidfun(charch,floatx){…}則以下對函數(shù)fun的調(diào)用語句中,正確的是
A.fun("abc",3.0);
B.t=fun('D',16.5);
C.fun('65',2.8);
D.fun(32,32);
42.若變景均已正確定義井賦值,以下合法的C語言賦值語句是()
A.x=y==5;B.x=n%2.5;C.x+n=i;D.x=5=4+1;
43.若有下面的說明和定義,則sizeof(structaA)的值是()struetaa{intr1;doubler2floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;
A.30B.29C.24D.22
44.在軟件開發(fā)中,下面任務(wù)不屬于設(shè)計階段的是______。
A.數(shù)據(jù)結(jié)構(gòu)設(shè)計B.給出系統(tǒng)模塊結(jié)構(gòu)C.定義模塊算法D.定義需求并建立系統(tǒng)模型
45.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;┆}程序在執(zhí)行了c=&b;b=&a;語句后,表達式**c的值是()。
A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址
46.以下關(guān)于字符串的敘述中正確的是()。
A.C語言中有字符類型的常量和變量
B.兩個字符串中的字符個數(shù)相同時才能進行字符串大小的比較
C.可以用關(guān)系運算符對字符串的大小進行比較
D.空串一定比空格打頭的字符串小
47.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。
A.確認測試B.集成測試C.驗證測試D.驗收測試
48.以下程序段的輸出結(jié)果是______。intsbr[]={10,8,6,4,2},*p=str+1;printf("%d\n",*(p+2));
A.6B.4C.10D.不確定的值
49.x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是
A.INPUTx、v、z;
B.scanf("%d%d%d",&x,&y,&z);
C.scanf("%d%d%d",x,y,z);
D.read("%d%d%d",&x,&y,&z);
50.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf("%d,%d\n",m,i);}執(zhí)行后的輸出結(jié)果是
A.8,6B.8,3C.6,4D.7,4
51.關(guān)系表中的每一橫行稱為一個()。A.元組B.字段C.屬性D.碼
52.算法的時間復(fù)雜度是指______。
A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數(shù)D.算法程序中的指令條數(shù)
53.以下不屬于對象的基本特點的是()
A.分類性B.多態(tài)性C.繼承性D.封裝性
54.結(jié)構(gòu)化程序設(shè)計方法的3種基本控制結(jié)構(gòu)中不包括
A.循環(huán)結(jié)構(gòu)B.遞歸結(jié)構(gòu)C.順序結(jié)構(gòu)D.選擇結(jié)構(gòu)
55.微機顯示器一般有兩組引線,它們是()
A.電源線與信號線B.電源線與控制線C.電源線與地線D.控制線與地線
56.下列判斷正確的是()。
A.chara="ABCD";等價于char*a;*a="ABCD";
B.charstr[10]={"ABCD"};等價于charstr[10];str[]={"ABCD"};
C.char*s="ABCD";等價于chars;*s="ABCD";
D.charc[5]="ABCD",d[5]="ABCD";等價于charc[5]=d[5]="ABCD";
57.下面程序的文件名為t.exe,在DOS下輸入的命令行參數(shù)為:ttomeetme<回車>
則程序輸出的結(jié)果是
#include"stdio.h"
main(argc,argv)
intargc;char*argv[];
{inti;
printf("%d\n",argc);}
A.3B.4C.2D.以上答案都不正確
58.下述語句中,在字符串s1和s2相等時顯示"theyareEqual"的是()。
A.if(*s1=*s2)puts("theyareEqual");
B.if(!strcmp(s1,s2))puts("theyareEqual");
C.if(s1==s2)puts("theyareEqual");
D.if(strcmp(s1,s2))puts("theyareEqual");
59.以下程序輸出的結(jié)果是#include<stdio.h>main(){inti=010,j=10;printf("%d,%d\n",++i,j--);}
A.11,10B.9,10C.010,9D.10,9
60.下面程序的運行結(jié)果是()。y=5;x=14;y=((x=3*y,x+6),x-1);printf("x=%d,y=%d”,x,y);
A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27
四、選擇題(20題)61.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。A.定義語句中的*號是一個間址運算符
B.定義語句中的*號是一個說明符
C.定義語句中的p只能存放double類型變量的地址
D.定義語句中,*p=&a把變量a的地址作為初值賦給指針變量P
62.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為()。
A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績
63.
64.設(shè)有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
65.設(shè)x,y和z都是int型變量,且x=3,y=4,z=5,則下面表達式中,值為0的表達式是()。
A.
B.
C.
D.
66.
下列程序的輸出結(jié)果是()。
#include<stdio.h>
main
{inti;
for(i=1;i<=10,i++)
{if((i*i>=20)&&(i*i<=100))
break;
}
printf("%d\n",i*i;
}
A.49B.36C.25D.64
67.
68.有以下程序:
程序運行后的輸出結(jié)果是()。
69.軟件(程序)調(diào)試的任務(wù)是()。
A.診斷和改正程序中的錯誤B.盡可能多地發(fā)現(xiàn)程序中的錯誤C.發(fā)現(xiàn)并改正程序中的所有錯誤D.確定程序中錯誤的性質(zhì)
70.
71.下列有關(guān)數(shù)據(jù)庫的描述,正確的是______。
A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關(guān)系C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件
72.
73.
74.若有下列定義(設(shè)int類型變量占2個字節(jié)):inti=8,j=9;則下列語句:printf("i=%%d,j=%%d\n",i,j);輸出的結(jié)果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
75.
76.若有定義:“int*P,x=0,*p,p=&x;”,則語句“printf("%d\n",*p);”的輸出結(jié)果是()。
A.隨機值B.0C.x的地址D.P的地址
77.已定義以下函數(shù):
fun函數(shù)的返回值是()。
A.一個整數(shù)B.不確定的值C.形參P中存放的值D.形參P的地址值
78.若有如下定義,則__________是對數(shù)組元素的正確的引用。.
inta[10],*p;p=a;
A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p
79.
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun的功能是:將s所指字符串的正序和反序進行連接,形成的新串放在t所指的數(shù)組中。例如,當(dāng)S所指字符串為“ABCD”時,t所指字符串中的內(nèi)容應(yīng)為“ABCDDCBA”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:
參考答案
1.B解析:f函數(shù)用了顯式傳地址的方式,因此主函數(shù)中的s值發(fā)生了變化。
2.By=(x=)071:x<0?-1:0)中有兩個三目運算符,因此按從右到在的順序運算,可寫成y=(x>071:(x<0?-1:0)),故選擇8選項。
3.DD)【解析】在關(guān)系中凡能惟一標(biāo)識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的候選碼或候選鍵。從二維表的所有候選鍵中選取一個作為用戶使用的鍵稱為主鍵或主碼。
4.B一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。
5.Cfread函數(shù)中的參數(shù)buffer是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存塊中。
6.A根據(jù)題目中的定義可知,“sizeof(p)”計算的是數(shù)組p中所有元素所占用的字節(jié)數(shù),而不是char型數(shù)據(jù)所占的字節(jié)數(shù)。故本題答案為A選項。
7.A本題考查函數(shù)值的類型。在函數(shù)調(diào)用時,盡管Y的類型是float.x的類型是double,但是因為函數(shù)定義時沒有指定類型說明,系統(tǒng)默認函數(shù)值的類型為int型,所以計算后Y的類型是int型。
8.B
9.C
10.AA)【解析】關(guān)系的并運算是指由結(jié)構(gòu)相同的兩個關(guān)系合并,形成一個新的關(guān)系,新關(guān)系中包含兩個關(guān)系中的所有元組。
11.C
12.D
13.D
14.D
15.B
16.C
17.C
18.A解析:對未給出初始值的整數(shù)數(shù)組元素,被默認初始化為零。
19.B由題意可知:使用typedef將類型“struct{intx,y;}*”重命名為“USER”,所以函數(shù)fun的返回類型為“struct{intx,y;}*”,即指向結(jié)構(gòu)體類型的指針。故本題答案為B選項。
20.Da=“ABCD”書寫錯誤,因為“=”左邊不能出現(xiàn)常量;數(shù)組名S是代表S數(shù)組首地址常量,而不是變量;字符串只有在定義時維數(shù)可以省略。
21.3!feof(f1)3\r\n!feof(f1)解析:要實現(xiàn)文件復(fù)制,需要指定源文件及目的文件,因此在命令行下執(zhí)行程序時至少要指定兩個參數(shù),加上程序名本身,故argc的值至少為3,因此第一空應(yīng)填3。while循環(huán)中語句fputc(fgetc(f1),f2);的目的是將f1中的字符依次讀出并寫入到f2對應(yīng)的文件中去,直至文件f1結(jié)束為止,因此第二空為!feof(f1)。
22.a+strlen(a)或strlen(a)+aa+strlen(a)或strlen(a)+a解析:要輸出suet就要將指針從字符串開始移動到字符串結(jié)尾,表達式p=a使p指向字符串的首地址;表達式p+=2使每次循環(huán)p值加2,是向前移動指針;空白處應(yīng)判斷是否到達字符串結(jié)尾,因此應(yīng)填字符串的首地址加字符串長度,strlen(a)的返回值為字符串a(chǎn)所含的字符個數(shù)。
23.數(shù)據(jù)模型數(shù)據(jù)模型
24.tunc()m++tunc()m++解析:第一空白處,在C語言中如果子函數(shù)在主函數(shù)之后定義,就要對其進行說明,說明的形式為:“函數(shù)類型名函數(shù)名”。所以此處填寫func()。第二空白處,整型變量m表示輸入字符的個數(shù),所以每輸入一個字符,變量m的值就加1。所以此處填寫m++。
25.structaa*lhead*rchild;structaa*lhead,*rchild;解析:結(jié)構(gòu)體對鏈表的定義。
26.132132解析:本題考核的知識點是for循環(huán)與switch語句的綜合運用。主函數(shù)中用了一個for循環(huán),for循環(huán)里嵌套了一個switch語句,for循環(huán)了三次,當(dāng)i=9時,i/10=0,執(zhí)行switch語句中case0分支,m和n的值各加1,變?yōu)?和1,然后遇到breake語句,退出switch語句;當(dāng)i=10,i/10=1,執(zhí)行switch語句中default分支,使k和n的值各加1,變?yōu)?和1,退出switch語句:當(dāng)i=11時,i/10=1,執(zhí)行switch語句中default分支,k和n的值各加1變,為2和3,退出switch語句,循環(huán)結(jié)束。故該空格處應(yīng)該填132。
27.!=returnj!=returnj解析:函數(shù)fun中,變量j用于控制刪除后剩下的數(shù)中的下標(biāo),i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個元素的下一個元素的下標(biāo),所以訂語句中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個元素,若條件成立則表示出現(xiàn)了不同的值,a[i]要添加到新數(shù)組中。該算法只能用于數(shù)組已排序的題目中。
28.-f或f*-1或-1*f或f*(-1)或(-1)*ffun(10)-f或f*-1或-1*f或f*(-1)或(-1)*f\r\nfun(10)解析:調(diào)用fun()函數(shù)計算m的值,在主函數(shù)中的空格處應(yīng)該填調(diào)用fun()函數(shù)的語句。fun()函數(shù)有一個形參n,為每次參加計算的值的個數(shù),故在主函數(shù)中的空格處應(yīng)該填fun(10),回到fun()函數(shù),函數(shù)用到了一個for循環(huán),共循環(huán)n次,當(dāng)循環(huán)第i次的時候,m的值等于m=1-2+……+[(-1)的i-1次方]*i,所以在fun()函數(shù)的空格處應(yīng)該填使f改變符號的語句,故應(yīng)填-f或f*-1或-1*f或f*(-1)或(-1)*f。
29.數(shù)據(jù)流數(shù)據(jù)流解析:結(jié)構(gòu)化分析方法的實質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。
30.概念設(shè)計階段(數(shù)據(jù)庫概念設(shè)計階段)概念設(shè)計階段(數(shù)據(jù)庫概念設(shè)計階段)
31.77解析:此表達式為三目運算符,++a的值為6,b--的值為6,則整個表達式的值為++a的值,++a的值為7。請注意前綴++,--和后綴++,--的區(qū)別。
32.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個參數(shù),形參f1與f2分別是兩個指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實際上是執(zhí)行了fb(2)-fa(2),故執(zhí)行i=(fa,fb,2)后i的值為23-22=4。
33.空間復(fù)雜度和時間復(fù)雜度空間復(fù)雜度和時間復(fù)雜度解析:算法的復(fù)雜性是指對—個在有限步驟內(nèi)終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復(fù)雜性,算法的計算量是算法的時間復(fù)雜性。
34.00解析:根據(jù)運算符的運算順序可知,該表達式最后運算的是與(&&)運算,而任何表達式與“0”進行“與”運算,結(jié)果都為0。
35.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進行測試。
36.0/(i*i)或(double)1/(i*i)0/(i*i)或(double)1/(i*i)解析:表達式1+1/(2*2)+1/(3*3)+...+1(n*n)可寫為1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)
n
即:∑1÷(i×i)
i=1
對應(yīng)的C語言的表達式s=s+1.0/(i*i)。注:必須要寫成1.0的形式,否則1/(i,i)返回值為其值截尾取整,即恒為0。
37.br[i]br[i]解析:函數(shù)fun的功能是求出二維數(shù)組每行元素中的最大值。對于3行4列的二維數(shù)組將有3個最大值存放到數(shù)組br[]中。x存放的是每行的最大值,當(dāng)求出每行的最大值x后,應(yīng)該將x賦值給br[]。因此此處填空應(yīng)該是br[i]。
38.星型、總線型和環(huán)型星型、總線型和環(huán)型
39.int*p*p或p[0]int*p\r\n*p或p[0]
40.*pmax=*px*pmax=*px解析:首先將變量x的值放到max中,然后依次和變量y、z進行比較。若有比max大的數(shù),將該數(shù)存放到max中,這樣最后在max中的值就是x、y、z中的最大值。
41.D解析:題目中定義的函數(shù)fun()有兩個參數(shù),一個是字符型變量ch,另一個是浮點型變景x,函數(shù)類型是void即無返回值。選項A調(diào)用fun的第1個參數(shù)是字符串常量與字符變量不匹配,所以不正確。選項B是有返回值函數(shù)的調(diào)用形式,不正確。選項C的第1個參數(shù)是錯誤的字符常量,字符常量是用單引號括起來的—個字符(是轉(zhuǎn)義字符可能有多個字符),故也不正確。選項D使用兩個整型常量調(diào)用fun這在C語言中是允許的。因為整型到字符型可以自動轉(zhuǎn)換,整型到浮點型也可以自動轉(zhuǎn)換。故應(yīng)該選擇D。
42.A解析:“%”運算符的作用是求模,意思是做除法求余,這就要求兩個運算分量均為整數(shù)。選項B中,2.5不是整數(shù),故非法;選項C中,表達式x+n計算后得到的是一臨時值,臨時值不能做左值,故非法;選項D中,由于“=”運算符的結(jié)合性是“從右到左”,故先計算5=4+1,5是常量不能做左值,故選項D也非法。選項A,y==5是一個邏輯表達式,其值為真或假,可以用做右值,所以是合法的。故本題應(yīng)該選擇A。
43.D
44.D【解析】數(shù)據(jù)結(jié)構(gòu)設(shè)計、給出系統(tǒng)模塊結(jié)構(gòu)以及定義模塊算法都屬于設(shè)計階段,而定義需求并建立系統(tǒng)模型屬于分析階段。
45.C解析:本題考查指向指針的指針。*c表示c間接指向的對象的地址,而**c是c間接指向的對象的值。在c*&b中,已經(jīng)把b的地址存放在c里了,*c就指向了b的地址,而b里存放的就是a的地址,那么**c應(yīng)該是變量a的值。也可以用排除法排除選項A),B)。由b=&a可知,這兩個選項是同一個意思,變量b中的值就是變量a的地址。所以可以排除。
46.D解析:本題考查的重點是C語言中對字符串的理解。選項B是錯誤的,兩個字符串不一定非要字符一樣多才可以比較大??;選項C是錯誤的,不能用關(guān)系運算符來對字符串進行大小比較。因為空串只有一個null字符(其值為零),從而,它一定比空格打頭的字符串小,所以選項D是正確的。
47.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認測試和系統(tǒng)測試。
(1)單元測試是針對每個模塊進行的測試,它可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發(fā)現(xiàn)詳細設(shè)計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。
(2)集成測試是在單元測試的基礎(chǔ)上,根據(jù)模塊結(jié)構(gòu)圖將各個模塊連接起來,必須精心計劃,應(yīng)提交集成測試計劃、集成測試規(guī)格說明和集成測試分析報告。主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題。集成測試可以發(fā)現(xiàn)概要設(shè)計時犯的錯誤。
(3)確認測試用于驗證軟件的功能和性能及其他特性是否與用戶的要求一致。確認測試主要用于發(fā)現(xiàn)需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應(yīng)該仔細設(shè)計測試用例和測試過程。確認測試必須有用戶參加,或以用戶為主,用戶應(yīng)參與設(shè)計測試用例,通常情況下,主要使用生產(chǎn)中的實際數(shù)據(jù)進行測試,測試數(shù)據(jù)通過用戶接口輸入。
(4)系統(tǒng)測試是將已經(jīng)通過確認測試的軟件,作為整個計算機系統(tǒng)的元素與計算機硬件、外設(shè)和網(wǎng)絡(luò)等其他因素結(jié)合在一起,進行一系列的組裝測試和確認測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現(xiàn)問題定義時犯下的錯誤。
48.B解析:指針變量操作。
49.B解析:scanf函數(shù)的一般格式是:
scanf(格式控制,地址表列)
該格式中,地址表列中應(yīng)是變量地址,而不是變量名。注意:調(diào)用putchar和getchar函輸出和輸入字符。
50.C解析:本題考查的知識點是運算符的優(yōu)先級.在復(fù)合賦值語句中,應(yīng)該由右向左依次賦值,在表達式中,右端由i*=k得i=2*2為4,k=k+i,即k值為6,m=k故m=6.所以4個選項中C正確。
51.A解析:關(guān)系表中,每一行稱為一個元組,對應(yīng)表中的一條記錄;每一列稱為表中的一個屬性,對應(yīng)表中的一個字段;在二維表中凡能惟一標(biāo)識元組的最小屬性集稱為該表的鍵或碼。
52.C解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據(jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。所以,本題正確答案為C。
53.C解析:對象的基本特點包括;標(biāo)識惟一性、分類性、多態(tài)性、封裝性和獨立性等。繼承性不屬于對象的基本特點。
54.B解析:本題考查了程序的基本結(jié)構(gòu)。程序由一些基本結(jié)構(gòu)組成。任何一個大型的程序都由3種基本結(jié)構(gòu)組成,由這些基本結(jié)構(gòu)順序的構(gòu)成了一個結(jié)構(gòu)化的程序。這3種基本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
55.A
56.D解析:a='ABCD'書寫錯誤,因為“;”左邊不能出現(xiàn)常量;數(shù)組名s是代表s數(shù)組首地址的地址常量,而不是變量;字符串只有在定義時維數(shù)可以省略。
57.B解析:argc中存入的是命令行中字符串的個數(shù)。argv是一個指向字符型的指針數(shù)組的指針。
58.B
59.B解析:本題考核的知識點是自增運算符和自減運算符的使用.程序中i的值用八進制表示(十進制為8),++i是在變量使用前自身先加1,而j--是在變量使用后自身減1。所以,4個選項中B符合題意。
60.C解析:本題考查的是逗號表達式。逗號表達式的求解步驟是先求解表達式1,然后依次求解表達式2,直到表達式N的值。整個逗號表達式的值就是最后一個表達式N的值。表達式(x=3*y,x+6)中,x=15。表達式y(tǒng)=x-1=14。
61.A在變量定義doublea,*p:&a;中,*號是一個指針運算符,而非間址運算符,因此A)錯誤。
62.C學(xué)號是學(xué)生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個表能夠直接聯(lián)系且能唯一定義的學(xué)號和課號,所以選擇C項。
63.D
64.B解析:條件表達式的形式為:“表達式1?表達式2:表達式3”。其含義為:當(dāng)“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值就是整個條件表達式的值;當(dāng)“表達式1”的值為零時,求出“表達式3”的值,此時“表達式3”的值就是整個條件表達式的值。對于本題來說,當(dāng)表達式EXP為非0值時條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時,執(zhí)行語句j--;這等同于條件表達式“(EXP!=0)?i++:i++;”。
65.D該題考查邏輯與”&&”和邏輯或”||”以及邏輯非”!¨符號的用法。選項A)即3&&4為真;選項B)即3<=4為真;選項C)是一個邏輯或與邏輯與的混合運算,只要執(zhí)行了邏輯或左半部分,程序?qū)⒅苯油V箞?zhí)行邏輯或右半部
分程序,因為x的值為真;此時選項c)變?yōu)閘&&一1為真。選項D)不用計算,括號內(nèi)邏輯或右邊的值為l,因而括號內(nèi)的值為1,再進行邏輯非運算得0。
66.C
\n本題考查for循環(huán)及if語句。當(dāng)執(zhí)行到第一個滿足(i*i>一20)&&(i*i<=100)這個條件的i出現(xiàn)時,break跳出循環(huán),執(zhí)行下列的printf語句。
\n
67.A
68.A外循環(huán)第一次i的值為1,內(nèi)循環(huán)第一次j的初值為l,打印1*1=1;內(nèi)循環(huán)第二次j的值為2,打印1$2=2;內(nèi)循環(huán)第三次J的值為3,打印1}3=3,打印回車換行,退出內(nèi)循環(huán)。外循環(huán)第二次i的值為2,內(nèi)循環(huán)第一次j的初值為2,打印2*2=4;內(nèi)循環(huán)第二次j的值為3,打印2。3=6,打印回車換行,退出內(nèi)循環(huán)。外循環(huán)第三次i的值為3,內(nèi)循環(huán)第一次j的初值為3,打印3*3=9,打印回車換行,退出內(nèi)循環(huán)。
69.A解析:軟件調(diào)試的任務(wù)是診斷和改正程序中的錯誤,本題正確答案為A)。其他二項描述不正確,選項B)描述不全面,選項C)描述太絕對,選項D)描述不符合定義。
70.A
71.C解析:數(shù)據(jù)庫(Database,簡稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個應(yīng)用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共事”之特點。
72.A
73.B
74.B本題考查函數(shù)的輸出格式。在printf函數(shù),格式說明符中有兩個“%”說明;將第1個%后面的字符原樣輸出,并不輸出其對應(yīng)r的變量值。
75.B
76.A*P的意思是取其指向地址的內(nèi)容,P是指向x地址的指針,因此輸出*p也就是輸出x的內(nèi)容,即0,故選擇B選項。
77.A返回值為指針變量指向的數(shù)據(jù),該數(shù)據(jù)已被定義為整型。因此A選項正確。
78.D
79.C
80.A
81.
82.
【解析】此題是刪除字符串中的星號。思路是通過for循環(huán)來完成對字符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號前的位置,“if(a[i]!=ˊ*ˊ)”“a[j++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。
2021年四川省內(nèi)江市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:structSTU{charname[10];intnum;floatTotalScore;};voidf(structSTU*p){structSTUs[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;++p;++q;*p=*q;}main(){structSTUs[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};f(s);printf("%s%d%3.0f\n",s[1].name,s[1].num,s[1].TotalScore);}程序運行后的輸出結(jié)果是______。
A.SunDan20044580
B.Penghua20045537
C.LiSiGUO20042580
D.SunDan20041703
2.與“y=(x>0?1:x<0?-1:0)”;的功能相同的if語句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;
B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"
C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;
D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;
3.在關(guān)系中凡能惟一標(biāo)識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的()
A.連接碼B.關(guān)系碼C.外碼D.候選碼
4.軟件設(shè)計中劃分模塊的一個準(zhǔn)則是()。A.低內(nèi)聚低耦合B.高內(nèi)聚低耦合C.低內(nèi)聚高耦合D.高內(nèi)聚高耦合
5.
讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一個文件指針,指向待讀取的文件
B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址
D.一個內(nèi)存塊的字節(jié)數(shù)
6.設(shè)有定義“Charp[]={‘1’,‘2’,‘3’},*q=p;”,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是()。A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
7.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
8.
9.C語言提供的合法關(guān)鍵字是()
A.switchB.cherC.caseD.default
10.對關(guān)系S和R進行集合運算,結(jié)果中既包含S中的所有元組也包含R中的所有元組,這樣的集合運算稱為()
A.并運算B.交運算C.差運算D.積運算
11.設(shè)n、m為一棵二叉樹上的兩個結(jié)點,在中序遍歷時,n在m之前的條件是_____________。
A.n在m右方B.n是m的祖先C.n在m左方D.n是m子孫
12.在非線性結(jié)構(gòu)中,每個結(jié)點()。
A.無直接前趨
B.只有一個直接前趨和個數(shù)不受限制的直接后繼
C.只有一個直接前驅(qū)和后繼
D.有個數(shù)不受限制的直接前驅(qū)和后繼
13.
14.表達式a*(-b+c)的逆波蘭式是()
A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*
15.
16.以下是根據(jù)文件大小分配存儲空間的一個算法偽代碼,請問其空間復(fù)雜度是多少()A.O(n)B.O(n^2)C.O(2^n)D.O(n*log(n))
17.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)
18.以下程序的輸出結(jié)果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}
A.650B.1470C.5430D.輸出值不定
19.設(shè)有定義:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函數(shù)fun返回值的類型是()。
A.T類型的結(jié)構(gòu)體B.指向結(jié)構(gòu)體類型的指針C.int類型的元素D.int類型的指針
20.下列判斷正確的是()。
A.chara="ABCD":等價于char*a;*a="ABCD":
B.charstr[10]={"ABCD"}:等價于charstr[10];str[]={"ABCD"};
C.char*s="ABCD":等價于chars;*s="ABCD";
D.charc[5]="ABCD",d[5]="ABCD":等價于charc[5]-d[5]="ABCD";
二、2.填空題(20題)21.實現(xiàn)程序可將磁盤中的一個文件復(fù)制到另一個文件中,兩個文件的文件名在可執(zhí)行命令的命令行中(相當(dāng)于copy命令),假定文件在當(dāng)前目錄下。請補全程序。
#include<stdio.h>
voidmain(intargc,char*argv[])
{FILE*f1,*f2;
if(argc<【】)
{printf("parametererror!\n");exit(0);}
f1=fopen(argv[1],"r");
f2=fopen(argv[2],"w");
while(【】)fputc(fgetc(f1),f2);
fclose(f1);
fclose(f2);
}
22.執(zhí)行下面程序段時輸出suet,請?zhí)羁铡?/p>
main()
{staticchara[]="student";
char*p;
for(p=a;p<【】;p+=2)
putchar(*p);
}
23.【】是數(shù)據(jù)庫設(shè)計的核心。
24.以下程序的功能是:通過函數(shù)func輸入字符并統(tǒng)計輸入字符的個數(shù)。輸入時用字符作為輸入結(jié)束標(biāo)志。請?zhí)羁铡?include<stdio.h>long();/*函數(shù)說明語句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}
25.有如下圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:
structaa
{intdata;
【】}node;
26.以下程序運行后的輸出結(jié)果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
27.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使相同的數(shù)只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)fun返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。
例如,若一維數(shù)組中的數(shù)據(jù)是:
2223445666677899101010
刪除后,數(shù)組中的內(nèi)容應(yīng)該是:2345678910。請?zhí)羁铡?/p>
#include<stdio.h>
#defineN80
intfun(inta[],intn)
{inti,j=1;
for(i=1;i<n;i++)
if(a[j-1]【】a[i])a[j++]=a[i];
【】;
}
main()
{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);
n=fun(a,n);
printf("\nThedataafterdeleted:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");
}
28.以下程序的功能是調(diào)用函數(shù)fun計算:m=1-2+3-4+…+9-10,并輸出結(jié)果。請?zhí)羁铡?/p>
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
m+=i*f;
f=【】;
returnm;
}
main()
{printf("m=%d\n",【】);}
29.結(jié)構(gòu)化分析方法是面向______進行分析的方法。
30.數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、______、邏輯設(shè)計階段、物理設(shè)計階段、實施階段、運行和維護階段。
31.設(shè)inta=5,b=6,表達式(++a==b--)?++a:--b的值是【】。
32.有以下程序
intfa(intx){returnx*x;}
intfb(intx){retumx*x*x;}
intf(int(*f1)(),int(*f2)(),intx)
{returnf2(x)-f1(x);}
main()
{inti;i=f(fa,fb,2);printf("%d\n",i);}
程序運行后,輸出結(jié)果是【】。
33.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為為算法的【】。
34.若a=l,b=2,則表達式!(x=a)||y=b)&&0的值是______。
35.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。
36.函數(shù)pi的功能是根據(jù)以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)
現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。
#include"math.h"
{doubles=0.0;longi;
for(i=1;i<=n;i++)s=s+【】;
return(sqrt(6*S));
}
37.以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?zhí)羁眨?/p>
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,B);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*bar)
{inti,j,x;
for(i=0;i<m;i++)
{X=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];()=x:
}
}
38.常見的拓撲結(jié)構(gòu)有【】。
39.下面函數(shù)用來求出兩個整數(shù)之和,并通過形參傳回兩數(shù)相加之和值。請?zhí)羁铡?/p>
intadd(intx,inty,【】,)
{【】=x+y;}
40.以下程序的功能是:利用指針指向三個整型變量,并通過指針運算找出三個數(shù)中的最大值,輸出到屏幕上。請?zhí)羁铡?/p>
main()
{intx,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
【】;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax=*pz;
printf("max=%d\n",max);}
三、1.選擇題(20題)41.設(shè)函數(shù)fun的定義形式為voidfun(charch,floatx){…}則以下對函數(shù)fun的調(diào)用語句中,正確的是
A.fun("abc",3.0);
B.t=fun('D',16.5);
C.fun('65',2.8);
D.fun(32,32);
42.若變景均已正確定義井賦值,以下合法的C語言賦值語句是()
A.x=y==5;B.x=n%2.5;C.x+n=i;D.x=5=4+1;
43.若有下面的說明和定義,則sizeof(structaA)的值是()struetaa{intr1;doubler2floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;
A.30B.29C.24D.22
44.在軟件開發(fā)中,下面任務(wù)不屬于設(shè)計階段的是______。
A.數(shù)據(jù)結(jié)構(gòu)設(shè)計B.給出系統(tǒng)模塊結(jié)構(gòu)C.定義模塊算法D.定義需求并建立系統(tǒng)模型
45.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;┆}程序在執(zhí)行了c=&b;b=&a;語句后,表達式**c的值是()。
A.變量a的地址B.變量b中的值C.變量a中的值D.變量b的地址
46.以下關(guān)于字符串的敘述中正確的是()。
A.C語言中有字符類型的常量和變量
B.兩個字符串中的字符個數(shù)相同時才能進行字符串大小的比較
C.可以用關(guān)系運算符對字符串的大小進行比較
D.空串一定比空格打頭的字符串小
47.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。
A.確認測試B.集成測試C.驗證測試D.驗收測試
48.以下程序段的輸出結(jié)果是______。intsbr[]={10,8,6,4,2},*p=str+1;printf("%d\n",*(p+2));
A.6B.4C.10D.不確定的值
49.x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是
A.INPUTx、v、z;
B.scanf("%d%d%d",&x,&y,&z);
C.scanf("%d%d%d",x,y,z);
D.read("%d%d%d",&x,&y,&z);
50.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf("%d,%d\n",m,i);}執(zhí)行后的輸出結(jié)果是
A.8,6B.8,3C.6,4D.7,4
51.關(guān)系表中的每一橫行稱為一個()。A.元組B.字段C.屬性D.碼
52.算法的時間復(fù)雜度是指______。
A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數(shù)D.算法程序中的指令條數(shù)
53.以下不屬于對象的基本特點的是()
A.分類性B.多態(tài)性C.繼承性D.封裝性
54.結(jié)構(gòu)化程序設(shè)計方法的3種基本控制結(jié)構(gòu)中不包括
A.循環(huán)結(jié)構(gòu)B.遞歸結(jié)構(gòu)C.順序結(jié)構(gòu)D.選擇結(jié)構(gòu)
55.微機顯示器一般有兩組引線,它們是()
A.電源線與信號線B.電源線與控制線C.電源線與地線D.控制線與地線
56.下列判斷正確的是()。
A.chara="ABCD";等價于char*a;*a="ABCD";
B.charstr[10]={"ABCD"};等價于charstr[10];str[]={"ABCD"};
C.char*s="ABCD";等價于chars;*s="ABCD";
D.charc[5]="ABCD",d[5]="ABCD";等價于charc[5]=d[5]="ABCD";
57.下面程序的文件名為t.exe,在DOS下輸入的命令行參數(shù)為:ttomeetme<回車>
則程序輸出的結(jié)果是
#include"stdio.h"
main(argc,argv)
intargc;char*argv[];
{inti;
printf("%d\n",argc);}
A.3B.4C.2D.以上答案都不正確
58.下述語句中,在字符串s1和s2相等時顯示"theyareEqual"的是()。
A.if(*s1=*s2)puts("theyareEqual");
B.if(!strcmp(s1,s2))puts("theyareEqual");
C.if(s1==s2)puts("theyareEqual");
D.if(strcmp(s1,s2))puts("theyareEqual");
59.以下程序輸出的結(jié)果是#include<stdio.h>main(){inti=010,j=10;printf("%d,%d\n",++i,j--);}
A.11,10B.9,10C.010,9D.10,9
60.下面程序的運行結(jié)果是()。y=5;x=14;y=((x=3*y,x+6),x-1);printf("x=%d,y=%d”,x,y);
A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27
四、選擇題(20題)61.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。A.定義語句中的*號是一個間址運算符
B.定義語句中的*號是一個說明符
C.定義語句中的p只能存放double類型變量的地址
D.定義語句中,*p=&a把變量a的地址作為初值賦給指針變量P
62.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為()。
A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績
63.
64.設(shè)有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
65.設(shè)x,y和z都是int型變量,且x=3,y=4,z=5,則下面表達式中,值為0的表達式是()。
A.
B.
C.
D.
66.
下列程序的輸出結(jié)果是()。
#include<stdio.h>
main
{inti;
for(i=1;i<=10,i++)
{if((i*i>=20)&&(i*i<=100))
break;
}
printf("%d\n",i*i;
}
A.49B.36C.25D.64
67.
68.有以下程序:
程序運行后的輸出結(jié)果是()。
69.軟件(程序)調(diào)試的任務(wù)是()。
A.診斷和改正程序中的錯誤B.盡可能多地發(fā)現(xiàn)程序中的錯誤C.發(fā)現(xiàn)并改正程序中的所有錯誤D.確定程序中錯誤的性質(zhì)
70.
71.下列有關(guān)數(shù)據(jù)庫的描述,正確的是______。
A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關(guān)系C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件
72.
73.
74.若有下列定義(設(shè)int類型變量占2個字節(jié)):inti=8,j=9;則下列語句:printf("i=%%d,j=%%d\n",i,j);輸出的結(jié)果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
75.
76.若有定義:“int*P,x=0,*p,p=&x;”,則語句“printf("%d\n",*p);”的輸出結(jié)果是()。
A.隨機值B.0C.x的地址D.P的地址
77.已定義以下函數(shù):
fun函數(shù)的返回值是()。
A.一個整數(shù)B.不確定的值C.形參P中存放的值D.形參P的地址值
78.若有如下定義,則__________是對數(shù)組元素的正確的引用。.
inta[10],*p;p=a;
A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p
79.
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun的功能是:將s所指字符串的正序和反序進行連接,形成的新串放在t所指的數(shù)組中。例如,當(dāng)S所指字符串為“ABCD”時,t所指字符串中的內(nèi)容應(yīng)為“ABCDDCBA”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:
參考答案
1.B解析:f函數(shù)用了顯式傳地址的方式,因此主函數(shù)中的s值發(fā)生了變化。
2.By=(x=)071:x<0?-1:0)中有兩個三目運算符,因此按從右到在的順序運算,可寫成y=(x>071:(x<0?-1:0)),故選擇8選項。
3.DD)【解析】在關(guān)系中凡能惟一標(biāo)識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的候選碼或候選鍵。從二維表的所有候選鍵中選取一個作為用戶使用的鍵稱為主鍵或主碼。
4.B一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。
5.Cfread函數(shù)中的參數(shù)buffer是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存塊中。
6.A根據(jù)題目中的定義可知,“sizeof(p)”計算的是數(shù)組p中所有元素所占用的字節(jié)數(shù),而不是char型數(shù)據(jù)所占的字節(jié)數(shù)。故本題答案為A選項。
7.A本題考查函數(shù)值的類型。在函數(shù)調(diào)用時,盡管Y的類型是float.x的類型是double,但是因為函數(shù)定義時沒有指定類型說明,系統(tǒng)默認函數(shù)值的類型為int型,所以計算后Y的類型是int型。
8.B
9.C
10.AA)【解析】關(guān)系的并運算是指由結(jié)構(gòu)相同的兩個關(guān)系合并,形成一個新的關(guān)系,新關(guān)系中包含兩個關(guān)系中的所有元組。
11.C
12.D
13.D
14.D
15.B
16.C
17.C
18.A解析:對未給出初始值的整數(shù)數(shù)組元素,被默認初始化為零。
19.B由題意可知:使用typedef將類型“struct{intx,y;}*”重命名為“USER”,所以函數(shù)fun的返回類型為“struct{intx,y;}*”,即指向結(jié)構(gòu)體類型的指針。故本題答案為B選項。
20.Da=“ABCD”書寫錯誤,因為“=”左邊不能出現(xiàn)常量;數(shù)組名S是代表S數(shù)組首地址常量,而不是變量;字符串只有在定義時維數(shù)可以省略。
21.3!feof(f1)3\r\n!feof(f1)解析:要實現(xiàn)文件復(fù)制,需要指定源文件及目的文件,因此在命令行下執(zhí)行程序時至少要指定兩個參數(shù),加上程序名本身,故argc的值至少為3,因此第一空應(yīng)填3。while循環(huán)中語句fputc(fgetc(f1),f2);的目的是將f1中的字符依次讀出并寫入到f2對應(yīng)的文件中去,直至文件f1結(jié)束為止,因此第二空為!feof(f1)。
22.a+strlen(a)或strlen(a)+aa+strlen(a)或strlen(a)+a解析:要輸出suet就要將指針從字符串開始移動到字符串結(jié)尾,表達式p=a使p指向字符串的首地址;表達式p+=2使每次循環(huán)p值加2,是向前移動指針;空白處應(yīng)判斷是否到達字符串結(jié)尾,因此應(yīng)填字符串的首地址加字符串長度,strlen(a)的返回值為字符串a(chǎn)所含的字符個數(shù)。
23.數(shù)據(jù)模型數(shù)據(jù)模型
24.tunc()m++tunc()m++解析:第一空白處,在C語言中如果子函數(shù)在主函數(shù)之后定義,就要對其進行說明,說明的形式為:“函數(shù)類型名函數(shù)名”。所以此處填寫func()。第二空白處,整型變量m表示輸入字符的個數(shù),所以每輸入一個字符,變量m的值就加1。所以此處填寫m++。
25.structaa*lhead*rchild;structaa*lhead,*rchild;解析:結(jié)構(gòu)體對鏈表的定義。
26.132132解析:本題考核的知識點是for循環(huán)與switch語句的綜合運用。主函數(shù)中用了一個for循環(huán),for循環(huán)里嵌套了一個switch語句,for循環(huán)了三次,當(dāng)i=9時,i/10=0,執(zhí)行switch語句中case0分支,m和n的值各加1,變?yōu)?和1,然
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 口譯就餐對話演示
- 企業(yè)標(biāo)準(zhǔn)的編寫合同5篇
- 二零二五年度智能車庫使用權(quán)出售及管理服務(wù)合同3篇
- 二零二五版2025年度情感修復(fù)協(xié)議書-自愿離婚調(diào)解合同3篇
- 2025版共享用工社會保險繳納協(xié)議范本3篇
- 設(shè)備維護保養(yǎng)培訓(xùn)教學(xué)案例
- 中考題型連連看近3年幻燈片課件
- 第8課現(xiàn)代文學(xué)和美術(shù)教學(xué)文案
- 電腦操作會考電腦2001-2002上課講義
- 二零二五年茶葉市場推廣合作合同2篇
- 帆軟報表培訓(xùn)課件
- 儀器分析課件 儀器分析緒論
- 英語現(xiàn)在完成時專項練習(xí)題(附答案)
- 制造樣品生產(chǎn)作業(yè)指導(dǎo)書
- 服務(wù)經(jīng)營培訓(xùn)課件ppt 老客戶經(jīng)營綜合版
- MT/T 199-1996煤礦用液壓鉆車通用技術(shù)條件
- GB/T 10357.1-2013家具力學(xué)性能試驗第1部分:桌類強度和耐久性
- 公寓de全人物攻略本為個人愛好而制成如需轉(zhuǎn)載注明信息
- 第5章-群體-團隊溝通-管理溝通
- 腎臟病飲食依從行為量表(RABQ)附有答案
- 園林施工管理大型園林集團南部區(qū)域養(yǎng)護標(biāo)準(zhǔn)圖例
評論
0/150
提交評論