




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2022年貴州省遵義市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.以下程序擬實(shí)現(xiàn)計(jì)算s=1+2*2+3*3+…+n*n+…,直到s>1000為止。#include<stdio.h>main(){ints,n;s=1;n=1;do{n=n+1;s=s+n*n;}while(s>1000);printf(“s=%d\n”,s);}程序運(yùn)行后,不能得到正確結(jié)果,以下修改方案正確的是()。
A.把“while(s>1000);”改為“while(s<=1000);”
B.把“s=1”改為“s=0”
C.把“n=1;”改為“n=0;”
D.把“n=n+1”改為“n=n*n”
2.下列關(guān)于數(shù)據(jù)庫設(shè)計(jì)的敘述中,正確的是()。
A.在需求分析階段建立數(shù)據(jù)字典
B.在概念設(shè)計(jì)階段建立數(shù)據(jù)字典
C.在邏輯設(shè)計(jì)階段建立數(shù)據(jù)字典
D.在物理設(shè)計(jì)階段建立數(shù)據(jù)字典
3.下面程序段的運(yùn)行結(jié)果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));
A.8B.12C.4D.7
4.已知a,b均被定義為double型,則表達(dá)式:b=1,a=b+5/2的值為()。
A.1B.3C.3.0D.3.5
5.對于循環(huán)隊(duì)列()。
A.無法判斷隊(duì)列是否為空B.無法判斷隊(duì)列是否為滿C.隊(duì)列不可能滿D.以上說法都不對
6.若有定義:“inta=4,b=5;floatx=3.4,y=2.1;”,則下列表達(dá)式的值為()。(float)(a+b)/2+(int)x%(int)y;
A.5.5B.55C.5.500000D.55.00000
7.程序運(yùn)行后的輸出結(jié)果是()。
A.m=4
B.m=2
C.m=6
D.m=5
8.已定義c為字符型變量,則下列語句中正確的是()。
A.c='97'B.c="97"C.c=97D.c="a"
9.
10.關(guān)系數(shù)據(jù)庫的數(shù)據(jù)及更新操作必須遵循()等完整性規(guī)則。
A.實(shí)體完整性和參照完整性
B.參照完整性和用戶定義的完整性
C.實(shí)體完整性和用戶定義的完整性
D.實(shí)體完整性、參照完整性和用戶定義的完整性
11.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()
A.每個(gè)元素都有一個(gè)直接前件和直接后件
B.線性表中至少要有一個(gè)元素
C.表中諸元素的排列順序必須是由小到大或由大到小
D.除第一個(gè)元素和最后一個(gè)元素外,其余每個(gè)元素都有一個(gè)且只有一個(gè)直接前件和直接后件
12.有以下程序:#include<stdio.h>main(){inti,data;scanf(“%d”,&data);for(i=0;i<8;i++){if(i<=data)continue;printf(“%d,”,i);}}程序運(yùn)行時(shí)輸入5并按〈Enter〉鍵,則程序輸出結(jié)果為()。
A.5,6,7,B.0,1,2,3,4,C.6,7,D.6,7,8,
二、2.填空題(12題)13.設(shè)y為血型變量,請寫出描述“y是偶數(shù)”的表達(dá)式______。
14.下述函數(shù)統(tǒng)計(jì)—個(gè)字符串中的單詞個(gè)數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>
intword(char*s)
{intnum=0,flag=0;
while(*s)
{if(【】='')flag=0;
elseif(【】){flag=1;num++}
}
return【】;}
15.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),線性表、棧和隊(duì)列都屬于【】。
16.有以下程序:
#include<string.h>
structSTU
{charname[10];
intnum;};
voidf(char*name,intnum)
{structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};
num=s[0].num;
strcpy(name,s[0].name);
}
main()
{structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
p=&s[1];f(p->name,p->num);
printf("%s%d\n",p->name,p->num);
}
程序運(yùn)行后的輸出結(jié)果是【】。
17.以下程序的輸出結(jié)果是【】。
doublesub(doublex,doubley,doublez)
{y-=1.0;
z=z+x;
returnz;
}
main()
{doublea=2.5,b=9.0;
printf("functionrunningresultis:%6.1f\n",sub(b-a,a,A));
}
18.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{intp=30;
printf("%dkn",(p/3>0?p/10:p%3));
}
19.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。
20.下列程序的運(yùn)行結(jié)果是______。
#definePOW(r)(r)*(r)
main()
{intx=3,y=2,t;
t=POW(x+y);
printf("%d\n",t);
}
21.C語言中用______表示邏輯值為“真”,用數(shù)字“0”表示邏輯值為“假”。
22.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)中,常用的描述工具是【】。
23.下面程序的功能:將字符數(shù)組a中下標(biāo)值為偶數(shù)的元素從小到大排列,其他元素不變。請?zhí)羁铡?/p>
#include<stdio.h>
#include<string.h>
main()
{chara[]="clanquage",t;
inti,j,k;
k=strlen(A);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<k;j+=2)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;}
puts(A);
printf("\n");
}
24.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
三、3.程序設(shè)計(jì)題(10題)25.m個(gè)人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。
例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10,20,30,40,50,60,70,80,90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10,20,30,40。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(intscore[],intm,intbelow[])
{
}
main()
{
ihti,n,below[9];
intscore[9]={10,20,30,40,50,60,70,
80,90};
clrscr();
n=fun(score,9,below);
printf("\nBelowtheaveragescoreare:");
for(i=0;i<n;i++)
printf("%d",below[i]);
}
26.請編寫一個(gè)函數(shù)fun,它的功能是:比較兩個(gè)字符串的長度,(不得調(diào)用C語言提供的求字符串長度的函數(shù)),函數(shù)返回較長的字符串。若兩個(gè)字符串長度相同,則返回第一個(gè)字符串。
例如,輸入beijingshah曲aj(為回車鍵),函數(shù)將返回shanghai。
注意:部分源程序存在文件PROGl.C中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
27.N名學(xué)生的成績已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請編寫函數(shù)fun(),它的功能是:找出學(xué)生的最低分,由函數(shù)值返回。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<Stdlib.h>
#defineN8
StructSlist
{doubles;
StructSlist*next;
};
tyPedefStructSlistSTREC;
doublefun(STREC*h)
{
}
STREC*Creat(double*S)
{
STREC*h,*p,*q;
inti=0;
h=p={STREC*)malloc(sizeof(STREC));
p->S=0;
while(i<N)
/*產(chǎn)生8個(gè)節(jié)點(diǎn)的鏈表,各分?jǐn)?shù)存入鏈表中*/
{q=(STREC*)malloc(sizeOf(STREC));
p->S=S[i];i++;p->next=q;p=q;
}
p->next=NULL;
returnh;
/*返回鏈表的首地址*/
}
outlist(STREC*h)
{
STREC*p;
p=h;
printf("head");
do
{printf("->%2.of",p->s);p=p->next;}
/*輸/出各分?jǐn)?shù)*/
while(p!=NULL);
printf("\n\n");
}
main()
{
doubles[N]={56,89,76,95,91,68,75,
85},min;
STREC*h;
h=creat(S);
outlist(h);
min=fun(h);
printf("min=%6.If\n",min);
}
28.請編寫函數(shù)fun,其功能是:計(jì)算并輸出給定10個(gè)數(shù)的方差:
例如,給定的10個(gè)數(shù)為95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,輸出為s=11.730729。
注意:部分源程序在文件PROGl.C中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
29.請編寫函數(shù)fun(),該函數(shù)的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。
例如,若一維數(shù)組中的數(shù)據(jù)是:
2223445666677899101010
刪除后,數(shù)組中的內(nèi)容應(yīng)該是:
2345678910。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN80
intfun(inta[],intn)
{
}
main()
{
inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,
8,9,9,10,10,10,10},i,n=20;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
n=fun(a,n);
printf("\n\nThedataafterdeleted
:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
30.程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。
請編寫函數(shù)fun(inta[][N],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。
例如:若n的值為3,a數(shù)組中的值為
a=254
169
537
則返回主程序后a數(shù)組中的值應(yīng)為
554
499
8610
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)full的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineN5
fun(inta[][N],intn)
{
}
main()
{
inta[N][N],n,i,j;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i<N;i++)
/*產(chǎn)生—個(gè)隨機(jī)5*5矩陣*/
{
for(j=0;j<N;j++)
{
a[i][j]=rand()%10;
printf("%4d",a[i][j]);
}
printf("\n");
}
do
n=rand()%10;
/*產(chǎn)生一個(gè)小于5的隨機(jī)數(shù)n*/
while(n>=5);
printf("n=%4d\n",n);
fun(a,n);
printf("*****THERESULT*****\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;i++)
printf("%4d",a[i][j]);
printf("\n");
}
}
31.假定輸入的字符串中只包含字母和*號(hào)。請編寫函數(shù)fun,它的功能是:將字符串尾部的*號(hào)全部刪除,前面和中間的*號(hào)不刪除。
例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。
注意:部分源程序在文件PROGl.C文件中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
32.請編寫一個(gè)函數(shù)intfun(int*s,intt,int*k),用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。
例如,輸入如下整數(shù):
876675896101301401980431451777
則輸出結(jié)果為6,980。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(int*s,intt,int*k)
{
}
main()
{
inta[10]={876,675,896,101,301,401,
980,431,451,777},k;
clrscr();
fun(a,10,&k);
printf("%d,%d\n",k,a[k]);
}
33.請編寫程序fun,函數(shù)的功能是:實(shí)現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計(jì)算結(jié)果在main函數(shù)中輸出。
例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:
123147
456258
789369
程序輸出:
2610
61014
101418
注意:部分源程序在文件PROGl.C中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
34.請編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p~n-1(p<n-1)的數(shù)組元素平移到數(shù)組的前面。
例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值為6。移動(dòng)后,一維數(shù)組的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。
[注意]部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
[試題源程序]
#inciude<stdio.h>
#defineN80
voidfun(int*w,intp,intn)
{
}
main()
{
inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
inti,P,n=15;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\nEnterp:");
scanf("%d",&p);
fun(a,P,n);
printf("\nThedataaftermoving:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
四、單選題(0題)35.下面哪個(gè)序列不是此圖的一個(gè)拓?fù)渑判?)A.ebfgadchB.aebdgfchC.adchebfgD.Aedbfgch
五、單選題(0題)36.設(shè)有序順序表中有n個(gè)數(shù)據(jù)元素,則利用二分查找法查找數(shù)據(jù)元素X的最多比較次數(shù)不超過()。A.log2+1
B.log2(n-1)
C.log2n
D.log2(n+1)
六、單選題(0題)37.根據(jù)二叉樹的定義可知道二叉樹共有種不同形態(tài)的二叉樹()。
A.3B.4C.5D.7
參考答案
1.A題目中程序不能實(shí)現(xiàn)預(yù)期功能是因?yàn)閣hile的循環(huán)條件錯(cuò)誤。選項(xiàng)B中把“s=1;”改為s=0;”,最終的結(jié)果“s=4”,與題目原意不同。選項(xiàng)C中把“n=1;”,改為“n=0;”最終的結(jié)果“s=2”,與題目原意不同。選項(xiàng)D中把“n=n+1;”改為“n=n*n;”,最終的結(jié)果“s=2”,與題目原意不同。選項(xiàng)A正確地修改了while循環(huán)條件,可以得到正確結(jié)果。故本題答案為A選項(xiàng)。
2.A數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計(jì)過程中不斷修改、充實(shí)和完善的。故答案為A選項(xiàng)。
3.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。
4.D
5.D
6.C在計(jì)算(float)(a4-b)/2時(shí),由于通過強(qiáng)制類型轉(zhuǎn)換將(a+b)轉(zhuǎn)換成了float型,所以應(yīng)先將2轉(zhuǎn)換成float型,再進(jìn)行計(jì)算,得4.500000。在計(jì)算(int)x%(int)y時(shí),先將x和y通過強(qiáng)制類型轉(zhuǎn)換成int型,再進(jìn)行求余運(yùn)算,結(jié)果為1。又因?yàn)?.500000是float型,所以將1和它相加時(shí),先將1換成float型,再計(jì)算,得到5.500000。類型轉(zhuǎn)換的一般規(guī)則是:低級(jí)類型從高級(jí)類型,并進(jìn)行相應(yīng)的轉(zhuǎn)換。數(shù)據(jù)類型的級(jí)別由低到高的排序表示為:char→int→unsigned→log→float→double。
7.C[解析]第一次外循環(huán)的值為1.第一次內(nèi)循環(huán)的值為3.不滿足條件執(zhí)行m*=j即m的值為3;第二次的值為2.不滿足條件執(zhí)行m*=*j,即m的值為6;第三次的值為1.不滿足條件執(zhí)行m*=j,即m的值仍為6.第二次外循環(huán)的值為2.j的值為3.滿足條件,執(zhí)行break語句,跳出循環(huán)。
8.C解析:本題考核的知識(shí)點(diǎn)是字符型變量的基本概念。用單引號(hào)括起來的一個(gè)字符稱為字符常量,而選項(xiàng)B和選項(xiàng)D中用的是雙引號(hào),而用雙引號(hào)括起來的字符為字符串常量,故選項(xiàng)B和選項(xiàng)D不正確。因?yàn)樵贑語言中,字符常量在存儲(chǔ)時(shí),并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中,所以C語言使字符型數(shù)據(jù)和整形數(shù)據(jù)之間可以通用,選項(xiàng)C正確.而選項(xiàng)A中,給字符型變量賦值時(shí)只能賦一個(gè)字符,而9,7作為字符時(shí)為兩個(gè)字符且必須分別為單引號(hào)括起來,故選項(xiàng)A不正確,所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。
9.A
10.D解析:關(guān)系模型中包括關(guān)系的數(shù)據(jù)結(jié)構(gòu)、關(guān)系的操縱和關(guān)系中的數(shù)據(jù)約束。關(guān)系完整性約束即數(shù)據(jù)完整性,包括實(shí)體完整性、參照完整性和用戶自定義完整性。
11.D解析:線性表可以為空表,排除選項(xiàng)B。第一個(gè)元素沒有直接前件,最后一個(gè)元素沒有直接后件,故排除選項(xiàng)A。線性表的定義中,元素的排列沒有規(guī)定大小順序,故選項(xiàng)C也有誤,只有D項(xiàng)是正確的。
12.Cmain函數(shù)首先定義一個(gè)整型變量data,使用scanf函數(shù)輸入一個(gè)整數(shù)賦給data。接著執(zhí)行for循環(huán),i的值為0~7。當(dāng)i的值不大于data的值時(shí),使用continue語句跳過當(dāng)前循環(huán),進(jìn)入下一輪循環(huán)。若從鍵盤輸入5,data的值為5,i取值為0~5時(shí),都不執(zhí)行printf語句。當(dāng)i取值為6、7時(shí),執(zhí)行printf語句,輸出6,7。故本題答案為C選項(xiàng)。
13.(y%2)==0(y%2)==0解析:因符合偶數(shù)的條件是對2取余為0,所以要描述y是偶數(shù)的表達(dá)式是(y%2)==0。
14.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計(jì)字符串單詞個(gè)數(shù)的算法中,本題的flag是為了記錄—個(gè)單詞是否結(jié)束。第18空應(yīng)填*s++;如果某個(gè)字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標(biāo)志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前—個(gè)字符是否是空格,如果是則說明這個(gè)字符是—個(gè)單詞的開始,將flag標(biāo)志為1,num的值加1,如果不是,則不必記錄。故第19空應(yīng)填flag=0或*(s-1)='';最后—個(gè)空格需填寫的是返回的單詞的個(gè)數(shù),即num。
15.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:本題考查了數(shù)據(jù)結(jié)構(gòu)的基本概念。與棧類似,隊(duì)列也是線性表,可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),所以帶鏈的隊(duì)列屬于線性結(jié)構(gòu)。
16.SunDan20042SunDan20042解析:f函數(shù)中形參1用的是顯式傳地址的方式,因此p->name的值發(fā)生改變,而形參2用的傳值的方式,在調(diào)用時(shí)不改變實(shí)參的值,因此p->num的值不發(fā)生變化。
17.functionrunningresultis:9.0
18.33本試題中,先判斷表達(dá)式p/3>0,該值為真,所以此表達(dá)式等于p/10的值3,故最后輸出的值為3。
19.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。
20.2525解析:本題考查帶參數(shù)的宏的定義及相關(guān)運(yùn)算。運(yùn)算過程為:t=POW(x+y)=(2+3)*(2+3)=25。
21.非0非0解析:邏輯運(yùn)算中,非0表示邏輯“真”,用。表示邏輯“假”。
22.E-R圖E-R圖解析:E-R圖是設(shè)計(jì)概念模型的有力工具。
23.a[j]<a[i]a[j]<a[i]解析:本題考查排序算法,題目中通過雙循環(huán)嵌套來實(shí)現(xiàn),外層循環(huán)跳出待排序的元素,內(nèi)層循環(huán)具體實(shí)現(xiàn)a[i]到a[k-2]之間偶數(shù)下標(biāo)元素的排序,每次將最小的放在a[i]中。所以空中填a[j]<a[i]。
24.-2-2解析:題目中定義并初始化了變量k為0,最后輸出k的值,要求為4,而在此期間只有k+=-(i+j);這條語句改變了k的值,即要求表達(dá)式-(i+j)的值為4。所以,答案應(yīng)該為-2,因?yàn)橹挥衖=j=-2時(shí),表達(dá)式-(i+j)的值才為4。
25.intfun(intscore[]intmintbelow[]){intij=0;floatav=0.0;for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]<av)/*如果分?jǐn)?shù)低于平均分則將此分?jǐn)?shù)放入below數(shù)組中*/below[j++]=score[i];returnj;/*返回低于平均分的人數(shù)*/}intfun(intscore[],intm,intbelow[])\r\n{\r\ninti,j=0;\r\nfloatav=0.0;\r\nfor(i=0;i<m;i++)\r\nav=av+score[i]/m;/*求平均值*/\r\nfor(i=0;i<m;i++)\r\nif(score[i]<av)/*如果分?jǐn)?shù)低于平均分,則將此分?jǐn)?shù)放入below數(shù)組中*/\r\nbelow[j++]=score[i];\r\nreturnj;/*返回低于平均分的人數(shù)*/\r\n}解析:該題第1個(gè)循環(huán)的作用是求出平均分av,第2個(gè)循環(huán)的作用是找出低于平均分的成績并存入below數(shù)組中。
26.
解析:該程序功能是比較兩個(gè)字符串的長度。解題過程是首先分別求得兩個(gè)字符串的長度,然后對這兩個(gè)值進(jìn)行判斷,實(shí)現(xiàn)兩個(gè)字符串長度的比較。
27.doublefun(STREC*h){doublemin=h->s;while(h!=NULL)/*通過循環(huán)找到最低分?jǐn)?shù)*/{if(min>h->s)min=h->s;h=h->next;}returnmin;}doublefun(STREC\u3000*h)\r\n{\r\ndoublemin=h->s;\r\nwhile(h!=NULL)/*通過循環(huán)找到最低分?jǐn)?shù)*/\r\n{if(min>h->s)\r\nmin=h->s;\r\nh=h->next;\r\n}\r\nreturnmin;\r\n}解析:在本題中,h為—個(gè)指向結(jié)構(gòu)體的指針變量,若要引用它所指向的結(jié)構(gòu)體中的某一成員時(shí),要用指向運(yùn)算符“->”。由于是鏈表,所以要使h逐一往后移動(dòng),使用的是h=h->next。
28.
解析:該程序功能是計(jì)算并輸出給定10個(gè)數(shù)的方差。解題思路是,根據(jù)題干中給出的方差公式首先計(jì)算出x’的值,然后計(jì)算根號(hào)里面的值,最后求其平方根。
29.intfun(inta[]intn){intij=l;for(i=1;i<n;i++)if(a[j-1]!=a[i])/*若該數(shù)與前一個(gè)數(shù)不相同則要保留*/a[j++]=a[i];returnj;/*返回不同數(shù)的個(gè)數(shù)*/}intfun(inta[],intn)\r\n{\r\ninti,j=l;\r\nfor(i=1;i<n;i++)\r\nif(a[j-1]!=a[i])/*若該數(shù)與前一個(gè)數(shù)不相同,則要保留*/\r\na[j++]=a[i];\r\nreturnj;/*返回不同數(shù)的個(gè)數(shù)*/\r\n}解析:本題程序的流程是:讓i,j都從1開始,其中j用于控制刪除后剩下的數(shù)中的下標(biāo),i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個(gè)元素的下一個(gè)元素的下標(biāo),所以if()中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個(gè)元素,若條件成立,則表示出現(xiàn)了不同的值,所以a[i]要留下到新數(shù)組中。注意本題中i,j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目中。
30.fun(inta[][N]intn){intij;for(i=0;i<N;i++)for(j=0;j<i;j++)a[i][j]=a[i][j]+n/*使數(shù)組左下半三角元素中的值加上n*/}fun(inta[][N],intn)\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<i;j++)\r\na[i][j]=a[i][j]+n/*使數(shù)組左下半三角元素中的值加上n*/\r\n}解析:首先從數(shù)組中找出要被加上n的那部分元素,找的過程其實(shí)就是找出將被挑出的那部分元素在原數(shù)組中的分布規(guī)律的過程。通過觀察得出,要被處理的那部分元素的下標(biāo)值的范圍是每行中從第一個(gè)元素開始,直到列數(shù)等于該行行數(shù)時(shí)為止。找到這個(gè)規(guī)律后,依次從數(shù)組中取得合乎要求的元素,然后再加上n。
31.
解析:該程序功能是將字符串尾部的“*”號(hào)全部刪除,前面和中間的“*”號(hào)不刪除。本題的解題過程首先確定由串尾開始的第一個(gè)非“*”位置,將由頭開始到此位置的字符拷貝到字符串。
32.intfun(int*sinttint*k){inti;*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;/*找到數(shù)組的最大元素把該元素的下標(biāo)賦給k所指的數(shù)*/returns[*k];/*返回?cái)?shù)組的最大元素*/}intfun(int*s,intt,int*k)\r\n{\r\ninti;\r\n*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/\r\nfor(i=0;i<t;i++)\r\nif(s[*k]<s[i])*k=i;/*找到數(shù)組的最大元素,把該元素的下標(biāo)賦給k所指的數(shù)*/\r\nreturns[*k];/*返回?cái)?shù)組的最大元素*/\r\n}解析:本題中直接使用指針變量k,但在使用時(shí)要注意對k的指針運(yùn)算,此外,一開始應(yīng)讓*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。
33.
解析:該程序功能是實(shí)現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置。其中,所謂矩陣的轉(zhuǎn)置,是把行中的數(shù)據(jù)與列中的數(shù)據(jù)進(jìn)行對調(diào)。解題過程中首先求得已給的矩陣的轉(zhuǎn)置,然后在循環(huán)過程中對矩陣與該矩陣的轉(zhuǎn)置對應(yīng)元素求和。
34.voidfun(int*wintpintn){intiJt;for(i=p;i<=n-i;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,J,t;\r\nfor(i=p;i<=n-i;i++)\r\n{\r\nt=w[n-1];\r\nfor(j=n-2;j>=0;j--)\r\nw[j+1]=w[j];\r\nw[0]=t;\r\n}\r\n}
35.C
36.A
37.B2022年貴州省遵義市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.以下程序擬實(shí)現(xiàn)計(jì)算s=1+2*2+3*3+…+n*n+…,直到s>1000為止。#include<stdio.h>main(){ints,n;s=1;n=1;do{n=n+1;s=s+n*n;}while(s>1000);printf(“s=%d\n”,s);}程序運(yùn)行后,不能得到正確結(jié)果,以下修改方案正確的是()。
A.把“while(s>1000);”改為“while(s<=1000);”
B.把“s=1”改為“s=0”
C.把“n=1;”改為“n=0;”
D.把“n=n+1”改為“n=n*n”
2.下列關(guān)于數(shù)據(jù)庫設(shè)計(jì)的敘述中,正確的是()。
A.在需求分析階段建立數(shù)據(jù)字典
B.在概念設(shè)計(jì)階段建立數(shù)據(jù)字典
C.在邏輯設(shè)計(jì)階段建立數(shù)據(jù)字典
D.在物理設(shè)計(jì)階段建立數(shù)據(jù)字典
3.下面程序段的運(yùn)行結(jié)果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));
A.8B.12C.4D.7
4.已知a,b均被定義為double型,則表達(dá)式:b=1,a=b+5/2的值為()。
A.1B.3C.3.0D.3.5
5.對于循環(huán)隊(duì)列()。
A.無法判斷隊(duì)列是否為空B.無法判斷隊(duì)列是否為滿C.隊(duì)列不可能滿D.以上說法都不對
6.若有定義:“inta=4,b=5;floatx=3.4,y=2.1;”,則下列表達(dá)式的值為()。(float)(a+b)/2+(int)x%(int)y;
A.5.5B.55C.5.500000D.55.00000
7.程序運(yùn)行后的輸出結(jié)果是()。
A.m=4
B.m=2
C.m=6
D.m=5
8.已定義c為字符型變量,則下列語句中正確的是()。
A.c='97'B.c="97"C.c=97D.c="a"
9.
10.關(guān)系數(shù)據(jù)庫的數(shù)據(jù)及更新操作必須遵循()等完整性規(guī)則。
A.實(shí)體完整性和參照完整性
B.參照完整性和用戶定義的完整性
C.實(shí)體完整性和用戶定義的完整性
D.實(shí)體完整性、參照完整性和用戶定義的完整性
11.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()
A.每個(gè)元素都有一個(gè)直接前件和直接后件
B.線性表中至少要有一個(gè)元素
C.表中諸元素的排列順序必須是由小到大或由大到小
D.除第一個(gè)元素和最后一個(gè)元素外,其余每個(gè)元素都有一個(gè)且只有一個(gè)直接前件和直接后件
12.有以下程序:#include<stdio.h>main(){inti,data;scanf(“%d”,&data);for(i=0;i<8;i++){if(i<=data)continue;printf(“%d,”,i);}}程序運(yùn)行時(shí)輸入5并按〈Enter〉鍵,則程序輸出結(jié)果為()。
A.5,6,7,B.0,1,2,3,4,C.6,7,D.6,7,8,
二、2.填空題(12題)13.設(shè)y為血型變量,請寫出描述“y是偶數(shù)”的表達(dá)式______。
14.下述函數(shù)統(tǒng)計(jì)—個(gè)字符串中的單詞個(gè)數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>
intword(char*s)
{intnum=0,flag=0;
while(*s)
{if(【】='')flag=0;
elseif(【】){flag=1;num++}
}
return【】;}
15.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),線性表、棧和隊(duì)列都屬于【】。
16.有以下程序:
#include<string.h>
structSTU
{charname[10];
intnum;};
voidf(char*name,intnum)
{structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};
num=s[0].num;
strcpy(name,s[0].name);
}
main()
{structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
p=&s[1];f(p->name,p->num);
printf("%s%d\n",p->name,p->num);
}
程序運(yùn)行后的輸出結(jié)果是【】。
17.以下程序的輸出結(jié)果是【】。
doublesub(doublex,doubley,doublez)
{y-=1.0;
z=z+x;
returnz;
}
main()
{doublea=2.5,b=9.0;
printf("functionrunningresultis:%6.1f\n",sub(b-a,a,A));
}
18.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{intp=30;
printf("%dkn",(p/3>0?p/10:p%3));
}
19.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。
20.下列程序的運(yùn)行結(jié)果是______。
#definePOW(r)(r)*(r)
main()
{intx=3,y=2,t;
t=POW(x+y);
printf("%d\n",t);
}
21.C語言中用______表示邏輯值為“真”,用數(shù)字“0”表示邏輯值為“假”。
22.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)中,常用的描述工具是【】。
23.下面程序的功能:將字符數(shù)組a中下標(biāo)值為偶數(shù)的元素從小到大排列,其他元素不變。請?zhí)羁铡?/p>
#include<stdio.h>
#include<string.h>
main()
{chara[]="clanquage",t;
inti,j,k;
k=strlen(A);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<k;j+=2)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;}
puts(A);
printf("\n");
}
24.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
三、3.程序設(shè)計(jì)題(10題)25.m個(gè)人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。
例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10,20,30,40,50,60,70,80,90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10,20,30,40。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(intscore[],intm,intbelow[])
{
}
main()
{
ihti,n,below[9];
intscore[9]={10,20,30,40,50,60,70,
80,90};
clrscr();
n=fun(score,9,below);
printf("\nBelowtheaveragescoreare:");
for(i=0;i<n;i++)
printf("%d",below[i]);
}
26.請編寫一個(gè)函數(shù)fun,它的功能是:比較兩個(gè)字符串的長度,(不得調(diào)用C語言提供的求字符串長度的函數(shù)),函數(shù)返回較長的字符串。若兩個(gè)字符串長度相同,則返回第一個(gè)字符串。
例如,輸入beijingshah曲aj(為回車鍵),函數(shù)將返回shanghai。
注意:部分源程序存在文件PROGl.C中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
27.N名學(xué)生的成績已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請編寫函數(shù)fun(),它的功能是:找出學(xué)生的最低分,由函數(shù)值返回。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<Stdlib.h>
#defineN8
StructSlist
{doubles;
StructSlist*next;
};
tyPedefStructSlistSTREC;
doublefun(STREC*h)
{
}
STREC*Creat(double*S)
{
STREC*h,*p,*q;
inti=0;
h=p={STREC*)malloc(sizeof(STREC));
p->S=0;
while(i<N)
/*產(chǎn)生8個(gè)節(jié)點(diǎn)的鏈表,各分?jǐn)?shù)存入鏈表中*/
{q=(STREC*)malloc(sizeOf(STREC));
p->S=S[i];i++;p->next=q;p=q;
}
p->next=NULL;
returnh;
/*返回鏈表的首地址*/
}
outlist(STREC*h)
{
STREC*p;
p=h;
printf("head");
do
{printf("->%2.of",p->s);p=p->next;}
/*輸/出各分?jǐn)?shù)*/
while(p!=NULL);
printf("\n\n");
}
main()
{
doubles[N]={56,89,76,95,91,68,75,
85},min;
STREC*h;
h=creat(S);
outlist(h);
min=fun(h);
printf("min=%6.If\n",min);
}
28.請編寫函數(shù)fun,其功能是:計(jì)算并輸出給定10個(gè)數(shù)的方差:
例如,給定的10個(gè)數(shù)為95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,輸出為s=11.730729。
注意:部分源程序在文件PROGl.C中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
29.請編寫函數(shù)fun(),該函數(shù)的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。
例如,若一維數(shù)組中的數(shù)據(jù)是:
2223445666677899101010
刪除后,數(shù)組中的內(nèi)容應(yīng)該是:
2345678910。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN80
intfun(inta[],intn)
{
}
main()
{
inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,
8,9,9,10,10,10,10},i,n=20;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
n=fun(a,n);
printf("\n\nThedataafterdeleted
:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
30.程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。
請編寫函數(shù)fun(inta[][N],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。
例如:若n的值為3,a數(shù)組中的值為
a=254
169
537
則返回主程序后a數(shù)組中的值應(yīng)為
554
499
8610
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)full的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineN5
fun(inta[][N],intn)
{
}
main()
{
inta[N][N],n,i,j;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i<N;i++)
/*產(chǎn)生—個(gè)隨機(jī)5*5矩陣*/
{
for(j=0;j<N;j++)
{
a[i][j]=rand()%10;
printf("%4d",a[i][j]);
}
printf("\n");
}
do
n=rand()%10;
/*產(chǎn)生一個(gè)小于5的隨機(jī)數(shù)n*/
while(n>=5);
printf("n=%4d\n",n);
fun(a,n);
printf("*****THERESULT*****\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;i++)
printf("%4d",a[i][j]);
printf("\n");
}
}
31.假定輸入的字符串中只包含字母和*號(hào)。請編寫函數(shù)fun,它的功能是:將字符串尾部的*號(hào)全部刪除,前面和中間的*號(hào)不刪除。
例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。
注意:部分源程序在文件PROGl.C文件中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
32.請編寫一個(gè)函數(shù)intfun(int*s,intt,int*k),用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。
例如,輸入如下整數(shù):
876675896101301401980431451777
則輸出結(jié)果為6,980。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(int*s,intt,int*k)
{
}
main()
{
inta[10]={876,675,896,101,301,401,
980,431,451,777},k;
clrscr();
fun(a,10,&k);
printf("%d,%d\n",k,a[k]);
}
33.請編寫程序fun,函數(shù)的功能是:實(shí)現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計(jì)算結(jié)果在main函數(shù)中輸出。
例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:
123147
456258
789369
程序輸出:
2610
61014
101418
注意:部分源程序在文件PROGl.C中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
34.請編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p~n-1(p<n-1)的數(shù)組元素平移到數(shù)組的前面。
例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值為6。移動(dòng)后,一維數(shù)組的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。
[注意]部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
[試題源程序]
#inciude<stdio.h>
#defineN80
voidfun(int*w,intp,intn)
{
}
main()
{
inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
inti,P,n=15;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\nEnterp:");
scanf("%d",&p);
fun(a,P,n);
printf("\nThedataaftermoving:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
四、單選題(0題)35.下面哪個(gè)序列不是此圖的一個(gè)拓?fù)渑判?)A.ebfgadchB.aebdgfchC.adchebfgD.Aedbfgch
五、單選題(0題)36.設(shè)有序順序表中有n個(gè)數(shù)據(jù)元素,則利用二分查找法查找數(shù)據(jù)元素X的最多比較次數(shù)不超過()。A.log2+1
B.log2(n-1)
C.log2n
D.log2(n+1)
六、單選題(0題)37.根據(jù)二叉樹的定義可知道二叉樹共有種不同形態(tài)的二叉樹()。
A.3B.4C.5D.7
參考答案
1.A題目中程序不能實(shí)現(xiàn)預(yù)期功能是因?yàn)閣hile的循環(huán)條件錯(cuò)誤。選項(xiàng)B中把“s=1;”改為s=0;”,最終的結(jié)果“s=4”,與題目原意不同。選項(xiàng)C中把“n=1;”,改為“n=0;”最終的結(jié)果“s=2”,與題目原意不同。選項(xiàng)D中把“n=n+1;”改為“n=n*n;”,最終的結(jié)果“s=2”,與題目原意不同。選項(xiàng)A正確地修改了while循環(huán)條件,可以得到正確結(jié)果。故本題答案為A選項(xiàng)。
2.A數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計(jì)過程中不斷修改、充實(shí)和完善的。故答案為A選項(xiàng)。
3.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。
4.D
5.D
6.C在計(jì)算(float)(a4-b)/2時(shí),由于通過強(qiáng)制類型轉(zhuǎn)換將(a+b)轉(zhuǎn)換成了float型,所以應(yīng)先將2轉(zhuǎn)換成float型,再進(jìn)行計(jì)算,得4.500000。在計(jì)算(int)x%(int)y時(shí),先將x和y通過強(qiáng)制類型轉(zhuǎn)換成int型,再進(jìn)行求余運(yùn)算,結(jié)果為1。又因?yàn)?.500000是float型,所以將1和它相加時(shí),先將1換成float型,再計(jì)算,得到5.500000。類型轉(zhuǎn)換的一般規(guī)則是:低級(jí)類型從高級(jí)類型,并進(jìn)行相應(yīng)的轉(zhuǎn)換。數(shù)據(jù)類型的級(jí)別由低到高的排序表示為:char→int→unsigned→log→float→double。
7.C[解析]第一次外循環(huán)的值為1.第一次內(nèi)循環(huán)的值為3.不滿足條件執(zhí)行m*=j即m的值為3;第二次的值為2.不滿足條件執(zhí)行m*=*j,即m的值為6;第三次的值為1.不滿足條件執(zhí)行m*=j,即m的值仍為6.第二次外循環(huán)的值為2.j的值為3.滿足條件,執(zhí)行break語句,跳出循環(huán)。
8.C解析:本題考核的知識(shí)點(diǎn)是字符型變量的基本概念。用單引號(hào)括起來的一個(gè)字符稱為字符常量,而選項(xiàng)B和選項(xiàng)D中用的是雙引號(hào),而用雙引號(hào)括起來的字符為字符串常量,故選項(xiàng)B和選項(xiàng)D不正確。因?yàn)樵贑語言中,字符常量在存儲(chǔ)時(shí),并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中,所以C語言使字符型數(shù)據(jù)和整形數(shù)據(jù)之間可以通用,選項(xiàng)C正確.而選項(xiàng)A中,給字符型變量賦值時(shí)只能賦一個(gè)字符,而9,7作為字符時(shí)為兩個(gè)字符且必須分別為單引號(hào)括起來,故選項(xiàng)A不正確,所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。
9.A
10.D解析:關(guān)系模型中包括關(guān)系的數(shù)據(jù)結(jié)構(gòu)、關(guān)系的操縱和關(guān)系中的數(shù)據(jù)約束。關(guān)系完整性約束即數(shù)據(jù)完整性,包括實(shí)體完整性、參照完整性和用戶自定義完整性。
11.D解析:線性表可以為空表,排除選項(xiàng)B。第一個(gè)元素沒有直接前件,最后一個(gè)元素沒有直接后件,故排除選項(xiàng)A。線性表的定義中,元素的排列沒有規(guī)定大小順序,故選項(xiàng)C也有誤,只有D項(xiàng)是正確的。
12.Cmain函數(shù)首先定義一個(gè)整型變量data,使用scanf函數(shù)輸入一個(gè)整數(shù)賦給data。接著執(zhí)行for循環(huán),i的值為0~7。當(dāng)i的值不大于data的值時(shí),使用continue語句跳過當(dāng)前循環(huán),進(jìn)入下一輪循環(huán)。若從鍵盤輸入5,data的值為5,i取值為0~5時(shí),都不執(zhí)行printf語句。當(dāng)i取值為6、7時(shí),執(zhí)行printf語句,輸出6,7。故本題答案為C選項(xiàng)。
13.(y%2)==0(y%2)==0解析:因符合偶數(shù)的條件是對2取余為0,所以要描述y是偶數(shù)的表達(dá)式是(y%2)==0。
14.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計(jì)字符串單詞個(gè)數(shù)的算法中,本題的flag是為了記錄—個(gè)單詞是否結(jié)束。第18空應(yīng)填*s++;如果某個(gè)字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標(biāo)志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前—個(gè)字符是否是空格,如果是則說明這個(gè)字符是—個(gè)單詞的開始,將flag標(biāo)志為1,num的值加1,如果不是,則不必記錄。故第19空應(yīng)填flag=0或*(s-1)='';最后—個(gè)空格需填寫的是返回的單詞的個(gè)數(shù),即num。
15.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:本題考查了數(shù)據(jù)結(jié)構(gòu)的基本概念。與棧類似,隊(duì)列也是線性表,可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),所以帶鏈的隊(duì)列屬于線性結(jié)構(gòu)。
16.SunDan20042SunDan20042解析:f函數(shù)中形參1用的是顯式傳地址的方式,因此p->name的值發(fā)生改變,而形參2用的傳值的方式,在調(diào)用時(shí)不改變實(shí)參的值,因此p->num的值不發(fā)生變化。
17.functionrunningresultis:9.0
18.33本試題中,先判斷表達(dá)式p/3>0,該值為真,所以此表達(dá)式等于p/10的值3,故最后輸出的值為3。
19.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。
20.2525解析:本題考查帶參數(shù)的宏的定義及相關(guān)運(yùn)算。運(yùn)算過程為:t=POW(x+y)=(2+3)*(2+3)=25。
21.非0非0解析:邏輯運(yùn)算中,非0表示邏輯“真”,用。表示邏輯“假”。
22.E-R圖E-R圖解析:E-R圖是設(shè)計(jì)概念模型的有力工具。
23.a[j]<a[i]a[j]<a[i]解析:本題考查排序算法,題目中通過雙循環(huán)嵌套來實(shí)現(xiàn),外層循環(huán)跳出待排序的元素,內(nèi)層循環(huán)具體實(shí)現(xiàn)a[i]到a[k-2]之間偶數(shù)下標(biāo)元素的排序,每次將最小的放在a[i]中。所以空中填a[j]<a[i]。
24.-2-2解析:題目中定義并初始化了變量k為0,最后輸出k的值,要求為4,而在此期間只有k+=-(i+j);這條語句改變了k的值,即要求表達(dá)式-(i+j)的值為4。所以,答案應(yīng)該為-2,因?yàn)橹挥衖=j=-2時(shí),表達(dá)式-(i+j)的值才為4。
25.intfun(intscore[]intmintbelow[]){intij=0;floatav=0.0;for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]<av)/*如果分?jǐn)?shù)低于平均分則將此分?jǐn)?shù)放入below數(shù)組中*/below[j++]=score[i];returnj;/*返回低于平均分的人數(shù)*/}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版七年級(jí)音樂上冊(五線譜)第一單元《校園的早晨》教學(xué)設(shè)計(jì)
- 2025年制劑仿制藥合作協(xié)議書
- 小學(xué)信息技術(shù)第二冊下 我的課表我來做3教學(xué)設(shè)計(jì) 泰山版
- 2024年四年級(jí)品社下冊《遠(yuǎn)離“誘惑”》教學(xué)設(shè)計(jì) 山東版
- 七年級(jí)生物下冊 4.7.2《探究環(huán)境污染對生物的影響》教學(xué)設(shè)計(jì) (新版)新人教版
- 九年級(jí)語文上冊 第三單元 11 醉翁亭記教學(xué)設(shè)計(jì) 新人教版
- 2024年農(nóng)藝師考試獲取高分的秘訣試題及答案
- 收納師目標(biāo)設(shè)定試題及答案
- 統(tǒng)計(jì)師考試模型選擇試題及答案
- 混凝土建筑碳排放核算與低碳設(shè)計(jì)策略
- 職高、中職、衛(wèi)校、技術(shù)學(xué)校班主任能力大賽(班級(jí)建設(shè)方案2023年)
- 2023汽車用鋁電線束技術(shù)條件
- 機(jī)械設(shè)備租賃技術(shù)服務(wù)方案
- AB 753變頻器簡單操作培訓(xùn)(參數(shù)拷貝)
- 履帶式機(jī)器人設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 高中美術(shù)-《“木字旁”及帶“木字旁”字的寫法》教學(xué)課件設(shè)計(jì)
- Unity3D游戲開發(fā)PPT完整全套教學(xué)課件
- 安慶港中心港區(qū)皖河新港一期工程環(huán)境影響報(bào)告書
- 廠房、倉庫自然排煙開窗面積計(jì)算-
- CQI-8分層過程審核
- 太平洋保險(xiǎn)招聘試題
評論
0/150
提交評論