版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2021年吉林省松原市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、2.填空題(10題)1.以下程序的功能是計(jì)算:s=1+12+123+1234+12345。請(qǐng)?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
2.已知字母A的ASCⅡ碼為65。以下程序運(yùn)行后的輸出結(jié)果是()。
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,B);
}
3.函數(shù)rewind的作用是
4.已知bead指向一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,鏈表中每個(gè)結(jié)點(diǎn)包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域?yàn)檎?。以下函?shù)求出鏈表中所有連接點(diǎn)數(shù)據(jù)域的和值作為函數(shù)值返回。請(qǐng)?jiān)跈M線處填入正確內(nèi)容。
{intdata;structlink*next;}
main()
{structlink*head;
sam(______);
{stmctlink*p;ints=0;
p=head->next;
while(p){s+=p->data;p=p->next;}
return(s);}
5.數(shù)據(jù)庫(kù)系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
6.執(zhí)行以下程序后,輸出“#”的個(gè)數(shù)是【】。
#include<stdio.h>
main()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
7.下列程序中的數(shù)組a包括10個(gè)整數(shù)元素,分別將前項(xiàng)和后項(xiàng)之和存入數(shù)組b,并按每行4個(gè)元素輸出數(shù)組b。請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
______;
for(i=0;i<9;i++)
{if(i%4=0)printf("\n");
printf("%3d",b[i]);
}
}
8.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z+0;
elseZ+=1;
primf(“%d\n",z);
}
9.設(shè)i,j,k均為int型變量,則執(zhí)行完下面的for語(yǔ)句后,k的值為【】。
for(i=0,j=10;i<=j;i++,j--)k=i+j;
10.常用的黑箱測(cè)試有等價(jià)分類法、【】、因果圖法和錯(cuò)誤推測(cè)法4種。
二、單選題(10題)11.
下列程序的輸出結(jié)果是()。
#include<stdio.h>
main
{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;
p=a;
for(i=0;i<3;i++)
{if(i<2)
p[1][i]=p[1][i]-1;
else
p[1][i]=1;
}
printf("%d\n",a[o][1]+a[1][1]+a[1][2]);
}
A.8B.7C.12D.9
12.以下關(guān)于C語(yǔ)言數(shù)據(jù)類型使用的敘述中錯(cuò)誤的是A.若要準(zhǔn)確無(wú)誤差的表示自然數(shù),應(yīng)使用整數(shù)類型
B.若要保存帶有多位小數(shù)的數(shù)據(jù),應(yīng)使用雙精度類型
C.若要處理如“人員信息”等含有不同類型的相關(guān)數(shù)據(jù),應(yīng)自定義結(jié)構(gòu)體類型
D.若只處理“真”和“假”兩種邏輯值,應(yīng)使用邏輯類型
13.C語(yǔ)言結(jié)構(gòu)體類型變量在程序執(zhí)行期間,()。
A.所有成員一直駐留在內(nèi)存中B.沒(méi)有成員駐留在內(nèi)存中C.部分成員駐留在內(nèi)存中D.只有一個(gè)成員駐留在內(nèi)存中
14.若果要求一個(gè)線性表既能較快查找,又能適應(yīng)動(dòng)態(tài)變化的要求,可以采用()查找方法。
A.分塊B.順序C.二分D.散列
15.下面程序的輸出結(jié)果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)
A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA
16.使用堆排序方法排序(45,78,57,25,41,89),初始堆序列()
A.78,45,57,25,41,89
B.89,78,57,25,41,45
C.89,78,25,45,41,57
D.89,45,78,41,57,25
17.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.1,2,6,24,120,B.1,2,3,4,5,C.1,1,1,1,1,D.1,2,4,6,8,
18.
19.以下選項(xiàng)中,能用作數(shù)據(jù)常量的是______。A.o115B.0118C.1.5e1.5D.115L
20.設(shè)無(wú)向圖G中有n個(gè)頂點(diǎn)e條邊,則其對(duì)應(yīng)的鄰接表中的表頭結(jié)點(diǎn)和邊表接點(diǎn)的個(gè)數(shù)分別為()。
A.n,eB.e,nC.2n,eD.n,2e
三、程序設(shè)計(jì)題(10題)21.下列程序定義了M×M的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫函數(shù)proc(),函數(shù)的功能是求出數(shù)組周邊元素的平方和并作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為則返回主程序后s的值應(yīng)為310。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
22.請(qǐng)編寫函數(shù)voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)、不為1的各整數(shù),并按從大到小的順序放在PP所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過(guò)形參n返回。
例如,若x的值為30,則有3個(gè)數(shù)符合要求,它們是15,5,3。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
23.某學(xué)生的記錄由學(xué)號(hào)、8門課程成績(jī)和平均分組成,學(xué)號(hào)和8門課程的成績(jī)已在主函數(shù)中給出,請(qǐng)編寫函數(shù)fun,其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。
例如,學(xué)生的成績(jī)是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序在文件PROGl.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fIm的花括號(hào)中填入你編寫的若干語(yǔ)句。
24.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。例如,若二維數(shù)組中的數(shù)據(jù)為333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)該為333333334444444455555555。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:
25.編寫函數(shù)intproc(intlim,intaa[M]),該函數(shù)的功能是求出小于或等于lim的所有素?cái)?shù)并放在aa數(shù)組中,該函數(shù)返回所求出的素?cái)?shù)。例如,若輸入12時(shí),則輸出:235711。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
26.請(qǐng)編寫fun函數(shù),其功能是:計(jì)算并輸出3~m所有素?cái)?shù)的平方根之和。
例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791。
請(qǐng)勿改動(dòng)main函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
注意:m的值要大于2但不大于100。部分源程序給出如下。
試題程序:
#include<math.h>
#include<stdio.h>
doublefun(intm)
{}
voidmain
{
intm;
doubles;
FILE*out:
printf("\n\nInputm:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
ut=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
}27.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),其功能是統(tǒng)計(jì)s所指字符串中的數(shù)字字符個(gè)數(shù),并將其作為函數(shù)值返回。例如,s所指字符串中的內(nèi)容是2def35adh253kjsdf7/kj8655x,函數(shù)fun()返回值為11注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:
28.請(qǐng)編寫函數(shù)proc,其功能是將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。例如,當(dāng)a=25,b=43,實(shí)際輸入時(shí)個(gè)數(shù)之間以Enter鍵分隔,調(diào)用該函數(shù)后,c=3452。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
29.編寫函數(shù)fun,其功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不要使用庫(kù)函數(shù)strcat),即把p2所指的字符串連接到pl所指的字符串的后面。
例如,分別輸人下面兩個(gè)字符串:FirstString——SecondString
程序運(yùn)行后的輸出結(jié)果是:FirstString————SecondString
注意:部分源程序在文件PROGl.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。
30.規(guī)定輸入的字符串中只包含字母和*號(hào)。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號(hào)。編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)maini)函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(chara)
{
voidmain
{
chars[81];
print{("Enterastring:\n");
gets(s):
fun(S);
printf("Thestringafterdeleted:\n");
puts(s);
}四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:根據(jù)輸入的3個(gè)邊長(zhǎng)(整型值),判斷能否構(gòu)成三角形:若能構(gòu)成等邊三角形,則返回3,若是等腰三角形,則返回2,若能構(gòu)成三角形則返回1,若不能,則返回0。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<math.h>
intfun(inta,intb,intc)
{if(a+b>c&&b+c>a&&a+c>b)
{if(a==b&&b==c)
/*************found**************/
return1;
elseif(a==b||b==c||a==c)
return2;
/*************found**************/
elsereturn3;
}
elsereturn0;
}
main()
{inta,b,c,shape;
printf("\nInputa,b,c:");
scanf("%d%d%d",&a,&b,&c);
printf("\na=%d,b=%d,c=%d\n",a,b,c);
shape=fun(a,b,c);
printf("\n\nTheshape:%d\n",shape);
}
32.下列給定程序中,函數(shù)fun()的功能是:將m(1≤m≤10)個(gè)字符串反著連接起來(lái),組成一個(gè)新串,放入pt所指字符串中,例如:把3個(gè)串DEG,ac,df反著串聯(lián)起來(lái),結(jié)果是dfacDEG。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main()函數(shù),不得增行或者刪行,也不得改變程序的結(jié)構(gòu)!
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
voidfun(charstr[][10],intm,char*pt)
{
intk,q,i,j=0;
/*************found*************/
for(k=m;k>0;k--)
{
q=strlen(str[k]);
j+=q;
for(i=0;i<q;i++)
pt[i]=str[k][i];
pt+=q;
pt[0]=0;
}
/*************found**************/
pt=j;
}
main()
{intm,h;
chars[10][10],p[120];
clrscr();
printf("\nPleaseenterm:");
scanf("%d",&m);
printf("\nPleaseenter%dstring:\n",m);
gets(s[0]);
for(h=0;h<m;h++)
gets(s[h]);
fun(S,m,p);
printf("/nTheresultiS:%s\n",p);
}
33.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。
請(qǐng)?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序;
main()
{
charb[17]={"0123456789ABCDEF"};
intc[64],d,i=0,base=16;
longn;
printf("Enteranumber:\n");
scanf("%ld",&n);
do{
/*****************found****************/
c[i]=______;i++;n=n/base;}
while(n!=0);
printf("Transmitenewbase:\n");
for(--i;i>=0;--i)
/***************found*******************/
{d=c[i];printf("%c",b______);}
printf("\n");
}
34.下列給定程序中,函數(shù)fun()的功能是:從n個(gè)學(xué)生的成績(jī)中統(tǒng)計(jì)出高于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲(chǔ)單元中。例如輸入8名學(xué)生的成績(jī):
8565.56995.5875562.575
則高于平均分的學(xué)生人數(shù)為4(平均分為74.312500)。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineN20
intfun(float*S,intn,float*aver)
{
/*************found*************/
intave,t=0;
intcount=0,k,i;
for(k=0;k<n;k++)
t+=s[k];
ave=t/n;
for(i=0;i<n;i++)
/*************found***************/
if(s[i]<ave)
count++;
/*************found*************/
aver=ave;
returncount;
}
main()
{
floatS[30],aver;
intm,i;
clrscr();
printf("\nPleaseenterm:");
scanf("%d",&m);
printf("\nPleaseenter%dmark:\n",m);
for(i=0;i<m;i++)
scanf("%f",s+i);
printf("\nThenumberofstudents:%d\n",
fun(S,m,&aver));
printf(“AVe=%f\n”,aver);
}
35.下列給定程序中,函數(shù)fun()的功能是:用下面的公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止。
π/4≈1-1/3+1/5-1/7+…
例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<math.h>
#include<stdio.h>
floatfun(floatnum)
{ints;
floatn,t,pi;
t=1;pi=0;n=1;s=1;
/**************found***************/
while(t>=num)
{
pi=pi+t;
n=n+2;
s=-s;
/**************found**************/
t=s%n;
}
pi=pi*4;
returnpi;
}
main()
{floatn1,n2;
clrscr();
printf("Enterafloatnumber:");
scanf("%f",&n1);
n2=fun(n1);
printf("%6.4f\n",n2);
}
36.下列給定程序中,函數(shù)fun()的功能是計(jì)算并輸出high以內(nèi)的素?cái)?shù)之和。high由主函數(shù)傳給fun()函數(shù)。
例如:若high的值為100,則函數(shù)的返回值為1060。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<conio.h>
#include<stdio.h>
#include<math.h>
intfun(inthigh)
{
intsum=0,n=0,j,yes;
while(high>=2)
{
yes=1;
for(j=2;j<=high/2;j++)
**********************found**********************/
ifhigh%j==0
{
yes=0;
break;
}
/**********************found**********************/
if(yes==0)
{
sum+=high;
n++;
}
high--;
}
returnsum;
}
main()
{
clrscr();
printf("%d\n",fun(100));
}
37.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)輸入的三個(gè)邊長(zhǎng)(整型值),判斷能否構(gòu)成三角形:構(gòu)成的是等邊三角形,還是等腰三角形。若能構(gòu)成等邊三角形函數(shù)返回3,若能構(gòu)成等腰三角形函數(shù)返回2,若能構(gòu)成一般三角形函數(shù)返回1,若不能構(gòu)成三角形函數(shù)返回0。
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
38.下列給定程序中,函數(shù)fun()的功能是:傳入一個(gè)整數(shù)m,計(jì)算如下公式的值。
t=1/2-1/3-…-1/m
例如,若輸入5,則應(yīng)輸出-0.283333。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{
doublet=l.0;
inti;
for(i=2;i<=m;i++)
/*************found**************/
t=l.0-1/i;
/*************found**************/
}
main()
{intm;
clrscr();
printf("\nPleaseenter1integernumbers
:In");
scanf("%d",&m);
printf("\n\nTheresultis%lfln",
fun(m));
}
39.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參m的值,計(jì)算如下公式的值。
例如,若m中的值為:5,則應(yīng)輸出:0.536389。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
40.下列給定程序中,函數(shù)fun()的功能是;利用插入排序法對(duì)字符串中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對(duì)字符串中的頭兩個(gè)元素進(jìn)行排序,然后把第3個(gè)字符插入到前兩個(gè)字符中,插入后前3個(gè)字符依然有序;再把第4個(gè)字符插入到前3個(gè)字符中,待排序的字符串已在主函數(shù)中賦予。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<String.h>
#include<stdio.h>
#defineN80
voidinsert(char*aa)
{ihti,j,n;charch;
n=strlen(aa);
for(i=1;i<n;i++)
/**********************************/
{c=aa[i];
j=i-1;
while((j>=0)&&(ch<aa[j]))
{aa[j+l]=aa[j];
j--;
}
aa[j+l]=ch;
}
}
main()
{chara[N]="QWERTYUIOPASDFGHJKIMNBVCXZ";
inti;
printf("Theoriginalstring:%s\n",a);
insert(a);
printf("Thestringaftersorting:
%s\n\n",a);
}
五、程序改錯(cuò)題(2題)41.下列給定的程序中,函數(shù)proc()的功能是:計(jì)算并輸出k以內(nèi)最大的10個(gè)能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳人,若k的值為600,則函數(shù)的值為5671。請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
42.下列給定程序中,函數(shù)proc()的功能是:通過(guò)某種方式實(shí)現(xiàn)兩個(gè)變量值的交換,規(guī)定不允許增加語(yǔ)句和表達(dá)式。例如變量num1中的值原為2,num2中的值原為1,程序運(yùn)行后,num1中的值為l,num2中的值為2。請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、操作題(2題)43.使用VC++打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun()的功能是求出s所指字符串中最后一次出現(xiàn)的t所指字符串的地址,并將此地址通過(guò)函數(shù)值返回,在主函數(shù)中輸出從此地址開(kāi)始的字符串;若未找到,則函數(shù)值為NULL。例如,當(dāng)字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“ab”時(shí),輸出結(jié)果應(yīng)是“abcdx”。當(dāng)字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“abd”時(shí),則程序輸出未找到信息“Notfound!”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>char*fun(char*s,char*t){ char*p,*r,*a;/*********found*********/ a=Null; while(*s) { p=s;r=t; while(*r)/*********found*********/ if(r==p) {r++;p++;} elsebreak; if(*r=='\0')a=s; s++;} returna;}voidmain(){ chars[l00],t[100],*p; system(“CLS”); printf(“\nPleaseenterstrings:”); scanf(“%s”,s); printf(“\nPleaseentersubstringt:”); scanf(“%s”,t); p=fun(s,t); if(p) printf(“\nTheresultis:%s\n”,p); else printf(“\nNotfound!\n”);}
44.以下程序的輸出結(jié)果是【】。
main()
{charc='z';
printf("%c",c-25);}
參考答案
1.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來(lái)看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個(gè)t,則說(shuō)明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因?yàn)閕在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。
2.67G67G解析:根據(jù)題意,a=‘A’+‘5’-‘3’=65+2=67,b=67+4=71,71即為字母G的ASCⅡ碼值。程序要求按十進(jìn)制形式輸出a,按字符形式輸出b,所以結(jié)果為67G。
3.A
4.
5.數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)
6.66解析:本題考察的是一個(gè)嵌套的循環(huán),當(dāng)滿足j<=i時(shí),輸出一個(gè)“#”號(hào),符合條件的有i=2,j=2;i=3,j=2;i=3,j=3;i=4,j=2;i=4,j=3;i=4,j=4,共輸出6個(gè)“#”。
7.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[j+1]值相加后的值賦予數(shù)組b中元素b[i],即可實(shí)現(xiàn)將一個(gè)數(shù)組的前項(xiàng)和后項(xiàng)之和存入另一數(shù)組。
8.11解析:ifelse語(yǔ)句的功能:若表達(dá)式的值為真,執(zhí)行語(yǔ)句1,并跳過(guò)其他語(yǔ)句,執(zhí)行ifelse語(yǔ)句的下一條語(yǔ)句,若表達(dá)式的值為假,跳過(guò)語(yǔ)句1,執(zhí)行語(yǔ)句2,依次往下判斷。題中,x=3,y=2,第一個(gè)if語(yǔ)句的控制條件x<y就不滿足,又沒(méi)有與之配對(duì)的else語(yǔ)句,所以直接執(zhí)行printf語(yǔ)句,在整個(gè)過(guò)程中變量z的值都沒(méi)發(fā)生變化。
9.1010解析:該for語(yǔ)句以i為0,j為10作為初始值,循環(huán)條件是i<=j,每次循環(huán)后i增1、j減1,循環(huán)體是將i與j的和賦給k,這樣變量k將保存的是最后一次賦給它的值。一次循環(huán)后i為1、j為9,二次循環(huán)后i為2、j為8,……,五次循環(huán)后i為5、j為5,第六次循環(huán),將i與j的和10賦給k后,i為6、j為4,循環(huán)結(jié)束,k值為10。
10.邊值分析法邊值分析法解析:本題考查了黑箱測(cè)試的方法。黑箱測(cè)試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測(cè)試用例。常用的黑箱測(cè)試有等價(jià)分類法、邊值分析法、因果圖法和錯(cuò)誤推測(cè)法。
11.B
\n本題考查for循環(huán)及if…else語(yǔ)句嵌套,第1次執(zhí)行for循環(huán),p[1][0]=p[1][0]=p[1][0]-1=3;第2次執(zhí)行for循環(huán),p[1][1]=p[1][1]-1=4;第3次執(zhí)行for循環(huán),p[1][2]=l,最后輸出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。
\n
12.D解析:C語(yǔ)言中沒(méi)有邏輯類型,若只處理"真"或"假"兩種邏輯值,可以使用整型數(shù)"1"或"0"表示,故選D。
13.A解析:C語(yǔ)言結(jié)構(gòu)體類型變量在程序執(zhí)行期間所有成員一直駐留在內(nèi)存中。
14.A
15.A解析:p為指針型變量。第一次循環(huán),p=s,p的值為字符數(shù)組s的首地址,輸出字符串'ABCD'。p++,第二次循環(huán),p的值為字符數(shù)組s的首地址加1,輸出字符串'BCD'。p++,第三次循環(huán),p的值為字符數(shù)組s的首地址加2,輸出字符串'CD'。p++,第4次循環(huán),p的值為字符數(shù)組s的首地址加3,輸出字符串\'D'。
16.B
17.Astatic靜態(tài)變量只在聲明時(shí)初始化一次。mul()累乘,第一次init=1,init}=val,第二次init=1,val=2,第三次init=2,val=3,第四次init=6,val=4,第五層init=24,val=5,因此結(jié)果為l,2,6,24,120。故答案為A選項(xiàng)。
18.A
19.D在C語(yǔ)言中,有整型常量、實(shí)型常量、字符常量和字符串常量等類型。整型常量和實(shí)型常量又稱數(shù)值型常量?;菊统A恐荒苡脭?shù)字表示,不帶小數(shù)點(diǎn),例如12、-1和0等,在VC6.0中可以在整型常量的后面加—個(gè)字母l(L的小寫)或L;實(shí)型常量必須用帶小數(shù)點(diǎn)的數(shù)表示,例如3.14159、-2.71828、0.0等;選項(xiàng)A中字母o不符合要求,選頂B中超出八進(jìn)制的范圍,選項(xiàng)C中e后面的不為整數(shù),因此選頂D是正確的。
20.A
21.
【解析】要求出數(shù)組周邊元素的平方和,首先要找到二維數(shù)組所有的周邊元素。二維數(shù)組的周邊元素的特點(diǎn)為行下標(biāo)或列下標(biāo)為0或M一1。根據(jù)這個(gè)特點(diǎn),找出二維數(shù)組中所有的周邊元素,求出其平方和放在變量s中。最后將變量s返回到主函數(shù)中。
22.
【解析】按照題目中要求,求出能整除x且不是偶數(shù)的各整數(shù)。首先判斷小于等于整數(shù)x的所有奇數(shù)是否能被x整除,將能被x整除的奇數(shù)放入數(shù)組pp中。最后將數(shù)組pp中元素的個(gè)數(shù)返回到主函數(shù)中。
23.
voidfun(STREC*a)
inti:
a一>ave=0.0:
fbr(i=0;i<N;i++)a一>ave=a—>ave+·一>s[i];/*求各門成績(jī)的總和}/
a->ave/=N;/}求平均分*/}
【考點(diǎn)分析】
本題考查:結(jié)構(gòu)體類型成員運(yùn)算,指向結(jié)構(gòu)體類型的指針變量作函數(shù)參數(shù)。
【解題思路】
本題考查自定義形參的相關(guān)知識(shí)點(diǎn),程序流程是這樣的:在如n()函數(shù)中求出平均分后,返回到主函數(shù)時(shí)平均分也要帶回,所以只能定義一個(gè)指針類型的形參STREC·a,此時(shí),引用成員的方式可以使用指向運(yùn)算符,即a一>ave和a—>s[i],當(dāng)然也可用(*a),ave和(*a).S[i]。24.1voidfun(int(*s)[10],intint*n,intmm,intnn)2{3inti,j,k=0;4for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次存放到一維數(shù)組b中*/5for(j=0;j<nn;j++)6b[k++]=s[i][j];7*n=k;/*通過(guò)指針?lè)祷卦貍€(gè)數(shù)*/8}本題可以用兩個(gè)循環(huán)來(lái)處理。由于是按行的順序取出,因此第1個(gè)for循環(huán)用于控制行下標(biāo),第2個(gè)循環(huán)用于控制列下標(biāo)。若改成按列的順序取出,則循環(huán)應(yīng)改成:for(i=0;i<mm;jp)b[k++]=s[j][i];要注意s[j][i]的下標(biāo),不能用s[i][j]。若按行取出則列下標(biāo)變化較快,若按列取出則行下標(biāo)變化較快,即循環(huán)嵌套時(shí),越在內(nèi)層的循環(huán),其循環(huán)變量變化就越快。<mm;jp)
25.
【解析】首先判斷小于等于整數(shù)lim的所有整數(shù)是否為素?cái)?shù)。然后將一個(gè)素?cái)?shù)放入數(shù)組aa中,最后將素?cái)?shù)的個(gè)數(shù)返回給主函數(shù)。
26.\r\n\tintn,k,i;
doublesum=0.0;
for(n=3;n<=m;n++)//判斷n是否為素?cái)?shù)
{
k=sqrt(n);//求n平方根
for(i=2;i<=k:i++)
if(n%i==0)break;//如果n不是素?cái)?shù),跳出
if(i>=k+1)
sum+=sqrt(n);//求平方根的和
}
returnsum;
【解析】首先判斷循環(huán)中n是否為素?cái)?shù),如果不是素?cái)?shù),求其平方根的累加和,并返回計(jì)算結(jié)果,否則跳出判斷循環(huán)。其中,對(duì)于平方根的求解可以使用C語(yǔ)句中的sqrt函數(shù)。27.intfun(char*s)2;{intn=0;3char*p;4:;for(p=s;*p!=,\\0';p丄+)if((*p≥’o’)&&(≤’9’))6n++;7returnn;8}要統(tǒng)計(jì)字符串中數(shù)字字符的個(gè)數(shù),首先應(yīng)定義變量n,并將其初始化為0,然后遍歷字符串,逐個(gè)判斷字符是否為數(shù)字字符,判斷條件為該元素的ASCII值在字符o和9的ASCII值之間,若判斷條件成立,則使n的值加1,否則,繼續(xù)判斷下一個(gè)字符,直到字符串結(jié)束。
28.
【解析】按題目中的要求,要得到整數(shù)c,首先要得到整數(shù)a和b的個(gè)位和十位上的數(shù),可以通過(guò)取余和整除來(lái)實(shí)現(xiàn),再將其分別乘以1000,100,10,1就可以得到所要求的整數(shù)c。
29.
voidfun(charpl[],charp2[])
in“,j;
for(i=0;pl[i]f=。、0’;i++);
for(j=0;p2[j]!=。、0’;j++)p1[i++]=p2[j];
p1[i],_。、0’;}
【考點(diǎn)分析】“
本題考查:不使用字符串函數(shù)實(shí)現(xiàn)字符串連接操作。通過(guò)for循環(huán)語(yǔ)句來(lái)完成,不要忘了最后需要加上字符串結(jié)束標(biāo)識(shí)‘、0’。
【解題思路】
本題用兩個(gè)循環(huán)完成操作,第1個(gè)循環(huán)的作用是求出第1個(gè)字符串的長(zhǎng)度,即將i指到第1個(gè)字符串的末尾。第2個(gè)循環(huán)的作用是將第2個(gè)字符串的字符連到第l個(gè)字符申的末尾。最后在第l個(gè)字符串的結(jié)尾加上字符串結(jié)束標(biāo)識(shí)‘、0’。30.\n\tvoidfun(char*a)
\n{
\ninti,j=0;
\nfor(i=0;a[i]!=\0;i++)
\nif(a[i]!=*)
\na[j++]=a[i];//若不是要?jiǎng)h除的字符*則保留
\na[j]=\0;//最后加上字符串結(jié)束符\0
\n}
\n【解析】此題是刪除字符串中的星號(hào)。思路是通過(guò)for循環(huán)完成對(duì)字符串的遍歷,通過(guò)if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號(hào)前的位置,“if(a[i]!=*)”“a[i++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。\n
31.(1)錯(cuò)誤:return1;正確:return3;(2)錯(cuò)誤:return3;正確:return1;(1)錯(cuò)誤:return1;正確:return3;\r\n(2)錯(cuò)誤:return3;正確:return1;解析:該題只要理解了if語(yǔ)句中的條件,并能讀懂題目定義就可輕松解決,函數(shù)返回值搭配錯(cuò)誤,是一個(gè)簡(jiǎn)單的數(shù)學(xué)邏輯問(wèn)題。
32.(1)錯(cuò)誤:for(k=m;k>0;k--)正確:for(k=m-1;k>=0;k--)(2)錯(cuò)誤:pt=j;正確:pt-=j;(1)錯(cuò)誤:for(k=m;k>0;k--)正確:for(k=m-1;k>=0;k--)\r\n(2)錯(cuò)誤:pt=j;正確:pt-=j;解析:錯(cuò)誤1:本題旨在考查二維數(shù)組下標(biāo)的靈活使用,如果二維數(shù)組有m行,則行下標(biāo)取值從0到m-1。錯(cuò)誤2:此時(shí)指針pt指向字符串的尾部,而函數(shù)返回的應(yīng)是字符串的首地址,所以pt向前移動(dòng)j個(gè)字符,則到達(dá)字符串的首部。
33.(1)錯(cuò)誤:缺少語(yǔ)句正確:應(yīng)填入n%base或%16(2)錯(cuò)誤:缺少語(yǔ)句正確:應(yīng)填入[d](1)錯(cuò)誤:缺少語(yǔ)句正確:應(yīng)填入n%base或%16\r\n(2)錯(cuò)誤:缺少語(yǔ)句正確:應(yīng)填入[d]解析:在該程序中,字符數(shù)組b存儲(chǔ)十六進(jìn)制的16個(gè)數(shù)字符,整型數(shù)組c存儲(chǔ)譯出的十六進(jìn)制數(shù)的各位數(shù)值。從整數(shù)n譯出它的各位十六進(jìn)制數(shù)值,需采用除16取余的方法,即求n除16的余,得到它的十六進(jìn)制的個(gè)位數(shù),接著將n除以16。在n不等于0的情況下循環(huán),能順序求出n的十六進(jìn)制的個(gè)位數(shù)、十位數(shù)、百位數(shù)等。程序中變量base已預(yù)置16,所以在第1個(gè)空框處可填代碼n%base或n%16。當(dāng)n的十六進(jìn)制數(shù)的個(gè)位、十位、百位等依次存放于數(shù)組c中后,就從最高位至最低位,參照數(shù)組c[i]的內(nèi)容d(以其內(nèi)容為下標(biāo)),取十六進(jìn)制數(shù)字符表中的字符b[d]輸出。所以在第2個(gè)空框處可填入代碼[d]。
34.(1)錯(cuò)誤:intavet=0;正確:floatavet=O.O;(2)錯(cuò)誤:if(s[i]<ave)正確:if(s[i]>ave)(3)錯(cuò)誤:aver=ave;正確:*aver=ave;(1)錯(cuò)誤:intave,t=0;正確:floatave,t=O.O;\r\n(2)錯(cuò)誤:if(s[i]<ave)正確:if(s[i]>ave)\r\n(3)錯(cuò)誤:aver=ave;正確:*aver=ave;解析:錯(cuò)誤1:ave和t分別用來(lái)存放成績(jī)的平均值和總分,應(yīng)為實(shí)型數(shù)。錯(cuò)誤2:根據(jù)題意,找出高于平均分的數(shù),所以此處的關(guān)系運(yùn)算符應(yīng)為“>”錯(cuò)誤3:aver是指針,而ave是—個(gè)數(shù),不能將—個(gè)數(shù)賦值給一個(gè)指針,而要用符號(hào)‘*’。
35.(1)錯(cuò)誤:while(t>=num)正確:while(fabs(t)>=num)(2)錯(cuò)誤;t=s%n;正確:t=s/n;(1)錯(cuò)誤:while(t>=num)正確:while(fabs(t)>=num)\r\n(2)錯(cuò)誤;t=s%n;正確:t=s/n;解析:函數(shù)fun()中while語(yǔ)句的含義是,當(dāng)新的一項(xiàng)大于給定參數(shù)時(shí),循環(huán)累計(jì),計(jì)算s的值。而題目要求是最后一項(xiàng)的絕對(duì)值小于給定參數(shù),因此循環(huán)條件應(yīng)當(dāng)為while(fabs(t)>=num),而非while(t>=num)。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 40064-2024節(jié)能技術(shù)評(píng)價(jià)導(dǎo)則
- 2025版水利工程勘察設(shè)計(jì)合同熱3篇
- 物流行業(yè)安全防護(hù)規(guī)則
- 公園戶外攀巖墻施工協(xié)議
- 物業(yè)服務(wù)合同書范本
- 教育培訓(xùn)行業(yè)投資操作手冊(cè)
- 醫(yī)療行業(yè)財(cái)務(wù)收支管理規(guī)程
- 外包售后服務(wù)協(xié)議書
- 森林防火攪拌站招標(biāo)文件
- 展覽館玻璃膜施工合同
- 2024年重慶市高考地理試卷(含答案與解析)
- 教育機(jī)構(gòu)合作伙伴招募方案
- 高校實(shí)驗(yàn)室安全基礎(chǔ)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 大學(xué)生心理健康教育學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年秋國(guó)家開(kāi)放大學(xué)會(huì)計(jì)信息系統(tǒng)(本)客觀題及答案
- 干部任免審批表樣表
- 2024年大學(xué)班主任工作總結(jié)經(jīng)典版(4篇)
- 電網(wǎng)工程施工安全基準(zhǔn)風(fēng)險(xiǎn)指南
- 蘇科版九年級(jí)物理上冊(cè)教案:11.5機(jī)械效率
- 中醫(yī)內(nèi)科學(xué)智慧樹(shù)知到答案2024年浙江中醫(yī)藥大學(xué)
- DL∕T 2602-2023 電力直流電源系統(tǒng)保護(hù)電器選用與試驗(yàn)導(dǎo)則
評(píng)論
0/150
提交評(píng)論