




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021年江西省上饒市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測(cè)試卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、2.填空題(10題)1.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機(jī)制稱為______。
2.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式2.0+x/y的值為_______。
3.數(shù)據(jù)庫技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理與控制。
4.以下程序的輸出結(jié)果是_______。
main()
{char*p[]={"BOOL","OPK","H","SP:,};
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
5.請(qǐng)?jiān)谝韵鲁绦虻谝恍械南聞澗€處填寫適當(dāng)內(nèi)容,使程序能正確運(yùn)行。
【】(double,double);
main()
{doublex,y;
scanf("%1f%1f",&x,&y);
printf("%1f\n",max(x,y));
}
doublemax(doublea,doubleB)
{return(a>b?a:b);}
6.設(shè)有定義“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,則對(duì)結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。
7.下列程序能將字符串s1中的所有與字符串str1相同的子串替換成字符串sb2,并將替換后的新串存于字符數(shù)組s2中。
#include<stdio.h>
voidreplace(s1,s2,str1,str2)
char*s1,*s2,*str1,*str2;
{char*t0,*t1,*t2,*x,*y;
x=s1;y=s2;
while(【】)
{
for(t0=s1,t1=str1;((*t1!='\O'&&【】;t0++,t1++);
if(*t1!='\0')*s2++=【】;
else
{for(t1=str2;*t1!='\0';)*s2++=【】;
【】;
}
}
*s2='\0';
}
main()
{staticchars1[]="abcdefababcdabab.",s2125];
replace(s1,s2,"abc","XYZ");
printf("%s\n",s2);
}
8.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請(qǐng)?zhí)羁铡?/p>
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
9.性表的多種存儲(chǔ)結(jié)構(gòu)中,最簡單的方法是【】。
10.某二叉樹中度為2的結(jié)點(diǎn)有n個(gè),則該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。
二、單選題(10題)11.對(duì)于C語言的函數(shù),下列敘述中正確的是()。
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套
B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用都不能嵌套
D.函數(shù)的定義和調(diào)用都可以嵌套
12.十進(jìn)制數(shù)124轉(zhuǎn)換成二進(jìn)制數(shù)是()
A.111l010B.1111100C.1011111D.1111011
13.二維數(shù)組A按行順序存儲(chǔ),其中每個(gè)元素占1個(gè)存儲(chǔ)單元。若A[1][1]的存儲(chǔ)地址為420,A[3][3]的存儲(chǔ)地址為446,則A[5][5]的存儲(chǔ)地址為_______
A.470B.471C.472D.473
14.
15.若有定義:Typedefint*T[10];T*a;則以下與上述定義中a類型完全相同的是()。
A.int*a[10];
B.int**a[10];
C.int*(*a)[10];
D.int*a[][10];
16.有以下程序voidss(char*s,chart){while{*s)if(*s==t)*s-t-'a'+'A';S++;main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序運(yùn)行后的輸出結(jié)果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
17.廣義表((a))的表頭是(a),表尾是()。A.aB.()C.(a)D.((a))
18.線性表是具有n個(gè)()的有限序列。
A.表元素B.字符C.數(shù)據(jù)元素D.數(shù)據(jù)項(xiàng)
19.以下敘述中錯(cuò)誤的是()。
A.getehar函數(shù)用于從磁盤文件讀入字符
B.gets匿數(shù)用于從終端讀入字符串
C.取ns函數(shù)用于把字符串輸出到文件
D.fwrite函數(shù)用于以二進(jìn)制形式輸出數(shù)據(jù)到文件
20.以下程序的主函數(shù)中調(diào)用了在其面前定義的fun函數(shù)#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}則以下選項(xiàng)中錯(cuò)誤的fun函數(shù)首部是()。、A.doublefun(doublea[l5])
B.doublefun(double*a)
C.doublefun(doublea[])
D.doublefun(doublea)
三、程序設(shè)計(jì)題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是,則函數(shù)返回1,在主函數(shù)中輸出“YES”,否則返回0,在主函數(shù)中輸出“NO”?;匚淖址侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件prog1.c中。第3部分無紙化考武題庠請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:1#include2#defineN803intfun(char*str)4{56}7main()8{9chars[n];10FILE*out;11char*test[]={"1234321","123421","123321","abcdCBA"};12inti;13printf("Enterastring:");14gets(s);15printf("\n\n");16puts(s);17if(fun(s))18printf("YES\n");19else20printf("NO\n");21/******************/22out=fopen("out.dat","w");23for(i=0;i<4/i++)24if(fun(test[i]))25fprintf(out,"YES\n");26else27fprintf(out,"NO\n");28fclose(out);29/******************/30}
22.使用VC++2010打開考生文件夾析下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫一個(gè)函數(shù)fun(),它的功能是將ss所指字符串中所有下標(biāo)為奇數(shù)的字母轉(zhuǎn)換為大寫字母(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入“abc4Efg”,則應(yīng)輸出“aBc4EFg”。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:23.請(qǐng)編寫一個(gè)函數(shù)proc,它的功能是:求出1~m(含m)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個(gè)數(shù)。例如,若傳給m的值為70,則程序輸出:7111421222833354244495556636670注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填人所編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineN100voidproc(intm,int*a,int*n){ }voidmain{intarr[N],n,k;system("CLS");proc(70,arr,&n);for(k=0;k<n;k++)if((k+1)%20==0)//每行輸出20個(gè)數(shù){printf("%4d",arr[k]);printf("\n");}elseprintf("%4d",arr[k]);printf("\n");}
24.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。此程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫函數(shù)該函數(shù)的功能是使數(shù)組下三角元素中的值乘以n。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5voidfun(inta[][N],intn){}main(){inta[N][N],n,i,j;printf(“*****Thearray*****\n”);for(i=0;i<n;i++)<p=""></n;i++)<>{for(j=0;j<=""p="">{a[i][j]=rand()%10;printf(“%4d”,a[i][j]);}printf(“\n”);}n=rand()%4;printf(“n=%4d\n”,n);fun(a,n);printf(“*****TheResult*****\n”);for(i=0;i<=""p="">{for(j=0;j<=""p="">printf(“%4d”,a[i][j]);printf(“\n”);}}
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)中填入所編寫的若干語句。試題程序:
26.請(qǐng)編一個(gè)函數(shù)floatproe(doubleh),函數(shù)的功能是對(duì)變量h中的值保留2位小數(shù),并對(duì)第3位進(jìn)行四舍五人(規(guī)定h中的值為正數(shù))。例如,若h值為7.32596,則函數(shù)返回7.33;若h值為7.32496,則函數(shù)返回7.32。注意:部分源程序給出如下。.請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
27.請(qǐng)編寫函數(shù)voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)、不為1的各整數(shù),并按從大到小的順序放在PP所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過形參n返回。
例如,若x的值為30,則有3個(gè)數(shù)符合要求,它們是15,5,3。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。
試題程序:
28.請(qǐng)編寫函數(shù)proc(),其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存入XX所指數(shù)組中,非素?cái)?shù)的個(gè)數(shù)通過k傳回。例如,輸入20,則應(yīng)輸出4689101214151618。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
29.n個(gè)人的成績存放在score數(shù)組中,請(qǐng)編寫函數(shù)proc(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在down所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為{99,80,40,56,59,84,60,76,100}時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,down中的數(shù)據(jù)應(yīng)為40565960。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
30.假定輸入的字符串只包含字母和“#”號(hào),請(qǐng)編寫函數(shù)fun(),它的功能是:刪除字符串中所有的“#”號(hào)。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。例如,若字符串中的內(nèi)容為“##w#e1##come###”,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是“welcome”。請(qǐng)勿改動(dòng)main()函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入所編寫的若干語句。試題程序:
四、2.程序修改題(10題)31.給定程序MODll.c中函數(shù)fun的功能是;由形參給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)在平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。
例如,n=8時(shí),輸入:193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763
所得平均值為:195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為:5
請(qǐng)改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
32.下列給定程序中,函數(shù)fun()的功能是:計(jì)算
S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,當(dāng)n為5時(shí),函數(shù)值應(yīng)為10.407143。f(x)函數(shù)定義如下:
請(qǐng)改正程序中的錯(cuò)誤,使它能得山正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
/**************found***************/
f(doublex)
{
if(x==0.0||x==2.0)
return0.0;
elseif(x<0.0)
return(x-1)/(x-2);
else
return(x+1)/(x-2);
}
doublefun(intn)
{
inti;doubles=0.0,y;
for(i=-n;i<=n;i++)
{y=f(1.0*i);s+=y;}
/**************found**************/
returns
}
main()
{clrscr();
printf("%f\n",fun(5));
}
33.給定程序MODll.C中函數(shù)fun的功能是:判斷一個(gè)整數(shù)是否是素?cái)?shù),若是返回1,否則返回0。
在mai()函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
34.下列給定程序中,函數(shù)fun()的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績,按從低到高的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include<alloc.h>
#defineN10
typedefstructSS
{
charnum[10];
ints;
}STU;
STU*fun(STUa[],intm)
{
STUb[N],*t;
inti,j,k;
/*************found*************/
*t=calloc(m,sizeof(STU));
for(i=0;i<N;i++)
b[i]=a[i];
for(k=0;k<m;k++)
{
/*************found*************/
for(i=j=0;i<N;j++)
if(b[i].s<b[j],s)
j=i;
/*************found*************/
t[k].s=b[j].s;
b[j].s=100;
}
returnt;
}
outresult(STUa[],F(xiàn)ILE*pf)
{
inti;
for(i=0;i<N;i++)
fprintf(pf,"NO=%SMark=%d\n",
a[i].num,a[i].S);
fprintf(pf,"\n\n");
}
main()
{
STUa[N]={{“A01”,77},{“A02”,85},
{“A03”,96},{“A04”,65},{“A05”,75},
{“A06”,96},{“A07”,76},{“A08”,63},
{“A09”,69},{“A10”,78}};
STU*porder;
inti,m;
clrscr();
printf(“*****THERESULT*****\n”);
outresult(a,stdout);
printf(“\nGivethenumberofthestudentswhohavelowerscore:”);
scanf(“%d”,&m);
while(m>10)
{
printf(“\nGivethenumberofthestudentswhohavelowerscore:”);
scanf(“%d”,&m);
}
porder=fun(a,m);
printf(“*****THERESULT*****\n”);
printf(“Thelow:\n”);
for(i=0;i<m;i++)
printf(“%s%d\n”,porder[i].num,
porder[i].s);
free(porder);
}
35.給定程序MODll.C中函數(shù)fun的功能是:從整數(shù)1到55之間,選出能被3整除、且有一位上的數(shù)是5的那些數(shù),并把這些數(shù)放在b所指的數(shù)組中,這些數(shù)的個(gè)數(shù)作為函數(shù)值返回。規(guī)定,函數(shù)中a1放個(gè)位數(shù),a2放十位數(shù)。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
36.下列給定程序中,函數(shù)fun()的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。
2/1,3/2,5/3,8/5,13/8,21/13,……
和值通過函數(shù)值返回main()函數(shù)。例如,若輸入n=5,則應(yīng)輸出8.391667。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/*************found**************/
fun(intn)
{inta=2,b=l,c,k;
doubles=0.0;
for(k=l;k<=n;k++)
{s=s+l.0*a/b;
/*************found**************/
c=a;a+=b;b+=c;
}
return(s);
}
main()
{intn=5;
clrscr();
printf("\nThevalueoffunctionis:
%1f\n",fun(n));
}
37.下列給定程序中,函數(shù)fun()的功能是:計(jì)算整數(shù)n的階乘。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
doublefun(intn)
{
doubleresult=l.0;
whil(n>l&&n<170)
/**************found********************/
result*=--n;
/**************found********************/
return;
main()
{int.n;
clrscr();
printf("Enteraninteger:");
scanf("%d",&n);
printf("\n\n%d!=%lg\n\n",n,fun(n));
}
38.給定程序MODll.C中函數(shù)fun的功能是:應(yīng)用遞歸算法求形參a的平方根。求平方根的迭代公式如下:
例如,a為2時(shí),平方根值為:1.414214。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
39.給定程序MODll.C中函數(shù)fun的功能是;從低位開始取出長整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。
例如,當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:642。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
40.下列給定程序中,是建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)數(shù)據(jù)域賦值。函數(shù)fun的作用是求出單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。
請(qǐng)改正程序指定部位的錯(cuò)誤,使它能得到正確結(jié)果。
[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#include<stdlib.h>
typedefstructaa
{
intdata;
structaa*next;
}NODE;
fun(NODE*h)
{
intmax=-1;
NODE*p;
/***********found************/
p=h;
while(p)
{
if(p->data>max)
max=p->data;
/************found************/
p=h->next;
}
returnmax;
}
outresult(ints,FILE*Pf)
{
fprintf(pf,"\nThemaxinlink:%d\n",s);
}
NODE*creatlink(intn,intm)
{
NODE*h,*p,*s,*q;
inti,x;
h=p=(NODE*)malloc(sizeof(NODE));
h->data=9999;
for(i=1;i<=n;i++)
{
s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%m;s->next=p->next;
p->next=s;p=p->next;
}
p->next=NULL;
returnh;
}
outlink(NODE*h,FILE*pf)
{
NODE*p;
p=h->next;
fprintf(Pf,"\nTHELIST:\n\nHEAD");
while(P)
{
fprintf(pf,"->%d",P->datA);p=p->next;
}
fprintf(pf,"\n");
}
main()
{
NODE*head;intm;
head=cteatlink(12,100);
outlink(head,stdout);
m=fun(head);
printf("\nTHERESULT"\n");
outresult(m,stdout);
}
五、程序改錯(cuò)題(2題)41.下列給定程序中,函數(shù)fun()的功能是:實(shí)現(xiàn)兩個(gè)變量值的交換,規(guī)定不允許增加語句和表達(dá)式。例如,變量a中的值原為8,b中的值原為3,程序運(yùn)行后,a中的值為3,b中的值為8。請(qǐng)改正程序中的錯(cuò)誤,使它得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
42.下列給定程序中,函數(shù)proc()的功能是:在字符串str中找出ASCⅡ碼值最大的字符,將其放在第一個(gè)位置上,并將該字符前的原字符向后順序移動(dòng)。例如,調(diào)用proc()函數(shù)之前給字符串輸入DcybkdGT,調(diào)用后字符串中的內(nèi)容為yDcbkdOT。
請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、操作題(2題)43.請(qǐng)編寫函數(shù)proc,其功能是:計(jì)算并輸出下列多項(xiàng)式值。
S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)
例如,若主函數(shù)從鍵盤給n輸入20后,則輸出為S=0.680803。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填入所編寫的若干語句。
試題程序:
#includet:stdio.h>
doubleproc(intn)
{
}
voidmain
{
intn;
doublesum;
printf("\nInputn:");
scanf("%d",&n);
sum=proc(n)。
printf("\ns=%f\n",sum);
}
44.下列給定程序中函數(shù)fun的功能是:用遞歸算法計(jì)算斐波拉契數(shù)列中第n項(xiàng)的值。從第l項(xiàng)起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,21,…
例如,若給n輸入7,則該項(xiàng)的斐波拉契數(shù)值為l3。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
試題程序:
#include<stdio.h>
longfun(intg)
{
//****found****
switch(g);
{
case0:return0;
//****found****
casel:case2:return1;
}
return(fun(g-1)+fun(g-2));
}
voidmain
{
longfib;intn;
printf("Inputn:");
scanf("%d",&n);
printf("n=%d\n",n);
fib=fun(n);
printf("fib=%d\n\n",fib);
}
參考答案
1.繼承繼承
2.2.0。2.0。解析:x和y為整數(shù),運(yùn)算符“/”在這里是整型除,整除后值為0。
3.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點(diǎn)有以下幾個(gè)方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨(dú)立性,數(shù)據(jù)統(tǒng)一管理與控制。
4.
5.doublemax或externdoublemaxdoublemax或externdoublemax解析:本題中main()函數(shù)需要調(diào)用max()函數(shù),在main()之前就需要聲明函數(shù)max(),并且可以用extern說明符使變量的作用域擴(kuò)充到需要用到它的函數(shù),所以,填寫doublemax(或externdoublemax)。
6.->->解析:若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abc,則引用變量abc成員a的標(biāo)記形式有abc.a和p_abc->a。
7.*s1!='\0'或*s1*t0=*t1*s1++*t1++s1=t0或s1=s1+strlen(str1)*s1!='\\0'或*s1\r\n*t0=*t1\r\n*s1++\r\n*t1++\r\ns1=t0或s1=s1+strlen(str1)
8.k=p;k=p;解析:為要尋找數(shù)組中的最大元素的下標(biāo),需先預(yù)設(shè)1個(gè)臨時(shí)最大元素的下標(biāo),并順序逐一考查數(shù)組的元素,當(dāng)發(fā)現(xiàn)當(dāng)前元素比臨時(shí)最大元素更大時(shí),就用當(dāng)前元素的下標(biāo)更新臨時(shí)最大元素下標(biāo)。直至考查了數(shù)組的全部元素后,這臨時(shí)最大元素下標(biāo)就是數(shù)組的最大元素下標(biāo)。通常預(yù)設(shè)的最大元素下標(biāo)是數(shù)組的首元素下標(biāo),考查是從首元素開始順序向后繼元素考查。程序中,存儲(chǔ)臨時(shí)最大元素下標(biāo)的變量是k,變量p控制順序考查的循環(huán)控制變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素s[p]比臨時(shí)最大元素s[k)更大時(shí),應(yīng)該用p更新k。所以在空框處應(yīng)填入代碼“k=p;”。
9.順序存儲(chǔ)順序存儲(chǔ)
10.n+1n+1解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為0的結(jié)點(diǎn)多一個(gè)。
11.A
12.B
13.C
14.D
15.B由題意可知,T是一個(gè)數(shù)組指針,即int*[],所以使用T*a定義,可知a屬于int**[\n]類型。本題答案為B選項(xiàng)。
16.B解析:本題中的函數(shù)ss()有兩個(gè)參數(shù),一個(gè)是字符型指針變量s,另一個(gè)是字符型變量t在函數(shù)中通過一個(gè)while循環(huán),在循環(huán)中一次取出s指向的字符串并判斷它是否和t中存放的字符相同,若相等,則執(zhí)行“s=t-'a'+'A':”(若是小寫字母,則把它轉(zhuǎn)換成大寫字母)語句。在主函數(shù)中執(zhí)行函數(shù)調(diào)用ss(strl,c),很顯然是把str1數(shù)組中所有字符“d”變成大寫字母,其他字符不變。所以4個(gè)選項(xiàng)中B正確。
17.B
18.A
19.A本題考查的是文件操作。題中“fopen(fn,”w”)”的作用是打開fn所指向的文件,使用文件方式為“寫入”;
“每uts(str,fp)”的作用是將字符str的值輸出到fb所指向的文件中去。在程序中,兩次使用“寫入”的方式打開同一個(gè)文件,在第二次打開時(shí),文件指針指向文件頭,所以此次寫入的數(shù)據(jù)覆蓋了文件原有的數(shù)據(jù),故本題中tl.dat的內(nèi)容為end。故本題答案為A)。
20.A由題可知fun的參數(shù)為變量,而a[15]為常量,所以答案為A。
21.1intfun(char*str)2{3inti,n=0,fg=1;4char*p=str;5while(*p)/*將指針p指向字符串末尾,并統(tǒng)計(jì)字符數(shù)*/6{7n++8P++;10}10for(i=0;i22.1voidfun(char*ss)2{3inti;4for(i=0;ss[i]!='\\0';i++)/*將ss所指字符串中所有下標(biāo)為奇數(shù)的字母轉(zhuǎn)換為大寫字母*/5if(i%2==1&&ss[i]>='a'&&ss[i]<='z')6ss[i]=ss[i]-32;7}本題要求將給定字符串ss中下標(biāo)為奇數(shù)的字母轉(zhuǎn)換為大寫字母。需要先判斷下標(biāo)為奇數(shù)的字母是否是小寫字母,如果是再通過其轉(zhuǎn)換方法進(jìn)行轉(zhuǎn)換。從C語言的學(xué)習(xí)中知道,只要將小寫字母減去32即轉(zhuǎn)換成大寫宇母,將大寫字母加上32即換轉(zhuǎn)成小寫字母。本程序用if語句實(shí)現(xiàn)轉(zhuǎn)換功能。23.voidproc(intm,int*a,int*n){inti,j=0;for(i=1;i<=m;i++)//進(jìn)行m次循環(huán)if(i%7==0||i%11==0)//能被7或11整除的所有整數(shù)a[j++]=i;//符合條件的數(shù)放在數(shù)組a中*n=j;//返回這些數(shù)的個(gè)數(shù)}【解析】本題需要先判斷1~m每一個(gè)整數(shù)能否被7或11整除,然后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個(gè)數(shù)通過形參n返回主函數(shù)。24.voidfun(inta[][n],intn){inti,j;for(i=0;i<=""p="">for(j=0;j<=i;j++)/*矩形的下三角時(shí),積相乘*/a[i][j]=a[i][j]*n;}首先從數(shù)組中找出要乘以n的元素。這其實(shí)就是找出將被挑出的元素在原數(shù)組中的分布規(guī)律的過程。通過觀察得出,要被處理的元素下標(biāo)的范圍是從每行中第1個(gè)元素開始,直到列數(shù)等于該行行數(shù)為止。即數(shù)組下三角元素的列下標(biāo)(j)小于等于(<=)行下標(biāo)(j)。找到這個(gè)規(guī)律后,依次從數(shù)組中取得符合要求的元素,然后乘以n。
25.
【解析】首先判斷小于等于整數(shù)lim的所有整數(shù)是否為素?cái)?shù)。然后將一個(gè)素?cái)?shù)放入數(shù)組aa中,最后將素?cái)?shù)的個(gè)數(shù)返回給主函數(shù)。
26.
【解析】要實(shí)現(xiàn)對(duì)變量的值保留2位小數(shù)。并對(duì)第3位小數(shù)進(jìn)行四舍五入,可以通過先將其小數(shù)點(diǎn)后3位變?yōu)檎龜?shù)后加5,所得到的數(shù)除10,最后再除100來實(shí)現(xiàn)。
27.
【解析】按照題目中要求,求出能整除x且不是偶數(shù)的各整數(shù)。首先判斷小于等于整數(shù)x的所有奇數(shù)是否能被x整除,將能被x整除的奇數(shù)放入數(shù)組pp中。最后將數(shù)組pp中元素的個(gè)數(shù)返回到主函數(shù)中。
28.
【解析】題目中要求將所有大于l小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)組中,因此需要判斷所有大干1小于m的整數(shù)是否為素?cái)?shù)。將所有大干1小于m的非素?cái)?shù)放入數(shù)組xx中,并將非素?cái)?shù)的個(gè)數(shù)通過形參k傳遞回主函數(shù)中。
29.
【解析】要找到所有學(xué)生中成績低于平均分?jǐn)?shù)的人數(shù),首先需要算出所有學(xué)生的平均成績。然后將所有學(xué)生的成績與平均成績相比較。將低于平均分?jǐn)?shù)學(xué)生的記錄存放在新的數(shù)組中,并將低于平均分?jǐn)?shù)的學(xué)生數(shù)返回給主函數(shù)。
30.
【解析】在while循環(huán)中,利用if判斷表達(dá)式中每一個(gè)字符是否為“#”,如果不是,將其復(fù)制到字符串,否則跳過,這就實(shí)現(xiàn)了函數(shù)的功能。
(1)首先利用工作指針指向字符串,當(dāng)指針不指向串尾時(shí),就對(duì)字符串進(jìn)行循環(huán)判斷。
(2)在循環(huán)中利用if判斷表達(dá)式字符是否為“#”,如果不是,將其復(fù)制到字符串,否則跳過。
(3)所有字符處理完后,記得在新串s的末尾加上結(jié)束符“ˊ\0ˊ”。
31.(1)intj-c=0;doublexa=0.0;(2)if(x[j]>=xa)(1)intj-c=0;doublexa=0.0;(2)if(x[j]>=xa)解析:本題中函數(shù)的功能是輸出平均值,并統(tǒng)計(jì)在平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。本題中的函數(shù)實(shí)現(xiàn)過程首先求解平均值,然后將所有值與平均值進(jìn)行比較,統(tǒng)計(jì)高于平均值的實(shí)數(shù)個(gè)數(shù)。
32.(1)錯(cuò)誤;(1)f(doublex)正確:doublef(doublex)(2)錯(cuò)誤;returns正確:returns;(1)錯(cuò)誤;(1)f(doublex)正確:doublef(doublex)\r\n(2)錯(cuò)誤;returns正確:returns;解析:該程序的流程是,fun()程序?qū)(n)項(xiàng)循環(huán)累加,fun()程序采用條件選擇語句計(jì)算函數(shù)f(x)的值。本題錯(cuò)誤在于未定義函數(shù)f(doublex)的返回值類型。C語言規(guī)定,在未顯式聲明的情況下,函數(shù)返回值默認(rèn)為int型。
33.(1)k++;(2)if(m==k)(1)k++;(2)if(m==k)解析:本題中函數(shù)的功能是判斷一個(gè)整數(shù)n是否是素?cái)?shù)。素?cái)?shù)是只能被1和本身整除的正整數(shù)(>1),所以判別n是否為素?cái)?shù),只要用2、3、…、n-1這些數(shù)逐個(gè)去除n,觀察余數(shù)是否為0即可,只要有一次相除余數(shù)為0,n就不是素?cái)?shù),否則n為素?cái)?shù)。
34.(1)錯(cuò)誤:*t=calloc(msizeof(STU));正確:t=calloc(msizeof(STU));(2)錯(cuò)誤:for(i=j=0;i<N;j++)正確:for(i=j=0;i<N;i++)(3)錯(cuò)誤:t[k].s=b[j].s;正確:t[k]=b[j];(1)錯(cuò)誤:*t=calloc(m,sizeof(STU));正確:t=calloc(m,sizeof(STU));\r\n(2)錯(cuò)誤:for(i=j=0;i<N;j++)正確:for(i=j=0;i<N;i++)\r\n(3)錯(cuò)誤:t[k].s=b[j].s;正確:t[k]=b[j];解析:錯(cuò)誤1:calloc也用于分配內(nèi)存空間。調(diào)用形式:(類型說明符*)calloc(n,size),功能:在內(nèi)存動(dòng)態(tài)存儲(chǔ)區(qū)中分配n塊長度為“size”字節(jié)的連續(xù)區(qū)域。函數(shù)的返回值為該區(qū)域的首地址,而本題中t定義為指針類型。(類型說明符*)用于強(qiáng)制類型轉(zhuǎn)換。calloc函數(shù)與malloc函數(shù)的區(qū)別僅在于一次可以分配n塊區(qū)域。例如:ps=(stmetstu*)calloc(2,sizeof(stmctstu));其中的sizeof(stmctstu)是求stu的結(jié)構(gòu)長度。因此該語句的意思是:按stu的長度分配兩塊連續(xù)區(qū)域,強(qiáng)制轉(zhuǎn)換為sm類型,并把其首地址賦予指針變量ps。錯(cuò)誤2:此循環(huán)中,變量i遞增。錯(cuò)誤3:本題旨在考查對(duì)結(jié)構(gòu)體概念的掌握和靈活應(yīng)用程度。
35.(1)a2=k/10;(2)returni;(1)a2=k/10;(2)returni;解析:本題中函數(shù)的功能是從整數(shù)1到55之間,選出能被3整除且有一位上的數(shù)是5的數(shù)。其中,涉及整數(shù)個(gè)位的截取,以及判斷某范圍內(nèi)能被3整除的判斷條件表達(dá)式、循環(huán)。
36.(1)錯(cuò)誤:fun(intn)正確:doublefun(intn)(2)錯(cuò)誤:c=a;a+=b;;b+=c;正確:c=a;a+=b;b=c;(1)錯(cuò)誤:fun(intn)正確:doublefun(intn)\r\n(2)錯(cuò)誤:c=a;a+=b;;b+=c;正確:c=a;a+=b;b=c;解析:該題題干是著名的斐波拉契分?jǐn)?shù)序列,所以循環(huán)條件應(yīng)該是c=a;a+=b;b=c。
37.(1)錯(cuò)誤:result*=--n;正確:result*=n--;(2)錯(cuò)誤:return;正確:returnresult;(1)錯(cuò)誤:result*=--n;正確:result*=n--;\r\n(2)錯(cuò)誤:return;正確:returnresult;解析:該題采用循環(huán)語句計(jì)算n的階乘。當(dāng)n大于1且小于170時(shí),令result與n相乘,同時(shí)n自動(dòng)減1,循環(huán)至n=2(n=1時(shí)無需相乘):注意:o和1的階乘都等于1,可用條件語句
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第15課《我們不亂扔》教學(xué)設(shè)計(jì)-2024-2025學(xué)年一年級(jí)道德與法治上冊(cè)統(tǒng)編版
- 展覽館裝修合同
- 2025年度建筑企業(yè)農(nóng)民工勞動(dòng)合同創(chuàng)新模式試點(diǎn)方案
- 2025年度五星級(jí)酒店與VIP客人個(gè)性化服務(wù)協(xié)議
- 2025年度房產(chǎn)贈(zèng)與與可持續(xù)發(fā)展合同
- 2025年度冷鏈物流貨運(yùn)損壞賠償協(xié)議書
- 二零二五年度人工智能教育平臺(tái)合作協(xié)議中的支付及費(fèi)用分?jǐn)偧?xì)則
- 2025年度帶寵物友好房屋出租協(xié)議電子版
- 2025年度廣告代理合同解除通知期限與費(fèi)用結(jié)算規(guī)范
- 2025年度報(bào)廢車買賣及報(bào)廢車輛拆解與環(huán)保設(shè)施投資合同
- DL∕T 5210.2-2018 電力建設(shè)施工質(zhì)量驗(yàn)收規(guī)程 第2部分:鍋爐機(jī)組
- (新教材)青島版六三制四年級(jí)下冊(cè)科學(xué)全冊(cè)教案(含教學(xué)計(jì)劃)
- 部編2023版道德與法治六年級(jí)下冊(cè)活動(dòng)園問題及答案
- 洞頂回填技術(shù)交底
- 最簡易的帕累托圖制作方法簡介PPT通用課件
- 城市軌道交通應(yīng)急處理課程標(biāo)準(zhǔn)
- 初二下分式混合計(jì)算練習(xí)1(附答案)
- (完整版)振幅調(diào)制與解調(diào)習(xí)題及其解答
- 抗震支架施工安裝合同
- JJG 657-2019 呼出氣體酒精含量檢測(cè)儀 檢定規(guī)程(高清版)
- 政法書記在全縣公安工作會(huì)議上的講話
評(píng)論
0/150
提交評(píng)論