版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年安徽省銅陵市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________
一、2.填空題(10題)1.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
2.為了列出當前盤當前目錄中所有第三個字符為C的文件名的有關(guān)信息,應(yīng)該使用命令【】。
3.以下sum函數(shù)的功能是計算下列級數(shù)之和。請給函數(shù)中的各變量正確賦初值。
doublesum(doublex,intn)
{inti;doublea,b,s;
for(i=1;i<=n;i++)
{a=a*x;b=b*i;s=s+a/b;}
returns;
}
4.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=1,y=1,a=1,b=1;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,B);
}
5.按照“先進先出”的原則組織數(shù)據(jù)的結(jié)構(gòu)是______。
6.strcmp函數(shù)的功能是【】。
7.Jackson結(jié)構(gòu)化程序設(shè)計方法是英國的M.Jackson提出的,它是一種面向______的設(shè)計方法。
8.有以下程序段,且變量已正確定義和賦值
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
請?zhí)羁?,使下面程序段的功能與之完全相同
S=1.0;k=1;
while([8]){s=s+1.0/(k*(k+1));[9];}
printf("s=%f\n\n",s);
9.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{ints[]={1,2,3,4},i;
intx=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);}
printf("\n");}
sb(s1,y)
int*s1,y;
{staticinti1=3;
y=s1[i1];
i1--;
return(y);}
10.下面函數(shù)用來求兩個單精度數(shù)之和,并通過形參將結(jié)果傳回,請?zhí)羁铡?/p>
Voidsub(floatx,noaty,【】z)
{【】=x+y;}
二、單選題(10題)11.數(shù)據(jù)的獨立性是指______。
A.數(shù)據(jù)庫的數(shù)據(jù)相互獨立
B.DBMS和DB相互獨立
C.用戶應(yīng)用程序與數(shù)據(jù)庫的數(shù)據(jù)相互獨立
D.用戶應(yīng)用程序與DBMS相互獨立
12.
13.下列敘述中正確的是()。
A.循環(huán)隊列是隊列的一種鏈式存儲結(jié)構(gòu)
B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)
C.循環(huán)隊列是非線性結(jié)構(gòu)
D.循環(huán)隊列是一種邏輯結(jié)構(gòu)
14.下列哪個算法是對一個list排序的最快方法()
A.快速排序B.冒泡排序C.二分插入排序D.線性排序
15.C語言源程序的擴展名是()。
A..CB..exeC..objD..cp
16.若有如下程序:intsub(){staticintn=1;intx=1;x*=n;n++;returnx;}main(){intn,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}則程序運行后的輸出結(jié)果是()
A.15B.120C.34560D.-30976
17.下列函數(shù)的功能是
set(s,t)
{char*s,*t;
while((*s)&&(*t)&&(*t++==*s++));
return(*s-*t);
}A.A.求字符串的長度
B.比較兩字符串的大小
C.將字符串s復(fù)制到字符串t中
D.將字符串s連接到字符串t后
18.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)執(zhí)行后的輸出結(jié)果是()。A.5,5B.5,11C.11,11D.11,5
19.實體聯(lián)系模型中實體與實體之間的聯(lián)系不可能是
A.一對一B.多對多C.一對多D.對零
20.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(“%d”,y[i]);printf(“\n”);}程序的運行結(jié)果是()。
A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,
三、程序設(shè)計題(10題)21.請編寫函數(shù)proc(),它的功能是:求出1~1000中能被5或13整除,但不能同時被5和13整除的所有整數(shù),并將它們放在arr所指的數(shù)組中,通過n返回這些數(shù)。注意:部分源程序給H{如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
22.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放人結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc(),它的功能是:把指定分數(shù)范圍之外的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分數(shù)范圍之外的學(xué)生人數(shù)由函數(shù)值返回。
例如,輸入的分數(shù)是70和79,則應(yīng)當把分數(shù)低于70和高于79的學(xué)生數(shù)據(jù)輸出,不包含70分和79分的學(xué)生數(shù)據(jù)。主函數(shù)中把70放在low中,把79放在heigh中。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。
試題程序:
23.請編一個函數(shù)voidproc(inttt[M][N],intpp[N]),tt指向一個M行N列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
24.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是根據(jù)以下公式計算S,并將計算結(jié)果作為函數(shù)值返回,通過形參傳入。例如,若n的值為11時,函數(shù)的值為1.833333。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){}voidmain(){ intn; floats; system(“CLS”); printf(“\nPleaseenterN:”); scanf(“%d”,&n); s=fun(n); printf(“Theresultis:%f\n”,s);}
25.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將形參s所指字符串放入形參a所指的字符數(shù)組中,使a中存放同樣的字符串。說明:不得使用系統(tǒng)提供的字符串函數(shù)。注意:部分源程序存放在文件prog1.c中,請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()指定的部位填入所編寫的若干語句。試題程序:
26.請編寫函數(shù)proc(),它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。sum=1-x+x2/2!-x3/31+…+(-l*x)n/n!例如,當n=23,x=0.3時,函數(shù)值為0.740818。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。試題程序:
27.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫一個函數(shù)fun(),該函數(shù)的功能是使變量h的值保留兩位小數(shù),并對第3位進行四舍五入(規(guī)定h的值為正數(shù))。若h的值為1234.567,則函數(shù)返回1234.570000;若h的值為1234.564,則函數(shù)返回1234.560000。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
28.請編寫一個函數(shù)voidproc(char*tt,intpp[]),統(tǒng)計在tt字符串中“a”到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。例如,當輸入字符串a(chǎn)bcdefghxyzabcde“e后,程序的輸出結(jié)果應(yīng)該是:222233110000000000000000111。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
29.使用VC++2010打開考生文件夾下析prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。例如,當n=10,x=0.3時,函數(shù)值為1.349859。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:30.請編寫函數(shù)proc(),該函數(shù)的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。
例如,若一維數(shù)組中的數(shù)據(jù)是:
1122234456666778
9910101010
刪除后,數(shù)組中的內(nèi)容應(yīng)該是:
12345678910
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
四、2.程序修改題(10題)31.給定程序MODII.C中fun函數(shù)的功能是:根據(jù)整型形參m,計算如下公式的值。
例如,若主函數(shù)中輸入5,則應(yīng)輸出-0.283333。
請改正函數(shù)fun中的錯誤或在橫線處填上適當?shù)膬?nèi)容并把橫線刪除,使它能計算出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
32.下列給定程序中,函數(shù)fun的功能是按以下遞歸公式求函數(shù)值。
例如:當給n輸入5時,函數(shù)值為240;當給n輸入3時,函數(shù)值為60。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
/*************found****+*******/
fun(intn);
{
intc;
/*************found********+*****/
if(n=1)
c=15;
else
c=fun(n-1)*2;
return(c);
}
main()
{
intn;
printf("Entern:");
scanf("%d",&n);
printf("Theresult:%d\n\n",fun(n));
}
33.給定程序中函數(shù)fun的功能是:將一個由八進制數(shù)字字符組成的字符串轉(zhuǎn)換為與其值相等的十進制整數(shù)。規(guī)定輸入的字符串最多只能包含5位八進制數(shù)字字符。
例如,若輸入:77777,則輸出將是:32767。
請改正程序中的錯誤,使它能得到正確結(jié)果。
[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
intfun(char*p)
{
intn;
/**********found**********/
n=*p-'o';
p++;
while(*p!=0){
/**********found**********/
n=n*8+*p-'o';
p++;
}
returnn;
}
main()
{
chars[6];inti;intn;
printf("Enterastring(Ocataldigits):");
gets(s);
if(strlen(s)>5)
{
printf("Error:Stringtoolonger!\n\n");
exit(0);
}
for(i=0;s[i];i++)
if(s[i]<'0'||s[i]>'7')
{
printf("Error:%cnotisocataldigits!\n\n",s[i]);
exit(0);
}
printf("Theoriginalstring:");
puts(s);
n=fun(s);
printf("\n%siSconveredtointegernumber:%d\n\n",s,n);
}
34.下列給定程序中函數(shù)fun()的功能是計算1/n!的值。
例如:給n輸入5,則輸出0.0083330
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
/******+****found*************/
intfun(intn)
{doubleresult=1.0;
if(n==0)
return1.0;
while(n>1&&n<170)
/**********found************/
result*=n++;
result=1/result;
returnresult;
}
main()
{
intn;
printf("InputN:");
scanf("%d",&n);
printf("\n1/%d!=%If\n",n,fun(n));
}
35.給定程序MODll.C中函數(shù)fun的功能是:計算n的5次方的值(規(guī)定n的值大于2、小于8),通過形參指針傳回主函數(shù);并計算該值的個位、十位、百位上數(shù)字之和作為函數(shù)值返回。
例如,7的5次方是16807,其低3位數(shù)的和值是15。
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
36.給定程序MODll.C中函數(shù)fun的功能是:應(yīng)用遞歸算法求形參a的平方根。求平方根的迭代公式如下:
例如,a為2時,平方根值為:1.414214。
請改正程序中的錯誤,使它能得出正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
37.下列給定程序中,函數(shù)fun()的功能是計算并輸出high以內(nèi)的素數(shù)之和。high由主函數(shù)傳給fun()函數(shù)。
例如:若high的值為100,則函數(shù)的返回值為1060。
請改正程序中的錯誤,使它能得到正確結(jié)果。
[注意]不要改動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));
}
38.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)輸入的三個邊長(整型值),判斷能否構(gòu)成三角形:構(gòu)成的是等邊三角形,還是等腰三角形。若能構(gòu)成等邊三角形函數(shù)返回3,若能構(gòu)成等腰三角形函數(shù)返回2,若能構(gòu)成一般三角形函數(shù)返回1,若不能構(gòu)成三角形函數(shù)返回0。
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
39.下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型參數(shù)m,計算如下公式的值。
y=1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m×m)
例如,若m=2000,則應(yīng)輸出0.000160。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/*************found**************/
fun(intm)
{doubley=0,d;
inti;
/*************found**************/
for(i=100,i<=m,i+=100)
{d=(double)i*(double)i;
y+=l.0/d;
}
return(y);
}
main()
{intn=2000;
clrscr();
printf("\nTheresultis%lf\n",fun(n));
40.給定程序MODll.C中函數(shù)fun的功能是:先從鍵盤上輸入一個3行3列矩陣的各個元素的值,然后輸出主對角線元素之和。
請改正函數(shù)fun中的錯誤或在橫線處填上適當?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc的功能是根據(jù)整型形參n,計算如下公式的值:
Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)
例如,n中的值為l0,則應(yīng)輸出0.817962。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdiOh>
doubleproc(intn)
{
doubley=1.0;
//****found****
intJ=1;.
inti;
for(i=2;i<=n;i++)
{
j=-l*j;//****found****
y+=1/(i*i);
}
return(y);
}
voidmain
{
intn=10:
system("CLS"):
printf("\nTheresultis%1f\n",proc(n));
}
42.下列給定程序中函數(shù)fun()的功能是:求出如下分數(shù)序列的前n項之和,結(jié)果通過函數(shù)值返回。例如,若n=5,則應(yīng)輸出8.391667。請改正程序中的錯誤,使其得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、操作題(2題)43.若變量x、y已定義為int類型且X的值為33,y的值為3,請將輸出語句printf((),x/y);補充完整,使其輸出的計算結(jié)果形式為:x/y=11。
44.有以下語句段:
intn1=10,n2=20;
printf("【】",n1,n2);
要求按以下格式輸出n1和n2的值:
n1=10
n2=20
每個輸出行從第一列開始,請?zhí)羁铡?/p>
參考答案
1.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關(guān)系表達式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=2,所以z=2;當y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=4,所以z=4;當y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。
2.DIR??C*.*
3.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或給abs賦1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或給a,b,s賦1或1.0或1.解析:sum函數(shù)的功能是求表達式s的級數(shù)之和,該函數(shù)的大致思路是:在該函數(shù)中,定義了—個整型變量i用作循環(huán)計數(shù)器,定義一個變量a用來表示各個子項的分子,初始為第一個子項的分子,故為1,定義了一個變量b用來表示各個子項大分母,初始為第一個子項的分母,故為1,定義一個變量s存放累加和,初始為第一個子項的值即為1,然后給各個定義的變量初始化,然后通過一個for循環(huán)將題目中的數(shù)學(xué)表達式的各個子項求出來并累加到s中,所以說,在該題的空格處應(yīng)該填寫將a、b和s賦初值的語句,即為a=1;b=1;s=1:(說明:語句的順序可任意)或a=b=s=1;(說明:變量的順序可任意)或a=1,b=1,s=1(說明:賦值表達式的順序可任意)給a,b,s賦1或1.0或1都可以。
4.a=2b=3a=2,b=3解析:分析程序,程序從x=1語句開始執(zhí)行,之后執(zhí)行第一個switch語句,switch(x)=switch(1),所以執(zhí)行case1,case1語句中包含一個復(fù)合switch語句:這時執(zhí)行第二個switch語句,此時y=1,所以switch(y)=switch(1),因此執(zhí)行case1,將b加1,得到b=2,遇到break語句,退出第二個switch語句,則整個case1的復(fù)合語句執(zhí)行完畢,由于在這個case1的后面沒有break語句使其退出第一個switch語句,所以接著執(zhí)行下列的case2后面的語句,即將a,b各加1,得到a=2,b=3。
5.隊列隊列解析:隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進先出的原則組織數(shù)據(jù)的。
6.字符串的比較strcmp函數(shù)的原型是intstrcmp(char*s1,char*s2);功能是對s1和s2所指字符串進行比較,若s1<s2返回負數(shù),若s1==s2返回0,若s1>s2返回正數(shù)。
7.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)
8.本題要求將一個for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會加1,而while循環(huán)則沒有,故需在循環(huán)體中增加改變k數(shù)值的語句“k++”。\r\n\r\n
9.43214321解析:靜態(tài)存儲類的局部變量其生存期為整個程序的運行期間,作用域卻只是定義它的函數(shù)或局部范圍。注意:局部變量和全局變量的作用域。
10.float*z
11.C解析:修改數(shù)據(jù)庫的物理結(jié)構(gòu)或邏輯結(jié)構(gòu)時,通過兩級映像,可以使得應(yīng)用程序不必修改,保證數(shù)據(jù)的獨立性。數(shù)據(jù)的獨立性包括物理獨立性和邏輯獨立性。
12.D
13.B本題主要考查循環(huán)隊列的概念,循環(huán)隊列作為隊列的一種也應(yīng)該是線性結(jié)構(gòu)。隊列是一種邏輯結(jié)構(gòu),而循環(huán)隊列是一種順序存儲結(jié)構(gòu)的隊列。
14.A
15.AC語言源程序的擴展名是.C,目標文件的擴展名是.obj,可執(zhí)行文件的擴展名是.exe。故本題答案為A選項。
16.B
17.B在本題中,從題目給出的四個選項我們就可以知道,程序是對兩個字符串進行操作。下面將具體分析程序。
程序首先定義兩個字符型的指針變量s和t,從后面的程序中不難看出這兩個指針變量應(yīng)該用來對兩個字符串進行操作處理。用循環(huán)來對字符串進行處理時,循環(huán)繼續(xù)的條件是指針變量s和指針變量t所指向的結(jié)果值不為0,且兩結(jié)果值相等。很顯然,指針變量s和指針變量t所指向的結(jié)果值不為0,說明兩字符串沒有結(jié)束,只有結(jié)束時才為0,而結(jié)果值相等說明兩字符相等,如果不等,循環(huán)則結(jié)束,此時程序?qū)⒁蠓祷夭坏仍刂g的差值,從差值的正負關(guān)系我們可以判斷出哪個元素更大。綜上所述,程序段的作用是用來比較兩字符串的大小。因此,本題正確的答案選B。
18.B子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第l次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第l次函數(shù)調(diào)用結(jié)束時,它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時,i的值為9,因此最終m的值為11。
19.D解析:實體聯(lián)系模型中實體與實體之間的聯(lián)系有一對一(1:1),一對多戌多對一(1:m或m:1),多對多(m:n)其中一對一是最常用的關(guān)系。
20.A本題由fun函數(shù)可知,執(zhí)行for循環(huán),當i=0時,b[0]=a[0][0]-a[0][3]=1-4=-3;當i=1時,b[1]=a[1][1]-a[1][2]=6-7=-1;當i=2時,b[2]=a[2][2]-a[2][1]=11-10=1;當i=3時,b[3]=a[3][3]-a[3][0]=16-13=3。主函數(shù)中輸出y數(shù)組元素的值為:-3,-1,1,3。故本題答案為A選項。
21.
【解析】題目中要求出1~1000中能被5或13整除,但不能同時被5和13整除的所有整數(shù),首先應(yīng)判斷1~1000的每一個整數(shù)是否符合要求,將符合要求的每一個整數(shù)放入數(shù)組arr中。最后將整數(shù)的個數(shù)作為形參返回給主函數(shù)。
22.
【解析】題目要求把指定范圍之外的數(shù)放到h中,將每一個學(xué)生的成績與指定的成績相比較,將符合條件的學(xué)生成績放在數(shù)組b中,并將符合要求的學(xué)生個數(shù)返回給主函數(shù)。
23.
【解析】按照題目中要求,求出二維數(shù)組每行中最大元素,并依次放入pp所指的一維數(shù)組中。首先比較二維數(shù)組中每一行的元素,然后找出每一行中的最大元素,放入一維數(shù)組pp中,最后返回到主函數(shù)當中。
24.floatfun(intn){ inti,s1=0; floats=0.0; for(i=1;i<=n;i++) { s1=s1+i; /*求每一項的分母*/ s=s+1.0/s1; /*求多項式的值*/ } returns;}首先需要根據(jù)題意分析表達式的規(guī)律,得出通項,然后再完成程序語句。本題中公式的規(guī)律類似于求1+2+…+n的倒數(shù)之和??梢酝ㄟ^for循環(huán)語句來實現(xiàn)第1項到第n項的變化。先根據(jù)題目要求定義變量,注意該變量的數(shù)據(jù)類型。然后對其進行初始化操作,因為該變量相當于累加器,所以初值應(yīng)為0(或0.0,根據(jù)變量數(shù)據(jù)類型來確定),再通過for循環(huán)語句來完成累加過程。本題中s1用來表示每一項的分母,每一項的分母都是由前一項分母加項數(shù)得到的。注意,由于s1定義成一個整型,因此在s=s+1.0/s1語句中不能把1.0寫成1。25.1voidfun(char*a,char*s)2{while(*s!:'。1)3{*a=*s;4a++;5s++;}7*a='\\0';}要將指針變量s所指的字符串存入指針變量a所指的字符串中,程序要求不能使用系統(tǒng)提供的字符串函數(shù)。本題可以使用循環(huán)語句,依次取出a所指字符串中的元素,將其存入s所指的字符串中,最后為s所指的字符串添加字符串結(jié)束標志'\\0'。
26.
【解析】首先定義兩個變量分別用來存儲級數(shù)的和與每一項的分母。觀察級數(shù)的特點,其每一項的正負號是交替變化的。根據(jù)這些特點,每增加一項都需要變換符號。最后求出級數(shù)的和。
27.1floatfun(floath)2{3inttmp=(int)(h*1000+5)/10;/*單精度數(shù)h乘以1000后再加5,相當于對h中的第3位小數(shù)進行四舍五入,除以10后將其賦給一個長整型數(shù)時就把第3位小數(shù)后的數(shù)全部截去*/4return(float)tmp/I00.0;/*除以100,保留2位小數(shù)*/5}注意:本題要求對變量h中的第3位小數(shù)進行四舍五入運算,而不是輸出,即不能用printf(“%7.2f”,h)輸出結(jié)果。四舍五入算法:如果要求精確到小數(shù)點后面的第n位,則需要對第n+1位進行運算。方法是將該小數(shù)乘以10的n+1次方后加5,然后除以10并強制轉(zhuǎn)換變量類型為整型,再將該數(shù)除以10的n次方,同時強制轉(zhuǎn)換類型為浮點型。代碼實現(xiàn)如下:intt;/*定義整型變量t*/t=(int)(h*10n+1+5)/10;/*對h進行操作,得到浮點型值,t取值時取整數(shù)部分。10n+1為要擴大的倍數(shù)*/h=(float)t/10n;/*將t縮小10n倍,并轉(zhuǎn)換成浮點型*/
28.
【解析】由函數(shù)proc()可知,數(shù)組PP中存放26個字母各自出現(xiàn)的次數(shù),初始化為0。然后判斷字符串tt中每一個字符,每檢查一個字符,將數(shù)組pp中相應(yīng)的元素加1。
29.1doublefun(doublex,intn)2{3inti;4doubles=1.0,sl=1.0;5for(i=1/i<=n;i++)6{si=si*i;/*各項中的階乘*/?s=s+pow(x,i)/si;/*按公式求出*/}Returns;10}程序定義了變量Sl和s,sl表示每項的分母(即各項的階乘),S存放累加和。循環(huán)語句控制累加的次數(shù),在循環(huán)體中進行階乘和累加操作,將累加的結(jié)果存入S中。此處使用了求乘方函數(shù)pow(X,i),其含義是求X的i次方的值。
30.
【解析】題目中要求刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。首先需要將字符串中的每一個字符與其后的一個字符相比較,相同則不做任何操作,不相同則將其放入新的字符串中。最后將新的字符串中的字符個數(shù)返回給主函數(shù)。
31.(1)t=t-1.0/i;或t-=1.0/i;或t一=(double)1/i;(2)returnt;(1)t=t-1.0/i;或t-=1.0/i;或t一=(double)1/i;(2)returnt;解析:本題中函數(shù)的功能是計算公式的值。首先根據(jù)題干中給出的公式推出每一項之間的關(guān)系,求出每一項的表達式,然后求得數(shù)列的值。其中,每一項的值為1/n。
32.(1)錯誤:fun(intn);正確:fun(intn)(2)錯誤:if(n=1)正確:if(n==1)(1)錯誤:fun(intn);正確:fun(intn)\r\n(2)錯誤:if(n=1)正確:if(n==1)解析:錯誤1:該行是函數(shù)的首部,不是一條語句,因此不能以分號結(jié)束。錯誤2:if垢面應(yīng)該緊跟一個條件判斷表達式,若寫成“if(n=1)”,則說明該表達式的值永遠為真,也就是說這個條件永遠成立,沒有遞歸執(zhí)行。
33.(1)錯誤:*p正確:*p(2)錯誤:'o';正確:'o';(1)錯誤:*p\r\n正確:*p\r\n(2)錯誤:'o';\r\n正確:'o';
34.(1)錯誤:intfun(intn)正確:doublefun(intn)(2)錯誤:result*=n++;正確:result*=n--;(1)錯誤:intfun(intn)正確:doublefun(intn)\r\n(2)錯誤:result*=n++;正確:result*=n--;解析:錯誤1:函數(shù)的返回值為實型數(shù)據(jù),所以函數(shù)的返回類型應(yīng)為double。錯誤2:根據(jù)階乘的概念,從n開始,每遞減1的數(shù)相乘,直到1,因此此處n遞減,而不是遞增。
35.(1)d=1;s=0;(2)d=d/10;(1)d=1;s=0;(2)d=d/10;解析:本題中函數(shù)的功能是計算n的5次方的值(規(guī)定n的值大于2、小于8),通過形參指針傳回主函數(shù);并計算該值的個位、十位、百位上數(shù)字之和作為函數(shù)值返回。本題解題過程首先是求5次方,然后對結(jié)果進行截取以及求和。
36.(1)doublefun(doubleadoublex0)(2)if(fabs(x1-x0)>0.0O001)(1)doublefun(doublea,doublex0)(2)if(fabs(x1-x0)>0.0O001)解析:(1)主函數(shù)中“fun(x,1.0)”,x是double型變量,1.0是浮點數(shù),可知fun有兩個double型參數(shù),而第一標識下“dounle”不是C語言關(guān)鍵字,所以應(yīng)將“doublefun(doublea,dounlex0)”改為“doublefun(doublea,doublex0)”。
(2)第二個標識下的if語句是判斷進行遞歸運算的條件,第二標識下變量x0沒有定義,根據(jù)題意,這里是判斷x1和x0的差值的絕對值是否比0.00001大,所以第二個標識下“ifi[fabs(x1-xo)>0.0
37.(1)錯誤:ifhigh%j==0正確:if(high%j==0)(2)錯誤:if(yes==0)正確:if(yes)(1)錯誤:ifhigh%j==0\r\n正確:if(high%j==0)\r\n(2)錯誤:if(yes==0)\r\n正確:if(yes)解析:fun函數(shù)的功能是:用while循環(huán)查找high以內(nèi)的素數(shù);用for循環(huán)判斷一個數(shù)是否為素數(shù);用變量n記錄找到的素數(shù)的個數(shù):用ret
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東體育職業(yè)技術(shù)學(xué)院《電工電子技術(shù)B》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東外語外貿(mào)大學(xué)南國商學(xué)院《無線傳感器網(wǎng)絡(luò)技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東生態(tài)工程職業(yè)學(xué)院《塑料成型工藝與模具設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東女子職業(yè)技術(shù)學(xué)院《交互設(shè)計基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 【全程復(fù)習(xí)方略】2020年人教A版數(shù)學(xué)理(廣東用)課時作業(yè):第十章-第八節(jié)二項分布、正態(tài)分布及其應(yīng)用
- 【2021屆備考】2020全國名?;瘜W(xué)試題分類解析匯編(第三期):E單元-物質(zhì)結(jié)構(gòu)-元素周期律
- 【全程復(fù)習(xí)方略】2020年北師版數(shù)學(xué)文(陜西用)課時作業(yè):第六章-第一節(jié)不等關(guān)系與不等式
- 《典型冗余分析圖》課件
- 2025年人教版七年級數(shù)學(xué)寒假預(yù)習(xí) 第01講 相交線
- 2025年人教版七年級數(shù)學(xué)寒假復(fù)習(xí) 專題03 代數(shù)式(3重點串講+10考點提升+過關(guān)檢測)
- 物流運籌學(xué)附錄習(xí)題答案
- 發(fā)明專利專利答辯模板
- 市政府副市長年道路春運工作會議講話稿
- 鑄鐵鑲銅閘門
- GB_T 37514-2019 動植物油脂 礦物油的檢測(高清版)
- 閘門水力計算說明
- 大型塔器“立裝成段整體就位”工法
- 聯(lián)想集團內(nèi)訓(xùn)師管理制度
- 常用函數(shù)圖像(1)
- 靜脈血栓栓塞預(yù)防和治療的專家共識
- 《鍋爐及鍋爐房設(shè)備》課程設(shè)計北京市某燃煤廠區(qū)蒸汽鍋爐房設(shè)計
評論
0/150
提交評論