




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2022年黑龍江省雙鴨山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.字符串通常采用的兩種存儲(chǔ)方式是()A.散列存儲(chǔ)和索引存儲(chǔ)B.索引存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)C.順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)D.散列存儲(chǔ)和順序存儲(chǔ)
2.設(shè)有下列二叉樹(shù):
對(duì)此二叉樹(shù)后序遍歷的結(jié)果為
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
3.設(shè)有定義:int?x=2,以下表達(dá)式中,值不為6的是()。
A.2*<.x+=2B.x++.2*xC.x=x*(1+x)D.x*=x+1
4.下面程序的輸出結(jié)果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}
A.1B.2C.7D.10
5.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。
A.15,12,9,B.15,13,11,C.15,11,7,D.15,15,15,
6.
7.一個(gè)關(guān)系中屬性個(gè)數(shù)為1時(shí),稱(chēng)此關(guān)系為()。
A.對(duì)應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系
8.下列定義數(shù)組的語(yǔ)句中錯(cuò)誤的是()。
A.intnum[][3]={{1,2},3,4,5,6};
B.intnum[2][4]={{1,2},{3,4},{5,6}};
C.intnum[]={1,2,3,4,5,6};
D.intnum[][4]={1,2,3,4,5,6};
9.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序輸出為()。
A.編譯有錯(cuò)B.0,0,0,3C.1,1,2,0D.0,1,2,0
10.下列敘述中正確的是()
A.一個(gè)算法的空間復(fù)雜度打,則其時(shí)間復(fù)雜度也必定大
B.一個(gè)算法的空間復(fù)雜度大,則其時(shí)間復(fù)雜度也必定小
C.一個(gè)算法的時(shí)間復(fù)雜度大,則其空間復(fù)雜度也必定小
D.算法的時(shí)間復(fù)雜度與空間復(fù)雜度沒(méi)有直接相關(guān)
11.
12.結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成,三種基本結(jié)構(gòu)組成的算法A.可以完成任何復(fù)雜的任務(wù)B.只能完成部分復(fù)雜的任務(wù)C.只能完成符合結(jié)構(gòu)化的任務(wù)D.只能完成一些簡(jiǎn)單的任務(wù)
二、2.填空題(12題)13.程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中【】是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
14.______是數(shù)據(jù)庫(kù)應(yīng)用的核心。
15.函數(shù)delete(s,i,n)的作用是從字符串s中刪除從第i個(gè)字符開(kāi)始的n個(gè)字符,請(qǐng)?zhí)羁铡?/p>
voiddelete(chars[],inti,intn)
{intj,k,legth=0;
while(s[length])
【】;
-i;
j=i;
}
if(【】)
{k=i+n;
if(i+n<length)
while(k<length)
s[j++]=s[k++];
s[j]='\0'
}
16.以下程序運(yùn)行后的輸出結(jié)果是【】。
#include<stdio,h>
main()
{inta=1,b=2,c=3;
if(c=a)printf("%d\n",c);
elseprintf("%d\n",b);}
17.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為_(kāi)_____。
18.設(shè)有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語(yǔ)句“k=B*20;”(k為int型變量)后,k的值是______。
19.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,用來(lái)請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些信息的要求稱(chēng)為【】。
20.下面程序執(zhí)行后輸出的結(jié)果是【】。
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
21.下述程序的輸出結(jié)果是【】。
#include<stdio.h>
intfun(intx)
{intp;
if(x==0||x==1)
return3;
else
p=x-fun(x-2);
returnp;}
voidmain()
{printf("\n%d",fun(9));}
22.以下程序中,函數(shù)fun的功能是計(jì)算x2-2x+6,主函數(shù)中將調(diào)用fun函數(shù)計(jì)算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
請(qǐng)?zhí)羁铡?/p>
doublefun(doublex){return(x*x-2*x+6);}
{doublex,y1,y2;
printf("Enterx:");scanf("%lf",&x);
y1=fun([6]);
y2=fun([7]);
printf("y1=%lf,y2=%lf\n",y1,y
23.若有以下程序
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf("%d\n",d);
}
執(zhí)行后輸出結(jié)果是【】。
24.以下程序運(yùn)行后的輸出結(jié)果是______。
voidswap(intx,inty)
{intt;
t=x;x=y;y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d\n",a,b);
}
三、3.程序設(shè)計(jì)題(10題)25.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的十位和千位上,b中的十位和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。
例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=5241。
注意:部分源程序存在文件.PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
26.已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫(xiě)函數(shù)fun,函數(shù)的功能是:找出成績(jī)最低的學(xué)生記錄,通過(guò)形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。
注意:部分源程序存在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的蒞括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
27.請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(int*a,int*n)
{
}
main()
{
intaa[1000],n,k;
clrscr();
fun(aa,an);
for(k=0;k<n;k++)
if((k+1)%10==0)
{
printf("%5d",aa[k]);
printf("\n");/*—行寫(xiě)10個(gè)數(shù)*/
}
else
printf("%5d",aa[k]);
}
28.請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從0到p(p≤n-1)的數(shù)組元素平移到數(shù)組的最后。
例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值為3。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為5,6,7,8,9,10,11,12,13,14,15,1,2,3,4。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#defineN80
voidfun(int*w,intp,intn)
{
}
main()
{
inta[N]={1,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");
}
29.請(qǐng)編寫(xiě)函數(shù)fun,其功能是:計(jì)算并輸出3~n之間(含3和n)所有素?cái)?shù)的平方根之和。
例如,在主函數(shù)中從鍵盤(pán)為n輸入100后,輸出為:sum=148.874270。
[注意]要求n的值大于2但不大于100。
[注意]部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
[試題源程序]
#include<math.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
intn;
doublesum;
printf("\n\nInputn:");
scanf("%d",&n);
sum=fun(n);
printf("kn\nsum=%f\n\n",sum);
}
30.請(qǐng)編寫(xiě)函數(shù)fun,其功能是將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。
例如,當(dāng)a=16,b=35,調(diào)用該函數(shù)后,c=5361。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#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);
}
31.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和后面的*號(hào)不刪除。
例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是A*BC*DEF*G*******。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序;
#include<stdio.h>
#include<conio.h>
voidfun(char*a)
{
}
main()
{
chars[81];
printf("Enterastring:\n");
gets(s);
fun(s);
printf("Thestringafterdeleted:\n");
puts(s);
}
32.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。
注意:部分源程序存在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
33.請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:實(shí)現(xiàn)B=A+A',即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計(jì)算結(jié)果在main()函數(shù)中輸出。
例如,輸入下面矩陣:
123
456
789
其轉(zhuǎn)置矩陣為:
147
258
369
則程序輸出:
2610
61014
101418
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio,h>
voidfun(inta[3][3],intb[3][3])
{
}
main()
{
inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},
t[3][3];
inti,j;
clrscr();
fun(a,t);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}
34.請(qǐng)編寫(xiě)函數(shù)fun,其功能是求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。
例如,輸入如下整數(shù):87667589610l30l401980431451777則輸出結(jié)果為:6,980
注意:部分源程序在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
四、單選題(0題)35.若有定義“inta=1234,b=-5678;”,用語(yǔ)句“printf("%+-6d%+-6d",a,b);”輸出,以下正確的輸出結(jié)果是()。
A.+1234-5678(中間有一個(gè)空格,最后有一個(gè)空格)
B.+1234-5678(最前面有一個(gè)空格,中間有一個(gè)空格)
C.+-1234+-5678(最前面和最后均無(wú)空格)
D.1234-5678(中間有兩個(gè)空格,最后有一個(gè)空格)
五、單選題(0題)36.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12
六、單選題(0題)37.若有語(yǔ)句“void*P=malloc(80);”,則以下敘述錯(cuò)誤的是()。
A.可以通過(guò)指針P直接訪(fǎng)問(wèn)用malloc開(kāi)辟的這塊內(nèi)存
B.p所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有20個(gè)int型元素的一維數(shù)組來(lái)使用
C.p所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有10個(gè)double型元素的一維數(shù)組來(lái)使用
D.P所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有80個(gè)char型元素的一維數(shù)組來(lái)使用
參考答案
1.C
2.D解析:二叉樹(shù)的遍歷分為先序、中序、后序三種不同方式。本題要求后序遍歷,其遍歷順序應(yīng)該為:后序遍歷左子樹(shù)->,后序遍歷右子樹(shù)->,訪(fǎng)問(wèn)根結(jié)點(diǎn)。按照定義,后序遍歷序列是DEBFCA,故答案為D。
3.A?A)選項(xiàng)中逗號(hào)表達(dá)式先計(jì)算第一表達(dá)式2*x,然后計(jì)算表達(dá)式x+=2的值,即x=x+2即4,整個(gè)逗號(hào)表達(dá)式為第二個(gè)表達(dá)式的值4,所以選A)。B)選項(xiàng)中首先計(jì)算逗號(hào)表達(dá)式中第一一個(gè)表達(dá)式x++,此時(shí)x為3,再執(zhí)行第二個(gè)表達(dá)式2*x=2*3=6,所以逗號(hào)表達(dá)式為第二個(gè)表達(dá)式的值6。C)選項(xiàng)的賦值表達(dá)式可以表示為x=x*(1+x)=2*(1+2)=6。D)選項(xiàng)中的表達(dá)式可以表示為x=x*(x+1)=2*3=6。
4.B解析:本題考查函數(shù)的調(diào)用。函數(shù)fun2的作用是將形參x和y的值相乘后減去3,在fun2中的變量m是一個(gè)局部變量,它的值在fun2函數(shù)內(nèi)有效;在主函數(shù)中的m指的是全局變量,其值為13,所以fun2(a,b)/m的值為(7*5-3)/13,即2。
5.A程序定義整型的全局變量a,初值為5,main函數(shù)定義整型局部變量a,初值為4。所以在main函數(shù)中,局部變量a屏蔽全局變量a。func函數(shù)中定義局部變量b,初值為5,定義靜態(tài)變量c,初值為5,并且在func函數(shù)中變量a引用的是全局變量a。綜上,我們使用a_a代表全局變量a,使用m_a代表main函數(shù)中局部變量a。main函數(shù)中,當(dāng)k=0時(shí),a_a=5,m_a=4,調(diào)用函數(shù)func(4),函數(shù)func中d的值為4,b的值為5,c的值為5,執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為4,b的值為4,c的值為4,d的值為3,a+b+c+d的值為15,程序輸出15。當(dāng)k=1時(shí),a_a=4,m_a=3,調(diào)用函數(shù)func(3),函數(shù)func中d的值為3,b的值為5,c的值為4(靜態(tài)變量使用上一次調(diào)用結(jié)束時(shí)的值),執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為3,b的值為4,c的值為3,d的值為2,a+b+c+d的值為12,程序輸出12。當(dāng)k=2時(shí),a_a=3,m_a=2,調(diào)用函數(shù)func(2),函數(shù)func中cl的值為2,b的值為5,c的值為3,執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為2,b的值為4,c的值為2,d的值為1,a+b+c+d的值為9,程序輸出9。本題答案為A選項(xiàng)。
6.D
7.C解析:在關(guān)系模型數(shù)據(jù)庫(kù)中,基本結(jié)構(gòu)是二維表,這種二維表稱(chēng)為關(guān)系。關(guān)系的列稱(chēng)為屬性,一個(gè)具有N個(gè)屬性的關(guān)系稱(chēng)為N元關(guān)系。注意:各種關(guān)系查詢(xún)語(yǔ)言與過(guò)程性語(yǔ)言和非過(guò)程性語(yǔ)言的關(guān)系,過(guò)程性語(yǔ)言的特點(diǎn)。
8.BB選項(xiàng)中定義的數(shù)組為2行4列,而賦值時(shí)卻賦成了3行,所以錯(cuò)誤。故本題答案為B選項(xiàng)。
9.AC語(yǔ)言中規(guī)定else總是和之前與其最近的且不帶else的if配對(duì)。題目中,“if(a=1)b=1;c=2;”默認(rèn)省略了else,導(dǎo)致下一句else沒(méi)有匹配語(yǔ)句。故本題答案為A選項(xiàng)。
10.D
11.A
12.A解析:C程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本的結(jié)構(gòu)組成,這三種結(jié)構(gòu)可以組成任何復(fù)雜的C程序,即可以完成任何復(fù)雜的任務(wù)。
13.靜態(tài)分析靜態(tài)分析解析:程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
14.數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)
15.length++i<lengthlength++\r\ni<length解析:第—個(gè)循環(huán)極有可能是計(jì)算串的長(zhǎng)度,在i<=length時(shí)字符才被刪除,被刪除的是從第i個(gè)到第i+n或最后一個(gè)間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進(jìn)行了-i運(yùn)算,故實(shí)際應(yīng)填入i<length。
16.11解析:該程序要注意的是if語(yǔ)句的判斷條件“c=a”是賦值,而不是“c==a”。由于a=1,故條件c=a使c的值為1(真),所以輸出c的值1。
17.1616解析:函數(shù)運(yùn)算不改變數(shù)據(jù)類(lèi)型,所以結(jié)果也是double型,fabs(x)是對(duì)x取絕對(duì)值,pow(y,fabs(x))是y的labs(x)次冪,即2.04。0=16.000000(注意;結(jié)果為double型)。
18.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算。運(yùn)算過(guò)程為:k=B*20=(A+3)*20=(2+3)*20=100。
19.消息消息解析:消息是一個(gè)實(shí)例與另一個(gè)實(shí)例之間傳遞的信息,它請(qǐng)求對(duì)象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。
20.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。
21.77解析:本題考查的是函數(shù)的遞歸調(diào)用。x=0或x=1是遞歸的終止條件,然后用回代的方法從一個(gè)已知值推出下一個(gè)值,直到計(jì)算出最終結(jié)果。
22.
23.99解析:函數(shù)的嵌套調(diào)用是在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給d。函數(shù)的第一個(gè)參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價(jià)于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。
24.4334
25.
解析:該程序功能是將兩個(gè)正整數(shù)合并形成一個(gè)整數(shù)的題型。本題類(lèi)型首先要考慮整數(shù)的位數(shù)分離,然后要進(jìn)行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開(kāi),改變排列順序后,再組合成新的數(shù)字。
26.
解析:該程序功能是求最低分?jǐn)?shù)的學(xué)生。本題是關(guān)于求解結(jié)構(gòu)體中某些成員的最小值,首先將第一個(gè)值設(shè)定為最小值,并在循環(huán)中將其他所有值與該值進(jìn)行比較,求得最小值。
27.voidfun(int*aint*n){inti.j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并放入數(shù)組a中*/if((i%5==0||i%13==0)&&i%65!=0)a[j++]=i;*n=j;/*傳回滿(mǎn)足條件的數(shù)的個(gè)數(shù)*/}voidfun(int*a,int\u3000*n)\r\n{\r\ninti.j=0;\r\nfor(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù),并放入數(shù)組a中*/\r\nif((i%5==0||i%13==0)&&i%65!=0)\r\na[j++]=i;\r\n*n=j;/*傳回滿(mǎn)足條件的數(shù)的個(gè)數(shù)*/\r\n}解析:注意本題題目是找出能被5或13整除但不能同時(shí)被5和13整除的所有整數(shù)。能同時(shí)被5和13整除的整數(shù)一定能被65整除,且不能被65整除的數(shù)不一定就是能被5或13整除的數(shù)。所以可得出程序中的if()。按運(yùn)算優(yōu)先級(jí)可知(i%5==0||i%13==0),注意,兩邊必須要有小括號(hào)。
28.voidfun(int*wintpintn){intijt;for(i=0;i<=p;i++)/*循環(huán)左移p+1次*/{t=w[0];for(j=1/j<n;j++)/*實(shí)現(xiàn)循環(huán)左移*/w[j-1]=w[j];w[j-1]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,j,t;\r\nfor(i=0;i<=p;i++)/*循環(huán)左移p+1次*/\r\n{t=w[0];\r\nfor(j=1/j<n;j++)/*實(shí)現(xiàn)循環(huán)左移*/\r\nw[j-1]=w[j];\r\nw[j-1]=t;\r\n}\r\n}解析:本題采用“循環(huán)左移”的算法(關(guān)于“循環(huán)左移”,我們?cè)诤竺娴脑囶}中有詳細(xì)的解釋)。和我們?cè)谇懊娣治龅纳杂胁煌氖牵粋€(gè)是整型數(shù)組,一個(gè)是字符型數(shù)組。
29.doublefun(intn){intij=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j==i)s=s+sqrt(i);}returns;}doublefun(intn)\r\n{\r\ninti,j=0;\r\ndoubles=0;\r\nfor(i=3;i<=n;i++)\r\n{\r\nfor(j=2;j<i;j++)\r\nif(i%j==0)\r\nbreak;\r\nif(j==i)\r\ns=s+sqrt(i);\r\n}\r\nreturns;\r\n}
30.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}解析:語(yǔ)句“*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;”是將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。注意“/”和“%”的用法。
31.voidfun(char*a){char*p=a;while(*P==‘+’)p++;/*指針p指向字符串第一個(gè)字母*/for(;*p!=‘\0’;p++a++)*a=*p;/*從第—個(gè)字母開(kāi)始其后的字符都放入指針a所指的字符串中*/*a=‘\0’;/*在字符串最后加上結(jié)束標(biāo)記符*/}voidfun(char*a)\r\n{\r\nchar*p=a;\r\nwhile(*P==‘+’)p++;/*指針p指向字符串第一個(gè)字母*/\r\nfor(;*p!=‘\\0’;p++,a++)\r\n*a=*p;/*從第—個(gè)字母開(kāi)始,其后的字符都放入指針a所指的字符串中*/\r\n*a=‘\\0’;/*在字符串最后加上結(jié)束標(biāo)記符*/\r\n}解析:在前面的改錯(cuò)題和編程題中,相關(guān)試題已經(jīng)出現(xiàn)好多次了,我們?cè)诖颂峁┝硪环N解答方法。
#include<string.h>
voidfun(char*a)
{char*p=a;
while(*p==‘*’)p++;
strcpy(a,p);
}
32.
解析:該程序功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)。其中,解題思路是將每位數(shù)字字符串的ASCII碼減去48(字符“0”的ASCII碼值),變成數(shù)字0~9。然后再不斷進(jìn)行高位乘以10加低位的運(yùn)算,或者反過(guò)來(lái)從低位向高位求,即不斷進(jìn)行低位加高位乘以10的運(yùn)算。
33.voidfun(inta[3][3]intb[3][3]){intij;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置存放在矩陣b中*/}voidfun(inta[3][3],intb[3][3])\r\n{\r\ninti,j;\r\nfor(i=0;i<3;i++)\r\nfor(j=0;j<3;j++)\r\nb[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置,存放在矩陣b中*/\r\n}解析:在《線(xiàn)性代數(shù)》里面有矩陣轉(zhuǎn)置的概念,行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對(duì)應(yīng)原矩陣的第j行第i列。
若要將矩陣a轉(zhuǎn)置后還存入a中可用程序:
inti,j,t;
for(i=0;i<N;i++)
for(j=i;j<N;j++)
{t=a[i][j];a[i][j]=a[j][i];a[j][ii=t;}
注意第2個(gè)循環(huán)的初值。
若要將矩陣a轉(zhuǎn)置后存入c中:
inti,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
c[i][j]=a[j][i];
注意數(shù)組c和a的下標(biāo)。
34.
解析:(1)該程序功能是求最大元素在數(shù)組中的下標(biāo)。它的解題思路是,用最大值變量max標(biāo)記第一個(gè)待找數(shù)據(jù),逐個(gè)把所有待找數(shù)據(jù)和max進(jìn)行比較,并用pos標(biāo)記其當(dāng)前最大值所在位置,從而找出最大值。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)“fun(a,10,&k);”中的參數(shù)a存放著給出的整數(shù),fun函數(shù)實(shí)現(xiàn)查找最大元素的下標(biāo)。
35.Aprintf函數(shù)參數(shù)包括格式控制字符串和輸出參數(shù),其中格式控制字符串中除了格式控制字符外,其他字符原樣輸出。本題中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之間,“+”號(hào)表示輸出的數(shù)字帶正負(fù)號(hào)號(hào)表示輸出數(shù)據(jù)向左對(duì)齊,“6”表示輸出寬度,如果輸出數(shù)據(jù)的寬度不夠6,那么左對(duì)齊,右邊補(bǔ)空格。所以本題輸出+1234-5678(中間有一個(gè)空格,最后有一個(gè)空格)。本題答案為A選項(xiàng)。
36.B在第1次外層for循環(huán)中,首先x++得到x=1。進(jìn)入到內(nèi)層for循環(huán),只有循環(huán)j的值為奇數(shù)時(shí),變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過(guò)程中,變量x的值自加兩次,當(dāng)退出內(nèi)層for循環(huán)時(shí),x=3,然后執(zhí)行x++,得到x=4。在進(jìn)入執(zhí)行第2次外層for循環(huán)中,首先x++得到x=5。進(jìn)入到內(nèi)層for循環(huán),只有循環(huán)變量j的值為奇數(shù)時(shí),變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過(guò)程中,變量X的值自加1兩次,當(dāng)退出內(nèi)層for循環(huán)時(shí),x=7,然后執(zhí)行x++,得到x=8,所以打印輸出變量x的值為8。
37.A題干中使用malloc函數(shù)分配了80個(gè)字節(jié)的內(nèi)存單元,void指針p指向該內(nèi)存單元。在C語(yǔ)言中,void*不能直接使用,必須利用強(qiáng)制類(lèi)型轉(zhuǎn)換將其轉(zhuǎn)成所需的類(lèi)型才能使用,選項(xiàng)A錯(cuò)誤。int類(lèi)型的元素占4個(gè)字節(jié),所以可以將p指向的內(nèi)存強(qiáng)制類(lèi)型轉(zhuǎn)換成具有20個(gè)int類(lèi)型的一維數(shù)組來(lái)使用,同理,也可以強(qiáng)制類(lèi)型轉(zhuǎn)換成10個(gè)double類(lèi)型的一維數(shù)組來(lái)使用,或強(qiáng)制類(lèi)型轉(zhuǎn)換成80個(gè)char類(lèi)型的一維數(shù)組來(lái)使用,選項(xiàng)B、C、D正確。故本題答案為A選項(xiàng)。2022年黑龍江省雙鴨山市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.字符串通常采用的兩種存儲(chǔ)方式是()A.散列存儲(chǔ)和索引存儲(chǔ)B.索引存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)C.順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)D.散列存儲(chǔ)和順序存儲(chǔ)
2.設(shè)有下列二叉樹(shù):
對(duì)此二叉樹(shù)后序遍歷的結(jié)果為
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
3.設(shè)有定義:int?x=2,以下表達(dá)式中,值不為6的是()。
A.2*<.x+=2B.x++.2*xC.x=x*(1+x)D.x*=x+1
4.下面程序的輸出結(jié)果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}
A.1B.2C.7D.10
5.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。
A.15,12,9,B.15,13,11,C.15,11,7,D.15,15,15,
6.
7.一個(gè)關(guān)系中屬性個(gè)數(shù)為1時(shí),稱(chēng)此關(guān)系為()。
A.對(duì)應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系
8.下列定義數(shù)組的語(yǔ)句中錯(cuò)誤的是()。
A.intnum[][3]={{1,2},3,4,5,6};
B.intnum[2][4]={{1,2},{3,4},{5,6}};
C.intnum[]={1,2,3,4,5,6};
D.intnum[][4]={1,2,3,4,5,6};
9.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序輸出為()。
A.編譯有錯(cuò)B.0,0,0,3C.1,1,2,0D.0,1,2,0
10.下列敘述中正確的是()
A.一個(gè)算法的空間復(fù)雜度打,則其時(shí)間復(fù)雜度也必定大
B.一個(gè)算法的空間復(fù)雜度大,則其時(shí)間復(fù)雜度也必定小
C.一個(gè)算法的時(shí)間復(fù)雜度大,則其空間復(fù)雜度也必定小
D.算法的時(shí)間復(fù)雜度與空間復(fù)雜度沒(méi)有直接相關(guān)
11.
12.結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成,三種基本結(jié)構(gòu)組成的算法A.可以完成任何復(fù)雜的任務(wù)B.只能完成部分復(fù)雜的任務(wù)C.只能完成符合結(jié)構(gòu)化的任務(wù)D.只能完成一些簡(jiǎn)單的任務(wù)
二、2.填空題(12題)13.程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中【】是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
14.______是數(shù)據(jù)庫(kù)應(yīng)用的核心。
15.函數(shù)delete(s,i,n)的作用是從字符串s中刪除從第i個(gè)字符開(kāi)始的n個(gè)字符,請(qǐng)?zhí)羁铡?/p>
voiddelete(chars[],inti,intn)
{intj,k,legth=0;
while(s[length])
【】;
-i;
j=i;
}
if(【】)
{k=i+n;
if(i+n<length)
while(k<length)
s[j++]=s[k++];
s[j]='\0'
}
16.以下程序運(yùn)行后的輸出結(jié)果是【】。
#include<stdio,h>
main()
{inta=1,b=2,c=3;
if(c=a)printf("%d\n",c);
elseprintf("%d\n",b);}
17.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為_(kāi)_____。
18.設(shè)有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語(yǔ)句“k=B*20;”(k為int型變量)后,k的值是______。
19.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,用來(lái)請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些信息的要求稱(chēng)為【】。
20.下面程序執(zhí)行后輸出的結(jié)果是【】。
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
21.下述程序的輸出結(jié)果是【】。
#include<stdio.h>
intfun(intx)
{intp;
if(x==0||x==1)
return3;
else
p=x-fun(x-2);
returnp;}
voidmain()
{printf("\n%d",fun(9));}
22.以下程序中,函數(shù)fun的功能是計(jì)算x2-2x+6,主函數(shù)中將調(diào)用fun函數(shù)計(jì)算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
請(qǐng)?zhí)羁铡?/p>
doublefun(doublex){return(x*x-2*x+6);}
{doublex,y1,y2;
printf("Enterx:");scanf("%lf",&x);
y1=fun([6]);
y2=fun([7]);
printf("y1=%lf,y2=%lf\n",y1,y
23.若有以下程序
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf("%d\n",d);
}
執(zhí)行后輸出結(jié)果是【】。
24.以下程序運(yùn)行后的輸出結(jié)果是______。
voidswap(intx,inty)
{intt;
t=x;x=y;y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d\n",a,b);
}
三、3.程序設(shè)計(jì)題(10題)25.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的十位和千位上,b中的十位和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。
例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=5241。
注意:部分源程序存在文件.PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
26.已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫(xiě)函數(shù)fun,函數(shù)的功能是:找出成績(jī)最低的學(xué)生記錄,通過(guò)形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。
注意:部分源程序存在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的蒞括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
27.請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(int*a,int*n)
{
}
main()
{
intaa[1000],n,k;
clrscr();
fun(aa,an);
for(k=0;k<n;k++)
if((k+1)%10==0)
{
printf("%5d",aa[k]);
printf("\n");/*—行寫(xiě)10個(gè)數(shù)*/
}
else
printf("%5d",aa[k]);
}
28.請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從0到p(p≤n-1)的數(shù)組元素平移到數(shù)組的最后。
例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值為3。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為5,6,7,8,9,10,11,12,13,14,15,1,2,3,4。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#defineN80
voidfun(int*w,intp,intn)
{
}
main()
{
inta[N]={1,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");
}
29.請(qǐng)編寫(xiě)函數(shù)fun,其功能是:計(jì)算并輸出3~n之間(含3和n)所有素?cái)?shù)的平方根之和。
例如,在主函數(shù)中從鍵盤(pán)為n輸入100后,輸出為:sum=148.874270。
[注意]要求n的值大于2但不大于100。
[注意]部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
[試題源程序]
#include<math.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
intn;
doublesum;
printf("\n\nInputn:");
scanf("%d",&n);
sum=fun(n);
printf("kn\nsum=%f\n\n",sum);
}
30.請(qǐng)編寫(xiě)函數(shù)fun,其功能是將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。
例如,當(dāng)a=16,b=35,調(diào)用該函數(shù)后,c=5361。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#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);
}
31.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和后面的*號(hào)不刪除。
例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是A*BC*DEF*G*******。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序;
#include<stdio.h>
#include<conio.h>
voidfun(char*a)
{
}
main()
{
chars[81];
printf("Enterastring:\n");
gets(s);
fun(s);
printf("Thestringafterdeleted:\n");
puts(s);
}
32.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。
注意:部分源程序存在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
33.請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:實(shí)現(xiàn)B=A+A',即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計(jì)算結(jié)果在main()函數(shù)中輸出。
例如,輸入下面矩陣:
123
456
789
其轉(zhuǎn)置矩陣為:
147
258
369
則程序輸出:
2610
61014
101418
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio,h>
voidfun(inta[3][3],intb[3][3])
{
}
main()
{
inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},
t[3][3];
inti,j;
clrscr();
fun(a,t);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}
34.請(qǐng)編寫(xiě)函數(shù)fun,其功能是求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。
例如,輸入如下整數(shù):87667589610l30l401980431451777則輸出結(jié)果為:6,980
注意:部分源程序在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
四、單選題(0題)35.若有定義“inta=1234,b=-5678;”,用語(yǔ)句“printf("%+-6d%+-6d",a,b);”輸出,以下正確的輸出結(jié)果是()。
A.+1234-5678(中間有一個(gè)空格,最后有一個(gè)空格)
B.+1234-5678(最前面有一個(gè)空格,中間有一個(gè)空格)
C.+-1234+-5678(最前面和最后均無(wú)空格)
D.1234-5678(中間有兩個(gè)空格,最后有一個(gè)空格)
五、單選題(0題)36.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12
六、單選題(0題)37.若有語(yǔ)句“void*P=malloc(80);”,則以下敘述錯(cuò)誤的是()。
A.可以通過(guò)指針P直接訪(fǎng)問(wèn)用malloc開(kāi)辟的這塊內(nèi)存
B.p所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有20個(gè)int型元素的一維數(shù)組來(lái)使用
C.p所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有10個(gè)double型元素的一維數(shù)組來(lái)使用
D.P所指內(nèi)存可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換當(dāng)作具有80個(gè)char型元素的一維數(shù)組來(lái)使用
參考答案
1.C
2.D解析:二叉樹(shù)的遍歷分為先序、中序、后序三種不同方式。本題要求后序遍歷,其遍歷順序應(yīng)該為:后序遍歷左子樹(shù)->,后序遍歷右子樹(shù)->,訪(fǎng)問(wèn)根結(jié)點(diǎn)。按照定義,后序遍歷序列是DEBFCA,故答案為D。
3.A?A)選項(xiàng)中逗號(hào)表達(dá)式先計(jì)算第一表達(dá)式2*x,然后計(jì)算表達(dá)式x+=2的值,即x=x+2即4,整個(gè)逗號(hào)表達(dá)式為第二個(gè)表達(dá)式的值4,所以選A)。B)選項(xiàng)中首先計(jì)算逗號(hào)表達(dá)式中第一一個(gè)表達(dá)式x++,此時(shí)x為3,再執(zhí)行第二個(gè)表達(dá)式2*x=2*3=6,所以逗號(hào)表達(dá)式為第二個(gè)表達(dá)式的值6。C)選項(xiàng)的賦值表達(dá)式可以表示為x=x*(1+x)=2*(1+2)=6。D)選項(xiàng)中的表達(dá)式可以表示為x=x*(x+1)=2*3=6。
4.B解析:本題考查函數(shù)的調(diào)用。函數(shù)fun2的作用是將形參x和y的值相乘后減去3,在fun2中的變量m是一個(gè)局部變量,它的值在fun2函數(shù)內(nèi)有效;在主函數(shù)中的m指的是全局變量,其值為13,所以fun2(a,b)/m的值為(7*5-3)/13,即2。
5.A程序定義整型的全局變量a,初值為5,main函數(shù)定義整型局部變量a,初值為4。所以在main函數(shù)中,局部變量a屏蔽全局變量a。func函數(shù)中定義局部變量b,初值為5,定義靜態(tài)變量c,初值為5,并且在func函數(shù)中變量a引用的是全局變量a。綜上,我們使用a_a代表全局變量a,使用m_a代表main函數(shù)中局部變量a。main函數(shù)中,當(dāng)k=0時(shí),a_a=5,m_a=4,調(diào)用函數(shù)func(4),函數(shù)func中d的值為4,b的值為5,c的值為5,執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為4,b的值為4,c的值為4,d的值為3,a+b+c+d的值為15,程序輸出15。當(dāng)k=1時(shí),a_a=4,m_a=3,調(diào)用函數(shù)func(3),函數(shù)func中d的值為3,b的值為5,c的值為4(靜態(tài)變量使用上一次調(diào)用結(jié)束時(shí)的值),執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為3,b的值為4,c的值為3,d的值為2,a+b+c+d的值為12,程序輸出12。當(dāng)k=2時(shí),a_a=3,m_a=2,調(diào)用函數(shù)func(2),函數(shù)func中cl的值為2,b的值為5,c的值為3,執(zhí)行表達(dá)式“a_a--;b--;--c;--d;”后,a_a的值為2,b的值為4,c的值為2,d的值為1,a+b+c+d的值為9,程序輸出9。本題答案為A選項(xiàng)。
6.D
7.C解析:在關(guān)系模型數(shù)據(jù)庫(kù)中,基本結(jié)構(gòu)是二維表,這種二維表稱(chēng)為關(guān)系。關(guān)系的列稱(chēng)為屬性,一個(gè)具有N個(gè)屬性的關(guān)系稱(chēng)為N元關(guān)系。注意:各種關(guān)系查詢(xún)語(yǔ)言與過(guò)程性語(yǔ)言和非過(guò)程性語(yǔ)言的關(guān)系,過(guò)程性語(yǔ)言的特點(diǎn)。
8.BB選項(xiàng)中定義的數(shù)組為2行4列,而賦值時(shí)卻賦成了3行,所以錯(cuò)誤。故本題答案為B選項(xiàng)。
9.AC語(yǔ)言中規(guī)定else總是和之前與其最近的且不帶else的if配對(duì)。題目中,“if(a=1)b=1;c=2;”默認(rèn)省略了else,導(dǎo)致下一句else沒(méi)有匹配語(yǔ)句。故本題答案為A選項(xiàng)。
10.D
11.A
12.A解析:C程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本的結(jié)構(gòu)組成,這三種結(jié)構(gòu)可以組成任何復(fù)雜的C程序,即可以完成任何復(fù)雜的任務(wù)。
13.靜態(tài)分析靜態(tài)分析解析:程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對(duì)程序文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
14.數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)
15.length++i<lengthlength++\r\ni<length解析:第—個(gè)循環(huán)極有可能是計(jì)算串的長(zhǎng)度,在i<=length時(shí)字符才被刪除,被刪除的是從第i個(gè)到第i+n或最后一個(gè)間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進(jìn)行了-i運(yùn)算,故實(shí)際應(yīng)填入i<length。
16.11解析:該程序要注意的是if語(yǔ)句的判斷條件“c=a”是賦值,而不是“c==a”。由于a=1,故條件c=a使c的值為1(真),所以輸出c的值1。
17.1616解析:函數(shù)運(yùn)算不改變數(shù)據(jù)類(lèi)型,所以結(jié)果也是double型,fabs(x)是對(duì)x取絕對(duì)值,pow(y,fabs(x))是y的labs(x)次冪,即2.04。0=16.000000(注意;結(jié)果為double型)。
18.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算。運(yùn)算過(guò)程為:k=B*20=(A+3)*20=(2+3)*20=100。
19.消息消息解析:消息是一個(gè)實(shí)例與另一個(gè)實(shí)例之間傳遞的信息,它請(qǐng)求對(duì)象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。
20.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。
21.77解析:本題考查的是函數(shù)的遞歸調(diào)用。x=0或x=1是遞歸的終止條件,然后用回代的方法從一個(gè)已知值推出下一個(gè)值,直到計(jì)算出最終結(jié)果。
22.
23.99解析:函數(shù)的嵌套調(diào)用是在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給d。函數(shù)的第一個(gè)參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價(jià)于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9,所以輸出9。
24.4334
25.
解析:該程序功能是將兩個(gè)正整數(shù)合并形成一個(gè)整數(shù)的題型。本題類(lèi)型首先要考慮整數(shù)的位數(shù)分離,然后要進(jìn)行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開(kāi),改變排列順序后,再組合成新的數(shù)字。
26.
解析:該程序功能是求最低分?jǐn)?shù)的學(xué)生。本題是關(guān)于求解結(jié)構(gòu)體中某些成員的最小值,首先將第一個(gè)值設(shè)定為最小值,并在循環(huán)中將其他所有值與該值進(jìn)行比較,求得最小值。
27.voidfun(int*aint*n){inti.j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并放入數(shù)組a中*/if((i%5==0||i%13==0)&&i%65!=0)a[j++]=i;*n=j;/*傳回滿(mǎn)足條件的數(shù)的個(gè)數(shù)*/}voidfun(int*a,int\u3000*n)\r\n{\r\ninti.j=0;\r\nfor(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù),并放入數(shù)組a中*/\r\nif((i%5==0||i%13==0)&&i%65!=0)\r\na[j++]=i;\r\n*n=j;/*傳回滿(mǎn)足條件的數(shù)的個(gè)數(shù)*/\r\n}解析:注意本題題目是找出能被5或13整除但不能同時(shí)被5和13整除的所有整數(shù)。能同時(shí)被5和13整除的整數(shù)一定能被65整除,且不能被65整除的數(shù)不一定就是能被5或13整除的數(shù)。所以可得出程序中的if()。按運(yùn)算優(yōu)先級(jí)可知(i%5==0||i%13==0),注意,兩邊必須要有小括號(hào)。
28.voidfun(int*wintpintn){intijt;for(i=0;i<=p;i++)/*循環(huán)左移p+1次*/{t=w[0];for(j=1/j<n;j++)/*實(shí)現(xiàn)循環(huán)左移*/w[j-1]=w[j];w[j-1]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,j,t;\r\nfor(i=0;i<=p;i++)/*循環(huán)左移p+1次*/\r\n{t=w[0];\r\nfor(j=1/j<n;j++)/*實(shí)現(xiàn)循環(huán)左移*/\r\nw[j-1]=w[j];\r\nw[j-1]=t;\r\n}\r\n}解析:本題采用“循環(huán)左移”的算法(關(guān)于“循環(huán)左移”,我們?cè)诤竺娴脑囶}中有詳細(xì)的解釋)。和我們?cè)谇懊娣治龅纳杂胁煌氖?,一個(gè)是整型數(shù)組,一個(gè)是字符型數(shù)組。
29.doublefun(intn){intij=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j==i)s=s+sqrt(i);}returns;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 5 good manners study skills 教學(xué)設(shè)計(jì)2024-2025學(xué)年牛津譯林版八年級(jí)英語(yǔ)下冊(cè)
- 2020-2021深圳南山實(shí)驗(yàn)學(xué)校初中部小學(xué)四年級(jí)數(shù)學(xué)上期末第一次模擬試題帶答案
- 鋼軌彈性支撐施工方案
- 屋頂融雪裝置施工方案
- 醇油漆施工方案
- 樓體加固具體施工方案
- 入駐店鋪合同范本
- 業(yè)務(wù)拓展顧問(wèn)合同范例
- 產(chǎn)品質(zhì)量控制的年度措施計(jì)劃
- 乙方委托設(shè)計(jì)合同范本
- 2024年電力工程設(shè)備進(jìn)口與清關(guān)合同
- 注冊(cè)安全工程師培訓(xùn)講義
- 電力合規(guī)管理培訓(xùn)
- 醫(yī)院安全生產(chǎn)治本攻堅(jiān)三年行動(dòng)實(shí)施方案
- 《自動(dòng)噴水滅火系統(tǒng)設(shè)計(jì)》圖示
- 小升初生涯規(guī)劃
- 第二章陸地和海洋【真題訓(xùn)練】(人教版)(原卷版)
- 小吃街概念性規(guī)劃
- 電商提成合同模板
- 正念八周課件
- 光伏發(fā)電監(jiān)理合同協(xié)議
評(píng)論
0/150
提交評(píng)論