版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2021-2022學(xué)年廣東省陽江市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(12題)1.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的事()。
A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對
2.以下是if語句的基本形式:
if(表達(dá)式.語句
其中“表達(dá)式”()。
A.必須是邏輯表達(dá)式B.必須是關(guān)系表達(dá)式C.必須是邏輯表達(dá)式或關(guān)系表達(dá)式D.可以是任意合法的表達(dá)式
3.對表進行水平方向和垂直方向的分割,分別對應(yīng)的關(guān)系運算是()
A.選擇和投影B.投影和選擇C.選擇和聯(lián)接D.投影和聯(lián)接
4.數(shù)據(jù)流圖用于抽象地描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。
A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭
5.C語言中運算對象必須是整型的運算符是()。
A.%=B./C.=D.<=
6.以下不能正確進行字符串賦初值的語句是
A.charstr[5]="good!";
B.charstr[]="good!";
C.char*srt="good!";
D.charstr[5]={'g','o','o','d'};
7.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十進制代碼為97,則執(zhí)行上述程序段后輸出結(jié)果是()。A.因變量類型與格式描述符的類型不匹配輸出無定值
B.輸出項與格式描述符個數(shù)不符,輸出為零值或不定值
C.a,97,12k=12
D.a,97,k=12
8.下面C程序段中count++語句執(zhí)行的次數(shù)為()A.15B.16C.31D.32
9.在多媒體計算機系統(tǒng)中,不能用以存儲多媒體信息的是A.光纜B.軟盤C.硬盤D.光盤
10.
11.若進棧序列為1,2,3,4,進棧過程中可以出棧,則下列不可能的一個出棧序列是______。
A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1
12.有以下程序:#include<stdio.h>main(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i+j;}}printf("m=%d\n",m);}程序運行后的輸出結(jié)果是()。A.m=6B.m=2C.m=4D.m=3
二、2.填空題(12題)13.關(guān)系可以有3種類型,即基本關(guān)系(又稱基本表或基表)、查詢表和【】。
14.下列程序的運行結(jié)果是______。
#include<stdio.h>
main()
{inta,b,c;
a=3;b=4;c=5;
if(a>b)
if(a>c)
printf("%d",a);
elseprintf("%d",b);
printf("%d\n",c);
}
15.下面程序的運行結(jié)果是()。
#include<stdio.h>
#defineSlZE12
main()
{chars[SIZE];inti;
for(i=0;i<SIZE;i++)s[i]='A'+i+32;
sub(s,5,SIZE-1);
for(i=0;i<SIZE;i++)printf("%c",s[i]);
printf("\n");}
sub(char*a,intt1,intt2)
{charch;
while(t1<t2)
{ch=*(a+t1);
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--;
}
}
16.下列程序輸出的結(jié)果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
17.下面程序的功能是:輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,j;
for(i=0【】;i++)
{j=i*10+6;
if(【】)continue;
printf("%d",j);
}
}
18.若a的值為1,則表達(dá)式!a‖++a的值是______。
19.以下程序的功能是:通過函數(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:}
20.深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為______。
21.在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,【】負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建。
22.軟件是程序、數(shù)據(jù)和【】的集合。
23.數(shù)據(jù)的______結(jié)構(gòu)在計算機存儲空問中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。
24.以下程序的功能是從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;charch;
fp=fopen(【】);
ch=fgetc(fp);
while(!feof(fp)){putchar(ch);ch=fgetc(fp);}
putchar('\n');fclose(fp);
}
三、3.程序設(shè)計題(10題)25.請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值:
例如,在主函數(shù)中從鍵盤給n輸入15,則輸出為:s=2.718282。
注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
26.編寫一個函數(shù)fun,它的功能是:實現(xiàn)兩個字符串的連接(不使用庫函數(shù)strcat),即把p2所指的字符串連接到p1所指的字符串后。
例如,分別輸入下面兩個字符串:
FirstString--
SecondString
程序輸出:
FirtString--SecondStdng
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
27.請編寫函數(shù)fun,其功能是將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)個位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和千位上。
例如,當(dāng)a=16,b=35,調(diào)用該函數(shù)后,c=5361。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
voidfun(inta,intb/long*c)
{
}
main()
{
inta,b;
longc;
clrscr();
printf("Inputa,b;");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:%ld\n",c);
}
28.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fjun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN12
typedefstruct
{charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
{
}
main()
STRECsIN]={{"GA05",85},{"GA03",76},
{"GA02",69},{"GA04",85},{"GA01",91},
{"GA07",72},{"GA08",64},{"GA06",87},
{"GA09",60},{"GAll",79},{"GA12",73},
{"GA10",90}};
STRECh[N],t;
FILE*out;
inti,j,n;
doubleave;
ave=fun(s,h,&n);
printf("The%dstudentdatawhichis
higherthan%7.3f:In",n,ave);
for(i=0;i<n;i++)
printf("%s%4.1f\n",h[i].num,h[i].s);
printf("\n");
out=fopen("out90.dat","w");
fprintf(out,"%dkn%7.3f\n",n,ave);
for(i=0;i<n-1;i++)
for(j=i+l;j<n;j++)
if(h[i].s<h[j].s)
{t=hIi];h[i]=h[j];h[j]=t;}
/*分?jǐn)?shù)從高到低排列*/
for(i=0;i<n;i++)
fprintf(out,"%4.1f\n",h[i].s);
fclose(out);
}
29.編寫一個函數(shù),該函數(shù)可以統(tǒng)計一個長度為2的字符串在另一個字符串中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為asdasasdfgasdaszx67asdmklo,子字符串為as,則應(yīng)當(dāng)輸出6。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和具他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(char*str,char*substr)
{
}
main()
{
charstr[81],substr[3];
intn;
clrscr();
printf("輸入主字符串");
gets(str);
printf("輸入子字符串");
gets(substr);
puts(str);
puts(substr);
n=fun(shr,substr);
printf("n=%d\n",n);
}
30.請編寫函數(shù)fun(),其功能是:將s所指字符串中下標(biāo)為奇數(shù)的字符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。
例如,當(dāng)s所指字符串中的內(nèi)容為siegAHdied,則在t所指數(shù)組中的內(nèi)容應(yīng)是seAde。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*S,chart[])
{
}
main()
{
chars[100],t[100];
clrscr();
printf("\nPleaseenterstrings:");
scanf("%S",S);
fun(S,t);
printf("\nTheresultis:%s\n",t);
}
31.請編寫一個函數(shù)voidfun(char*ss),其功能是:將字符串ss中所有下標(biāo)為偶數(shù)位置上的字母轉(zhuǎn)化為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。
例如,若輸入abc4Efg,則應(yīng)輸出AbC4EfG。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(char*ss)
{
}
main()
{
chartt[51];
clrscr();
printf("Pleaseenterancharacterstring
within50characters:\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n
%s",tt);
fun(tt);
printf("\nbecomes\n\%s",tt);
}
32.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。
注意:部分源程序給出如下.
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fum的花括號中填入所編寫的若啡:語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECsIN]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},
{"GA014",91},{"GA011",66},{"GA017",64},
{"GA018",64},{"GA016",72}};
inti;
FILE*out;
fun(s);
printf("Thedataaftersorted:In");
for(i=0;i<N;i++)
{if((i)%4=-0)
/*每行輸出4個學(xué)生記錄*/
printf("\n");
printf("%s%4d",s[i].num,s[i].s);
}
printf("\n");
out=fopen("out16.dat","w");
for(i=0;i<N;i++);
{if((i)%4==0&&i)
fprintf(out,"\n");
fprintf(out,"%4d",s[i].s);
}
fprintf(out,"\n");
fclose(out);
}
33.函數(shù)fun的功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時ASCII值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一含新串放在t所指的數(shù)組中。
例如,若s所指字符串中的內(nèi)容為:“ABCDEFGl23456”,其中字符A的ASCII碼值為奇數(shù),因此應(yīng)當(dāng)刪除:其中字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下標(biāo)為奇數(shù),因此也應(yīng)當(dāng)刪除;而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標(biāo)也為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:“246”。
注意:部分源程序存在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
34.請編寫一個函數(shù)voidfun(chara[],charb[],intn),其功能是:刪除一個字符串中指定下標(biāo)的字符。其中,a指向原字符串,刪除指定字符后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。
例如,輸入一個字符串:World,然后輸入3。則調(diào)用該函數(shù)后的結(jié)果為:Word。
注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
四、單選題(0題)35.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
五、單選題(0題)36.已知字母a的ASCII碼為十進制數(shù)97,下面程序的輸出結(jié)果是()。#include<stdio.h>main(){charc1,c2;c1='a'+'6'-'0';c2='a'+'3'-'0';printf("%c,%c\n",c1,c2);}
A.輸出無定值B.d,eC.e,fD.g,d
六、單選題(0題)37.若有定義“inta,b;”,通過語句“scanf(“%d;%d,”&a,&b)能把整數(shù)3賦給變量a、5賦給變量b的輸入數(shù)據(jù)是()。
A.35B.3,5C.3;5D.35
參考答案
1.A解釋執(zhí)行是計算機語言的一種執(zhí)行方式。由解釋器現(xiàn)場解釋執(zhí)行,不生成目標(biāo)程序。如BASIC便是解釋執(zhí)行。一般解釋執(zhí)行效率較低,低于編譯執(zhí)行。而C程序是經(jīng)過編譯生成目標(biāo)文件然后執(zhí)行的,所以C程序是編譯執(zhí)行。
2.D解析:本題主要考查關(guān)于if語句的說明,if后面圓括號中的表達(dá)式,可是任意合法的C語言表達(dá)式(如:邏輯表達(dá)式、關(guān)系表達(dá)式、算術(shù)表達(dá)式、賦值表達(dá)式等),也可以是任意類型的數(shù)據(jù)(如:整型、實型、字符型、指針型等。)
3.A解析:從關(guān)系中找出滿足給定條件的那些元組稱為選擇,是從行的角度進行的運算,即水平方向抽取元組。從關(guān)系模式中挑選若干屬性組成新的關(guān)系稱為投影,是從列的角度進行的運算,相當(dāng)于對關(guān)系進行垂直分解。所以,本題選擇A。
4.A解析:數(shù)據(jù)流圖包括四個方面,即加工(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體),不包括選項中的控制流。
5.A解析:C++語言規(guī)定:取余運算符的運算對象必須是整型,復(fù)合運算符“%=”中包含%運算,它的運算對象也必須是整型。
6.A解析:本題考核的知識點是字符數(shù)組和字符指針變量的初始化。選項A定義了一個字符數(shù)組str,具有5個元素,但賦初值的時候,初值個數(shù)卻是6個(有一個'\\0'),故選項A錯誤的;選項B定義了一個字符數(shù)組str并給它賦初值,由于省去了長度定義,長度由初值個數(shù)確定,相當(dāng)于str[6],選項B正確;選項C定義了一個字符型指針變量并用一個字符串給它賦初值,使該字符型指針指向了該字符串,選項C正確;選項D是對字符型數(shù)組中單個元素依次賦初值,選項D正確。所以,4個選項中A為所選。
7.D解析:在用基本輸出函數(shù)printf時,格式說明與輸出項的個數(shù)應(yīng)該相同。如果格式說明的個數(shù)少于輸出項的個數(shù),多余的輸出項不予輸出;如果格式說明個數(shù)多于輸出項個數(shù),則對于多余的格式項輸出不定值或0。
8.A
9.A解析:光纜是傳輸多媒體信息的通道,不能用以存儲多媒體信息。
10.A
11.C解析:棧是一種后進先出表,選項C中,先出棧的是3,說明此時棧內(nèi)必然有1,2,由于1先于2進淺,所以1不可能在2之前出棧,故選項C這種出棧序列是不可能的。
12.A本題考查了多重for循環(huán)。當(dāng)(i*j)>3時,跳出循環(huán),本題中i=1,j=3,i*J后值為3,所以執(zhí)行下邊語句:m*=i+j,也可寫成m=m*i+j,這時要注意優(yōu)先級,所以m的值為6。
13.視圖表視圖表解析:關(guān)系數(shù)據(jù)庫中通常有3種關(guān)系,即基本關(guān)系(又稱基本表或基表)、查詢表和視圖表?;颈硎窃跈C器中實際存儲數(shù)據(jù)的表。查詢表是查詢的結(jié)果所對應(yīng)的臨時表。視圖表是由基本表或其他視圖表導(dǎo)出的表,是不實際存儲數(shù)據(jù)的表。視圖表是一個虛表。
14.55解析:分析程序,當(dāng)a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結(jié)果為5。
15.abcdelkjihgfabcdelkjihgf解析:本題先給字符型數(shù)組s的12個元素賦值a到1共12個字母,函數(shù)sub(char*a,intt1,intt2)的功能是將數(shù)組a的從第t1+1個元素到t2+1個元素進行逆置,在主函數(shù)中調(diào)用sub(s,5,SIZE-1)函數(shù),是將數(shù)組s的第6個元素到第12個元素進行逆置,其他元素位置不變。
16.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作用域在函數(shù)級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。本程序首先定義了一個全局變量m=17,m=17的作用域在整個程序內(nèi)。在fun函數(shù)內(nèi)部定義了一個局部變量m=3,m=3的作用域僅在fun函數(shù)內(nèi)部,通過fun函數(shù)返回兩個形參的積再減m。在主函數(shù)中,輸出fun(a,b)/m=(5*7-3)/17=1。
17.i<=9或i<10或9>=i或10>ij%3!=0或j%3i<=9或i<10或9>=i或10>i\r\nj%3!=0或j%3
18.11解析:邏輯運算中,非1即0,非0即1,!a=0,++a為邏輯1,所以0和1相或結(jié)果為1。
19.tunc()m++tunc()m++解析:第一空白處,在C語言中如果子函數(shù)在主函數(shù)之后定義,就要對其進行說明,說明的形式為:“函數(shù)類型名函數(shù)名”。所以此處填寫func()。第二空白處,整型變量m表示輸入字符的個數(shù),所以每輸入一個字符,變量m的值就加1。所以此處填寫m++。
20.1616解析:滿二叉樹的葉子結(jié)點都在最后一層,即第4層,且第4層的結(jié)點達(dá)到最大數(shù),即25-1=16。
21.數(shù)據(jù)定義語言數(shù)據(jù)定義語言解析:在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言,數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,數(shù)據(jù)定義語言負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建,數(shù)據(jù)操縱語言負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作,數(shù)據(jù)控制語言負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、恢復(fù)等功能。
22.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。
23.邏輯邏輯解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。
24.“filea.dat”“r”“filea.dat”,“r”解析:考查對文件的操作。fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當(dāng)填入'filea.dat','r'。
25.
解析:該程序功能是計算并輸出多項式的值。該題的解題思路是。根據(jù)題干中給出的數(shù)列,首先推出每一項的表達(dá)式,然后再對多項式進行累加求和。
26.
解析:該程序功能是實現(xiàn)兩個字符串的連接。本題要把串2連接到串1之后,則需要把串2的第一個字符放到串1的尾符的位置上,把串2的后面的字符放到串1的后面的位置。
27.voidfun(intaintblong*c){*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;}voidfun(inta,intb,long*c)\r\n{\r\n*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;\r\n}解析:語句“*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;”是將a數(shù)的十位和個位數(shù)依次放在c數(shù)個位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和千位上。注意“/”和“%”的用法。
28.doublefun(STREC*aSTREC*bint*n){inti;doubleay=0.0;*n=0;for(i=0;i<N;i++)av=av+a[i].s;ay=ay/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];*n-*n+l;}/*將高于等于平均分的學(xué)生存從所指存儲單元中并統(tǒng)計人數(shù)*/returnay;/*返回嚴(yán)均分*/}doublefun(STREC*a,STREC*b,int*n)\r\n{\r\ninti;\r\ndoubleay=0.0;\r\n*n=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].s;\r\nay=ay/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{b[*n]=a[i];*n-*n+l;}/*將高于等于平均分的學(xué)生存從所指存儲單元中,并統(tǒng)計人數(shù)*/\r\nreturnay;/*返回嚴(yán)均分*/\r\n}解析:本題中第1個循環(huán)的作用求出所有分?jǐn)?shù)的總和,只有進行了av=av/N后才得到平均值(我們在前面的程序中碰到過類似問題)。第2個循環(huán)的作用是將高于等于平均分的學(xué)生存入b所指存儲單元中。同一結(jié)構(gòu)體變量之間可以互相賦值。
本程序中直接用*n來表示b的下標(biāo),注意開始時要給,*n賦0,且使用時不能少*號。因為單獨的n是一個指針變量,而我們要用的是它所指向的那個存儲單元中的值。
29.intfun(char*strchar*substr){intij=0;for(i=0;str[i+1]!='\0';i++)/*如果一個長度為2的子字符串在主字符串中出現(xiàn)一次則j+1如此循環(huán)*/if(str[i]==substr[0]&&str[i+1]==substr[1])j++;returnj;/*返回子字符串在主字符串中出現(xiàn)的次數(shù)*/}intfun(char*str,char*substr)\r\n{\r\ninti,j=0;\r\nfor(i=0;str[i+1]!='\\0';i++)/*如果一個長度為2的子字符串在主字符串中出現(xiàn)一次,則j+1,如此\r\n循環(huán)*/\r\nif(str[i]==substr[0]&&str[i+1]==substr[1])\r\nj++;\r\nreturnj;/*返回子字符串在主字符串中出現(xiàn)的次數(shù)*/\r\n}解析:該題中subsu只有兩個字符,所以可以用if語句來直接進行判斷。要注意if())中str組的下標(biāo)為i和i+1,即比較當(dāng)前字符及其以后的一個字符是否分別與substr中的字符對應(yīng)相同,若都相同則表示出現(xiàn)了一次。
30.voidfun(char*Schart[]){intij=0k=strlen(s);/*k為字符串的長度*/for(i=0;i<k;i=i+2)/*將s所指字符串中下標(biāo)為偶數(shù)的字符存入t所指字符串中*/t[j++]=s[i];t[j]='\0';/*在字符串最后加上結(jié)束標(biāo)志*/}voidfun(char*S,chart[])\r\n{\r\ninti,j=0,k=strlen(s);/*k為字符串的長度*/\r\nfor(i=0;i<k;i=i+2)/*將s所指字符串中下標(biāo)為偶數(shù)的字符存入t所指字符串中*/\r\nt[j++]=s[i];\r\nt[j]='\\0';/*在字符串最后加上結(jié)束標(biāo)志*/\r\n}解析:本題使用了一種i永遠(yuǎn)是偶數(shù)的循環(huán)方法,即for(i=0;i<k;i=i+2),因為開始時i的值為0,當(dāng)i+2循環(huán)時,此值永遠(yuǎn)是偶數(shù)。
31.voidfun(char*ss){inti;for(i=0;ss[i]!='\0';i++){if(i%2==0&&ss[i]>='a'&&ss[i]<='z')/*將ss所指字符串中所有下標(biāo)為偶數(shù)位置的字母轉(zhuǎn)換成大寫*/ss[i]==ss[i]-32;}/*大寫字母比相應(yīng)的小寫字母的ASCII碼值小32*/}voidfun(char*ss)\r\n{inti;\r\nfor(i=0;ss[i]!='\\0';i++){\r\nif(i%2==0&&ss[i]>='a'&&ss[i]<='z')/*將ss所指字符串中所有下標(biāo)為偶數(shù)位置的字母轉(zhuǎn)換成大寫*/\r\nss[i]==ss[i]-32;}/*大寫字母比相應(yīng)的小寫字母的ASCII碼值小32*/\r\n}解析:從C語言的學(xué)習(xí)中我們知道,只要將小寫字母減去32則轉(zhuǎn)換成大寫字母,將大寫字母加上32則轉(zhuǎn)成小寫字母,該程序使用if語句實現(xiàn)該功能轉(zhuǎn)換的。
32.intfun(STRECa[]){intij;STRECt;for(i=1;i<N;i++)/*用冒泡法進行排序進行N-1次比較*/for(j=0;j<N-1;j++)/*在每一次比較中要進行N-1次兩兩比較*/if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分?jǐn)?shù)的高低排列學(xué)生的記錄高分在前*/}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=1;i<N;i++)/*用冒泡法進行排序,進行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每一次比較中要進行N-1次兩兩比較*/\r\nif(a[j].s<a[j+1].s)\r\n{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前*/\r\n}解析:冒泡法算法思路:如果有N個數(shù),則要進行N-1次比較,在每一次比較中要進行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個數(shù)進行比較并將其中大的數(shù)放在前或在后(若要求從小到大排序,則大的數(shù)要放在后。反之則對調(diào)),即兩兩比較后這兩個數(shù)要形成題中所要求的順序。由于總是從頭到尾進行比較,所以第1次比較結(jié)束后,最大(或最小)數(shù)肯定在最后,第2次比較結(jié)束后,次最大(或次最小)數(shù)肯定在倒數(shù)的第2個數(shù),依次類推,所以進行第一次比較時必須比較到最后一個數(shù),而進行第2次比較時只要比較到倒數(shù)的第2個數(shù)即可,所以進行第i次比較時只需比較N-i次即可(這種算法較難理解,但它是最好的)。
選擇法算法思路:如果有N個數(shù)則從頭到倒數(shù)的第2個數(shù)一個一個往后走動,每走動1個數(shù)總是將這個數(shù)與其后的所有數(shù)進行比較并找出它們的最大(或最小)數(shù),找出最大(或最小)數(shù)后再將所得的最大(或最小)數(shù)與該數(shù)進行交換,交換后再走到下一個數(shù)依次交換到結(jié)束。此外,選擇法還可用如下思路:如果有N個數(shù),則從頭到倒數(shù)的第2個數(shù)—個一個往后走動,每走動一個數(shù)總是將這個數(shù)與其后的所有數(shù)進行兩兩比較,在比較時按順序?qū)⑦M行比較的這兩個數(shù)排序(即交換)。
插入法算法思路:先對頭兩個數(shù)進行排序。然后把第3個數(shù)插入到前兩個數(shù)中,插入后前3個數(shù)依然有序;再把第4個數(shù)插入到前3個數(shù)中,插入后前4個數(shù)依然有序;依次插完所有的數(shù)。具體執(zhí)行方式(假設(shè)從小到大排序):從第2個數(shù)開始往后一個一個走動直到最后。每走到1個數(shù)總是將該數(shù)(先將其存到1個臨時變量中)與其前面的數(shù)進行比較(比較的順序總是從后往前進行),在比較時只要發(fā)現(xiàn)該數(shù)比被比較的數(shù)小,就將被比較的數(shù)往后移1位,然后該數(shù)還要冉與前1個數(shù)進行比較,亢到發(fā)現(xiàn)該數(shù)比被比較的數(shù)大或己比較到頭(即第1個數(shù)的前面),并將該數(shù)存入當(dāng)前被比較數(shù)的后1位(存儲空間)。
如果有整型一維數(shù)組a其有N個元素,要求將其按從小到大排序。注意元素下標(biāo)是從0始的。
冒泡法:
for(i=1;i<N;i++)
for(j=0;N-1;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=a[j];}
選擇法
for(i=0i<N-1;i++)
{p=i;
for(ji+1;j<N;j++)
if(a[p]>a[j])p=j;
if{p!=i)
t=a[i];a[i]=a[p];a[p]=t;
}
插入法
for{i=1;i<N;i++}
{t=a[i];
for{j=i-1;a[j]>t&&j>=0;j--)
a[j+1]=a[j];
a[j+1]=t;
}
33.
解析:該程序功能是將字符串中除了下標(biāo)為偶數(shù)、ASCII值也為偶數(shù)的字符外,其余的全都刪除。解題過程利用if條件判斷表達(dá)式選擇符合條件的字符,然后將符合條件的字符放入指定的字符串。
34.
解析:(1)該程序功能是刪除一個字符串中指定下標(biāo)的字符。它的解題思路,可以分解為以下兩步:逐個判斷字符串中的下標(biāo)是否滿足條件,滿足條件的就放到題目要求的新串,否則就不放。
(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)“fun(str1,str2,n);”中的參數(shù)由題目可知,str1存放著原始字符串,str2存放刪除了下標(biāo)為n的字符的結(jié)果字符串,注意下標(biāo)是從“0”開始的。
35.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結(jié)果為1;第2次判斷條件即while(0),條件為假,結(jié)束循環(huán),輸出回車換行符。故本題答案為A選項。
36.D解析:C語言規(guī)定,所有字符常量都可以化為整型常量來處理,因而字符常量也可以參與算術(shù)運算。注:字符常量參與算術(shù)運算時,其實是使用其對應(yīng)的ASCII碼值進行計算。本題中,'a'對應(yīng)的ASCII碼值是97。題中雖然沒有給'6'和'0'的ASCII碼值,但應(yīng)該知道'6'-'0'是將字符'6'轉(zhuǎn)換成整數(shù)6的表達(dá)式,所以c1='a'+'6'-'0'=103,c2='a'+'3'-'0'=100,按照字符型輸出分別是g和d。
37.C輸入數(shù)據(jù)的格式必須與scanf的格式控制字符串完全匹配。函數(shù)中非格式字符需要原樣輸入,所以輸入時必須在3和5之間輸入“;”。故本題答案為C選項。2021-2022學(xué)年廣東省陽江市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(12題)1.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的事()。
A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對
2.以下是if語句的基本形式:
if(表達(dá)式.語句
其中“表達(dá)式”()。
A.必須是邏輯表達(dá)式B.必須是關(guān)系表達(dá)式C.必須是邏輯表達(dá)式或關(guān)系表達(dá)式D.可以是任意合法的表達(dá)式
3.對表進行水平方向和垂直方向的分割,分別對應(yīng)的關(guān)系運算是()
A.選擇和投影B.投影和選擇C.選擇和聯(lián)接D.投影和聯(lián)接
4.數(shù)據(jù)流圖用于抽象地描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。
A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭
5.C語言中運算對象必須是整型的運算符是()。
A.%=B./C.=D.<=
6.以下不能正確進行字符串賦初值的語句是
A.charstr[5]="good!";
B.charstr[]="good!";
C.char*srt="good!";
D.charstr[5]={'g','o','o','d'};
7.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十進制代碼為97,則執(zhí)行上述程序段后輸出結(jié)果是()。A.因變量類型與格式描述符的類型不匹配輸出無定值
B.輸出項與格式描述符個數(shù)不符,輸出為零值或不定值
C.a,97,12k=12
D.a,97,k=12
8.下面C程序段中count++語句執(zhí)行的次數(shù)為()A.15B.16C.31D.32
9.在多媒體計算機系統(tǒng)中,不能用以存儲多媒體信息的是A.光纜B.軟盤C.硬盤D.光盤
10.
11.若進棧序列為1,2,3,4,進棧過程中可以出棧,則下列不可能的一個出棧序列是______。
A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1
12.有以下程序:#include<stdio.h>main(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i+j;}}printf("m=%d\n",m);}程序運行后的輸出結(jié)果是()。A.m=6B.m=2C.m=4D.m=3
二、2.填空題(12題)13.關(guān)系可以有3種類型,即基本關(guān)系(又稱基本表或基表)、查詢表和【】。
14.下列程序的運行結(jié)果是______。
#include<stdio.h>
main()
{inta,b,c;
a=3;b=4;c=5;
if(a>b)
if(a>c)
printf("%d",a);
elseprintf("%d",b);
printf("%d\n",c);
}
15.下面程序的運行結(jié)果是()。
#include<stdio.h>
#defineSlZE12
main()
{chars[SIZE];inti;
for(i=0;i<SIZE;i++)s[i]='A'+i+32;
sub(s,5,SIZE-1);
for(i=0;i<SIZE;i++)printf("%c",s[i]);
printf("\n");}
sub(char*a,intt1,intt2)
{charch;
while(t1<t2)
{ch=*(a+t1);
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--;
}
}
16.下列程序輸出的結(jié)果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
17.下面程序的功能是:輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,j;
for(i=0【】;i++)
{j=i*10+6;
if(【】)continue;
printf("%d",j);
}
}
18.若a的值為1,則表達(dá)式!a‖++a的值是______。
19.以下程序的功能是:通過函數(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:}
20.深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為______。
21.在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,【】負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建。
22.軟件是程序、數(shù)據(jù)和【】的集合。
23.數(shù)據(jù)的______結(jié)構(gòu)在計算機存儲空問中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。
24.以下程序的功能是從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;charch;
fp=fopen(【】);
ch=fgetc(fp);
while(!feof(fp)){putchar(ch);ch=fgetc(fp);}
putchar('\n');fclose(fp);
}
三、3.程序設(shè)計題(10題)25.請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值:
例如,在主函數(shù)中從鍵盤給n輸入15,則輸出為:s=2.718282。
注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
26.編寫一個函數(shù)fun,它的功能是:實現(xiàn)兩個字符串的連接(不使用庫函數(shù)strcat),即把p2所指的字符串連接到p1所指的字符串后。
例如,分別輸入下面兩個字符串:
FirstString--
SecondString
程序輸出:
FirtString--SecondStdng
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
27.請編寫函數(shù)fun,其功能是將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)個位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和千位上。
例如,當(dāng)a=16,b=35,調(diào)用該函數(shù)后,c=5361。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
voidfun(inta,intb/long*c)
{
}
main()
{
inta,b;
longc;
clrscr();
printf("Inputa,b;");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:%ld\n",c);
}
28.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fjun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN12
typedefstruct
{charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
{
}
main()
STRECsIN]={{"GA05",85},{"GA03",76},
{"GA02",69},{"GA04",85},{"GA01",91},
{"GA07",72},{"GA08",64},{"GA06",87},
{"GA09",60},{"GAll",79},{"GA12",73},
{"GA10",90}};
STRECh[N],t;
FILE*out;
inti,j,n;
doubleave;
ave=fun(s,h,&n);
printf("The%dstudentdatawhichis
higherthan%7.3f:In",n,ave);
for(i=0;i<n;i++)
printf("%s%4.1f\n",h[i].num,h[i].s);
printf("\n");
out=fopen("out90.dat","w");
fprintf(out,"%dkn%7.3f\n",n,ave);
for(i=0;i<n-1;i++)
for(j=i+l;j<n;j++)
if(h[i].s<h[j].s)
{t=hIi];h[i]=h[j];h[j]=t;}
/*分?jǐn)?shù)從高到低排列*/
for(i=0;i<n;i++)
fprintf(out,"%4.1f\n",h[i].s);
fclose(out);
}
29.編寫一個函數(shù),該函數(shù)可以統(tǒng)計一個長度為2的字符串在另一個字符串中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為asdasasdfgasdaszx67asdmklo,子字符串為as,則應(yīng)當(dāng)輸出6。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和具他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(char*str,char*substr)
{
}
main()
{
charstr[81],substr[3];
intn;
clrscr();
printf("輸入主字符串");
gets(str);
printf("輸入子字符串");
gets(substr);
puts(str);
puts(substr);
n=fun(shr,substr);
printf("n=%d\n",n);
}
30.請編寫函數(shù)fun(),其功能是:將s所指字符串中下標(biāo)為奇數(shù)的字符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。
例如,當(dāng)s所指字符串中的內(nèi)容為siegAHdied,則在t所指數(shù)組中的內(nèi)容應(yīng)是seAde。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*S,chart[])
{
}
main()
{
chars[100],t[100];
clrscr();
printf("\nPleaseenterstrings:");
scanf("%S",S);
fun(S,t);
printf("\nTheresultis:%s\n",t);
}
31.請編寫一個函數(shù)voidfun(char*ss),其功能是:將字符串ss中所有下標(biāo)為偶數(shù)位置上的字母轉(zhuǎn)化為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。
例如,若輸入abc4Efg,則應(yīng)輸出AbC4EfG。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(char*ss)
{
}
main()
{
chartt[51];
clrscr();
printf("Pleaseenterancharacterstring
within50characters:\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n
%s",tt);
fun(tt);
printf("\nbecomes\n\%s",tt);
}
32.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。
注意:部分源程序給出如下.
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fum的花括號中填入所編寫的若啡:語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECsIN]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},
{"GA014",91},{"GA011",66},{"GA017",64},
{"GA018",64},{"GA016",72}};
inti;
FILE*out;
fun(s);
printf("Thedataaftersorted:In");
for(i=0;i<N;i++)
{if((i)%4=-0)
/*每行輸出4個學(xué)生記錄*/
printf("\n");
printf("%s%4d",s[i].num,s[i].s);
}
printf("\n");
out=fopen("out16.dat","w");
for(i=0;i<N;i++);
{if((i)%4==0&&i)
fprintf(out,"\n");
fprintf(out,"%4d",s[i].s);
}
fprintf(out,"\n");
fclose(out);
}
33.函數(shù)fun的功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時ASCII值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一含新串放在t所指的數(shù)組中。
例如,若s所指字符串中的內(nèi)容為:“ABCDEFGl23456”,其中字符A的ASCII碼值為奇數(shù),因此應(yīng)當(dāng)刪除:其中字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下標(biāo)為奇數(shù),因此也應(yīng)當(dāng)刪除;而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標(biāo)也為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:“246”。
注意:部分源程序存在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
34.請編寫一個函數(shù)voidfun(chara[],charb[],intn),其功能是:刪除一個字符串中指定下標(biāo)的字符。其中,a指向原字符串,刪除指定字符后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。
例如,輸入一個字符串:World,然后輸入3。則調(diào)用該函數(shù)后的結(jié)果為:Word。
注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
四、單選題(0題)35.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
五、單選題(0題)36.已知字母a的ASCII碼為十進制數(shù)97,下面程序的輸出結(jié)果是()。#include<stdio.h>main(){charc1,c2;c1='a'+'6'-'0';c2='a'+'3'-'0';printf("%c,%c\n",c1,c2);}
A.輸出無定值B.d,eC.e,fD.g,d
六、單選題(0題)37.若有定義“inta,b;”,通過語句“scanf(“%d;%d,”&a,&b)能把整數(shù)3賦給變量a、5賦給變量b的輸入數(shù)據(jù)是()。
A.35B.3,5C.3;5D.35
參考答案
1.A解釋執(zhí)行是計算機語言的一種執(zhí)行方式。由解釋器現(xiàn)場解釋執(zhí)行,不生成目標(biāo)程序。如BASIC便是解釋執(zhí)行。一般解釋執(zhí)行效率較低,低于編譯執(zhí)行。而C程序是經(jīng)過編譯生成目標(biāo)文件然后執(zhí)行的,所以C程序是編譯執(zhí)行。
2.D解析:本題主要考查關(guān)于if語句的說明,if后面圓括號中的表達(dá)式,可是任意合法的C語言表達(dá)式(如:邏輯表達(dá)式、關(guān)系表達(dá)式、算術(shù)表達(dá)式、賦值表達(dá)式等),也可以是任意類型的數(shù)據(jù)(如:整型、實型、字符型、指針型等。)
3.A解析:從關(guān)系中找出滿足給定條件的那些元組稱為選擇,是從行的角度進行的運算,即水平方向抽取元組。從關(guān)系模式中挑選若干屬性組成新的關(guān)系稱為投影,是從列的角度進行的運算,相當(dāng)于對關(guān)系進行垂直分解。所以,本題選擇A。
4.A解析:數(shù)據(jù)流圖包括四個方面,即加工(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體),不包括選項中的控制流。
5.A解析:C++語言規(guī)定:取余運算符的運算對象必須是整型,復(fù)合運算符“%=”中包含%運算,它的運算對象也必須是整型。
6.A解析:本題考核的知識點是字符數(shù)組和字符指針變量的初始化。選項A定義了一個字符數(shù)組str,具有5個元素,但賦初值的時候,初值個數(shù)卻是6個(有一個'\\0'),故選項A錯誤的;選項B定義了一個字符數(shù)組str并給它賦初值,由于省去了長度定義,長度由初值個數(shù)確定,相當(dāng)于str[6],選項B正確;選項C定義了一個字符型指針變量并用一個字符串給它賦初值,使該字符型指針指向了該字符串,選項C正確;選項D是對字符型數(shù)組中單個元素依次賦初值,選項D正確。所以,4個選項中A為所選。
7.D解析:在用基本輸出函數(shù)printf時,格式說明與輸出項的個數(shù)應(yīng)該相同。如果格式說明的個數(shù)少于輸出項的個數(shù),多余的輸出項不予輸出;如果格式說明個數(shù)多于輸出項個數(shù),則對于多余的格式項輸出不定值或0。
8.A
9.A解析:光纜是傳輸多媒體信息的通道,不能用以存儲多媒體信息。
10.A
11.C解析:棧是一種后進先出表,選項C中,先出棧的是3,說明此時棧內(nèi)必然有1,2,由于1先于2進淺,所以1不可能在2之前出棧,故選項C這種出棧序列是不可能的。
12.A本題考查了多重for循環(huán)。當(dāng)(i*j)>3時,跳出循環(huán),本題中i=1,j=3,i*J后值為3,所以執(zhí)行下邊語句:m*=i+j,也可寫成m=m*i+j,這時要注意優(yōu)先級,所以m的值為6。
13.視圖表視圖表解析:關(guān)系數(shù)據(jù)庫中通常有3種關(guān)系,即基本關(guān)系(又稱基本表或基表)、查詢表和視圖表。基本表是在機器中實際存儲數(shù)據(jù)的表。查詢表是查詢的結(jié)果所對應(yīng)的臨時表。視圖表是由基本表或其他視圖表導(dǎo)出的表,是不實際存儲數(shù)據(jù)的表。視圖表是一個虛表。
14.55解析:分析程序,當(dāng)a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結(jié)果為5。
15.abcdelkjihgfabcdelkjihgf解析:本題先給字符型數(shù)組s的12個元素賦值a到1共12個字母,函數(shù)sub(char*a,intt1,intt2)的功能是將數(shù)組a的從第t1+1個元素到t2+1個元素進行逆置,在主函數(shù)中調(diào)用sub(s,5,SIZE-1)函數(shù),是將數(shù)組s的第6個元素到第12個元素進行逆置,其他元素位置不變。
16.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作用域在函數(shù)級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。本程序首先定義了一個全局變量m=17,m=17的作用域在整個程序內(nèi)。在fun函數(shù)內(nèi)部定義了一個局部變量m=3,m=3的作用域僅在fun函數(shù)內(nèi)部,通過fun函數(shù)返回兩個形參的積再減m。在主函數(shù)中,輸出fun(a,b)/m=(5*7-3)/17=1。
17.i<=9或i<10或9>=i或10>ij%3!=0或j%3i<=9或i<10或9>=i或10>i\r\nj%3!=0或j%3
18.11解析:邏輯運算中,非1即0,非0即1,!a=0,++a為邏輯1,所以0和1相或結(jié)果為1。
19.tunc()m++tunc()m++解析:第一空白處,在C語言中如果子函數(shù)在主函數(shù)之后定義,就要對其進行說明,說明的形式為:“函數(shù)類型名函數(shù)名”。所以此處填寫func()。第二空白處,整型變量m表示輸入字符的個數(shù),所以每輸入一個字符,變量m的值就加1。所以此處填寫m++。
20.1616解析:滿二叉樹的葉子結(jié)點都在最后一層,即第4層,且第4層的結(jié)點達(dá)到最大數(shù),即25-1=16。
21.數(shù)據(jù)定義語言數(shù)據(jù)定義語言解析:在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言,數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,數(shù)據(jù)定義語言負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建,數(shù)據(jù)操縱語言負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作,數(shù)據(jù)控制語言負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、恢復(fù)等功能。
22.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。
23.邏輯邏輯解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。
24.“filea.dat”“r”“filea.dat”,“r”解析:考查對文件的操作。fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當(dāng)填入'filea.dat','r'。
25.
解析:該程序功能是計算并輸出多項式的值。該題的解題思路是。根據(jù)題干中給出的數(shù)列,首先推出每一項的表達(dá)式,然后再對多項式進行累加求和。
26.
解析:該程序功能是實現(xiàn)兩個字符串的連接。本題要把串2連接到串1之后,則需要把串2的第一個字符放到串1的尾符的位置上,把串2的后面的字符放到串1的后面的位置。
27.voidfun(intaintblong*c){*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;}voidfun(inta,intb,long*c)\r\n{\r\n*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;\r\n}解析:語句“*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;”是將a數(shù)的十位和個位數(shù)依次放在c數(shù)個位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和千位上。注意“/”和“%”的用法。
28.doublefun(STREC*aSTREC*bint*n){inti;doubleay=0.0;*n=0;for(i=0;i<N;i++)av=av+a[i].s;ay=ay/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];*n-*n+l;}/*將高于等于平均分的學(xué)生存從所指存儲單元中并統(tǒng)計人數(shù)*/returnay;/*返回嚴(yán)均分*/}doublefun(STREC*a,STREC*b,int*n)\r\n{\r\ninti;\r\ndoubleay=0.0;\r\n*n=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].s;\r\nay=ay/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{b[*n]=a[i];*n-*n+l;}/*將高于等于平均分的學(xué)生存從所指存儲單元中,并統(tǒng)計人數(shù)*/\r\nreturnay;/*返回嚴(yán)均分*/\r\n}解析:本題中第1個循環(huán)的作用求出所有分?jǐn)?shù)的總和,只有進行了av=av/N后才得到平均值(我們在前面的程序中碰到過類似問題)。第2個循環(huán)的作用是將高于等于平均分的學(xué)生存入b所指存儲單元中。同一結(jié)構(gòu)體變量之間可以互相賦值。
本程序中直接用*n來表示b的下標(biāo),注意開始時要給,*n賦0,且使用時不能少*號。因為單獨的n是一個指針變量,而我們要用的是它所指向的那個存儲單元中的值。
29.intfun(char*strchar*substr){intij=0;for(i=0;str[i+1]!='\0';i++)/*如果一個長度為2的子字符串在主字符串中出現(xiàn)一次則j+1如此循環(huán)*/if(str[i]==substr[0]&&str[i+1]==substr[1])j++;returnj;/*返回子字符串在主字符串中出現(xiàn)的次數(shù)*/}intfun(char*str,char*substr)\r\n{\r\ninti,j=0;\r\nfor(i=0;str[i+1]!='\\0';i++)/*如果一個長度為2的子字符串在主字符串中出現(xiàn)一次,則j+1,如此\r\n循環(huán)*/\r\nif(str[i]==substr[0]&&str[i+1]==substr[1])\r\nj++;\r\nreturnj;/*返回子字符串在主字符串中出現(xiàn)的次數(shù)*/\r\n}解析:該題中subsu只有兩個字符,所以可以用if語句來直接進行判斷。要注意if())中str組的下標(biāo)為i和i+1,即比較當(dāng)前字符及其以后的一個字符是否分別與substr中的字符對應(yīng)相同,若都相同則表示出現(xiàn)了一次。
30.voidfun(char*Schart[]){intij=0k=strlen(s);/*k為字符串的長度*/for(i=0;i<k;i=i+2)/*將s所指字符串中下標(biāo)為偶數(shù)的字符存入t所指字符串中*/t[j++]=s[i];t[j]='\0';/*在字符串最后加上結(jié)束標(biāo)志*/}voidfun(char*S,chart[])\r\n{\r\ninti,j=0,k=
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026山東事業(yè)單位統(tǒng)考菏澤市屬招聘考試參考試題及答案解析
- 中鐵十四局采購管理制度(3篇)
- 調(diào)研糧食儲備應(yīng)急管理制度(3篇)
- 婚慶公司策劃活動方案(3篇)
- 代寫活動策劃方案網(wǎng)站(3篇)
- 2026年保山市昌寧縣財政局招聘公益性崗位人員(5人)備考考試題庫及答案解析
- 飛機幾何造型技術(shù)
- 2026新疆博爾塔拉州博樂數(shù)字博州建設(shè)運營有限公司招聘3人備考考試試題及答案解析
- 2026浙江杭州工商信托股份有限公司等企業(yè)招聘17人備考考試題庫及答案解析
- 2026年荊州市公安縣事業(yè)單位人才引進52人備考考試試題及答案解析
- 北京理工大學(xué)本科畢業(yè)論文格式模板范文
- 建筑工程施工質(zhì)量控制論文9【論文】
- 放射治療基礎(chǔ)知識
- 外墻貼磚專項施工方案
- 《物流與供應(yīng)鏈管理》教案
- 2025-2030智慧城市大腦建設(shè)規(guī)劃與多感知系統(tǒng)融合
- 2025年具有良好的商業(yè)信譽和健全的財務(wù)會計制度承諾書(范本)
- 凈菜品控與質(zhì)量管理體系建設(shè)方案
- 樁基施工與檢測實施方案
- 河北省五個一名校聯(lián)盟金太陽2025屆高三上學(xué)期一輪收官驗收-英語試卷(含答案)
- 熱處理安全培訓(xùn)課件
評論
0/150
提交評論