




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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ì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、2.填空題(10題)1.有以下程序:
intf(intn)
{if(n=1)return1;
elsereturnf(n-1)+1;}
main()
{inti,j=0;
for(i=1;i<3;i++)j+=f(i);
printf("%d\n",j);
}
程序運(yùn)行后的輸出結(jié)果是【】。
2.以下程序運(yùn)行后的輸出結(jié)果是【】。
fun(inta)
{intb=0;staticintc=3;
b++;c++;
return(a+b+c);
}
main()
{inti,a=5;
for(i=0;i<3;i++)printf("%d%d",i,fun(a));
prind("\n");
}
3.下面程序的輸出結(jié)果是【】。
#defineMAX3
inta[MAX];
main()
{fun1();{un2(A);printf("\n");}
funl()
{intk,t=0;
for(k=0;k<MAX;k++,t++)a[k]=t+t;
}
fun2(intb[])
{intk;
for(k=0;k<MAX;k++)printf("%d",*(b+k));
}
4.下面invert函數(shù)的功能是將一個(gè)字符串str的內(nèi)容顛倒過(guò)來(lái),請(qǐng)?zhí)羁铡?/p>
#include<string.h>
voidinvert(charstr[])
{inti,j,【】;
for(i=0,j=strlen(str)【】;i<j;i++,j--)
{k=str[i];str[i]=str[j];str[j]=k;
}
}
5.某二叉樹(shù)中度為2的結(jié)點(diǎn)有18個(gè),則該二叉樹(shù)中有【】個(gè)葉子結(jié)點(diǎn)。
6.語(yǔ)句:x++;、++x;、x=x+1;、x=1+x;,執(zhí)行后都使變量x中的值增1,請(qǐng)寫(xiě)出一條同一功能的賦值語(yǔ)句(不得與列舉的相同)【】。
7.若有語(yǔ)句:
inti=-19,j=i%4;
printf("%d\n",j);
則輸出結(jié)果是【】。
8.以下程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{inta[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
9.軟件測(cè)試中路徑覆蓋測(cè)試是整個(gè)測(cè)試的基礎(chǔ),它是對(duì)軟件【】進(jìn)行測(cè)試。
10.已知bead指向一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,鏈表中每個(gè)結(jié)點(diǎn)包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域?yàn)檎汀R韵潞瘮?shù)求出鏈表中所有連接點(diǎn)數(shù)據(jù)域的和值作為函數(shù)值返回。請(qǐng)?jiān)跈M線(xiàn)處填入正確內(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);}
二、單選題(10題)11.有以下程序:Main(){{intx,y,z;x=y=1;z=x++,y++,++y;print(“%d,%d,%d”,x,y,z);}程序運(yùn)行后的輸出結(jié)果是()。A.2,3,3B.2.3.2C.2,3.1D.2.2.1
12.串是一種特殊的線(xiàn)性表,其特殊性體現(xiàn)在()。
A.可以順序存儲(chǔ)B.數(shù)據(jù)元素是一個(gè)字符C.可以鏈接存儲(chǔ)D.數(shù)據(jù)元素可以是多個(gè)字符
13.有以下程序
#include<stdio.h>
main()
{charch[3][5]={“AAAA”,”BBB”,”CC”};
printf(“%s\n”,ch[1];)
}
程序運(yùn)行后的輸出結(jié)果是()A.A.AAAA
B.CC
C.BBBCC
D.BBB
14.采用開(kāi)放定址法處理散列表的沖突時(shí),其平均查找長(zhǎng)度()
A.高于二分查找B.高于鏈接法處理沖突C.低于二分查找D.低于鏈接法處理沖突
15.以下選項(xiàng)中合法的C語(yǔ)言常量是()。
A.‘C-STR’B.2014.1C.”\1.0D.2EK
16.若要求在if后一對(duì)圓括號(hào)中表示a不等于0的關(guān)系,則能正確表示這一關(guān)系的表達(dá)式為()
A.a<>0B.!aC.a=0D.a
17.有以下程序:#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}程序運(yùn)行后的輸出結(jié)果是()。A.2.3.3B.2.3.2C.2.3.1D.2.2.1
18.對(duì)線(xiàn)性表進(jìn)行折半查找時(shí),必須要求線(xiàn)性表()。
A.順序方式存儲(chǔ)B.鏈?zhǔn)椒绞酱鎯?chǔ)C.以順序方式存儲(chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排列D.以鏈?zhǔn)椒绞酱鎯?chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排列
19.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運(yùn)行后的輸出結(jié)果是()。A.b,bB.b,cC.a,bD.a,c
20.若定義下列結(jié)構(gòu)體,結(jié)構(gòu)體變量p的出生年份賦值正確的語(yǔ)句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;
A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;
三、程序設(shè)計(jì)題(10題)21.請(qǐng)編寫(xiě)一個(gè)函數(shù)proc(),它的功能是:根據(jù)以下公式求7c的值(要求滿(mǎn)足精度0.0005,即某項(xiàng)小于0.005時(shí)停止迭代)。程序運(yùn)行后,如果輸入精度0.0005,則程序輸出3.140578。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
22.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫(xiě)函數(shù)fun(),其功能是求出數(shù)組周邊元素的平均值并將其作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為0127919745238314568259141則返回主程序后s的值應(yīng)為3.375。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4#defineN55doublefun(intw[][n])6{78}9voidmain()10{11FILE*wf;12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,13inti,j;14doubles;15system("CLS");16printf("***Thearray***\n");17for(i=0;i<N;i++)18{for(j=0;j<N;j++)19{printf("%4d",a[i][j]);}20printf("\n");21}22s=fun(a);23printf("***TheResult***\n");24printf("Thesumis:%lf\n",s);25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%if",s);28fclose(wf);29/******************/30}
23.請(qǐng)編寫(xiě)函數(shù)proc(),其功能是:計(jì)算并輸出下列多項(xiàng)式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)例如,若輸入10,則輸出為S=3.597740。n的值要求大于1但不大于100。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
24.M名學(xué)生的成績(jī)已在主函數(shù)中放入一個(gè)帶頭結(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的帶頭結(jié)點(diǎn)。請(qǐng)編寫(xiě)函數(shù)proc(),它的功能是:找出學(xué)生的最高分,由函數(shù)值返回。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
25.編寫(xiě)函數(shù)proc,它的功能是:計(jì)算和輸出下列級(jí)數(shù)的和。S=1/(12)+1/(23)+…+1/(n(n+1))例如,當(dāng)n=20時(shí),函數(shù)值為0.952381。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
26.請(qǐng)編寫(xiě)一個(gè)函數(shù)voidproc(intm,intk,intxxE3),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入所指的數(shù)組中。例如,若輸入206,則應(yīng)輸出232931374143。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
27.編寫(xiě)函數(shù)fun(),其功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不要使用庫(kù)函數(shù)strcat),即把p2所指的字符串連接到p1所指的字符串的后面。例如,分別輸入下面兩個(gè)字符串:“FirstString——”“SecondString”程序輸出:“FirstString——SecondString”注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:
28.下列程序定義了M×M的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫(xiě)函數(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)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
29.假定輸入的字符串只包含字母和“#”號(hào),請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:刪除字符串中所有的“#”號(hào)。在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(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)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
30.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫(xiě)函數(shù)fun(),其功能是實(shí)現(xiàn)B=A+AT,即將矩陣A加上A的轉(zhuǎn)置,結(jié)果存放在矩陣B中。計(jì)算結(jié)果在main()函數(shù)中輸出。舉例如下。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){}voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j; system(“CLS”); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%7d”,t[i][j]); printf(“\n”); }}
四、2.程序修改題(10題)31.給定程序MODll.C中函數(shù)fun的功能是:求三個(gè)數(shù)的最小公倍數(shù)。
例如,給主函數(shù)中的變量x1、x2、x3分別輸入15112,則輸出結(jié)果應(yīng)當(dāng)是:330。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
32.下列給定程序中,函數(shù)fun()的功能是:首先把b所指字符串中的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到c所指數(shù)組中,過(guò)長(zhǎng)的剩余字符接在c所指數(shù)組的尾部。例如,當(dāng)a所指字符串中的內(nèi)容為abcdefg,b所指字符串中的內(nèi)容為1234時(shí),c所指數(shù)組中的內(nèi)容應(yīng)該為a4b3c2dlefg;而當(dāng)a所指字符串中的內(nèi)容為1234,b所指字符串中的內(nèi)容為abcdefg時(shí),c所指數(shù)組中的內(nèi)容應(yīng)改為1g2f3e4dcba。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*a,char*b,char*c)
{
inti,j;charch;
i=0;j=strlen(b)-1;
/*************found**************/
while(i>j}
{ch=bill;b[i]=b[j];b[j]=ch;
i++;j--;
}
while(*a||*b)
{if(*a){*c=*a;c++;a++;}
if(*b){*c=*b;c++;b++;}
}
/*************found**************/
*c=0;
}
main()
{
chars1[100],s2[100],t[200];
clrscr();
printf("\nEnters1string:");
scanf("%s",s1);
printf("\nEnters2string:");
scanf("%s",s2);
fun(s1,s2,t);
printf("\nTheresultis:%s\n",t);
}
33.下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計(jì)算如下公式的值。
y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)
例如:m中的值為5,則應(yīng)輸出0.838611。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{doubley=1.0;
/**********found*************/
intj=1;
inti;
for(i=2;i<=m;i++)
{
j=-1*j;
/****************found*******+******/
y+=1/(i*i);
}
return(y);
}
main()
{
intn=5;
clrscr();
printf("\nTheresultis%lf\n",fun(n));
}
34.下列給定程序中,函數(shù)fun()的功能是:找出一個(gè)大于給定整數(shù)m且緊隨m的素?cái)?shù),并作為函數(shù)值返回。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(intm)
{inti,k;
for(i=m+1;;i++)
{for(k=2;k<i;k++)
/*************found**************/
if(i%k!=0)
break;
/*************found**************/
if(k<i)
return(i);
}
}
main()
{intn;
clrscr();
printf("\nPleaseentern:");
scanf("%d",&n);
printf("%d\n",fun(n));
}
35.下列給定程序中,函數(shù)fun()的功能是::求k!(k<13),所有階乘的值作為函數(shù)值返回。例如:若k=10,則應(yīng)輸出3628800。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更
改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
longfun(intk)
{
/*************found**************/
ifk>0
return(k*fun(k-l));
/*************found**************/
elseif(k=0)
return1;
}
main()
{intk=10;
clrscr();
print,("%d!=%1d\n",k,fun(k));
}
36.給定程序MODll.C中函數(shù)fun的功能是:計(jì)算n的5次方的值(規(guī)定n的值大于2、小于8),通過(guò)形參指針傳回主函數(shù);并計(jì)算該值的個(gè)位、十位、百位上數(shù)字之和作為函數(shù)值返回。
例如,7的5次方是16807,其低3位數(shù)的和值是15。
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
37.下列給定程序中,函數(shù)fun()的功能是:先從鍵盤(pán)上輸入一個(gè)3行3列的矩陣的各個(gè)元素的值,然后輸出主對(duì)角線(xiàn)元素之積。
請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
intfun()
{
inta[3][3],mu1;
inti,j;
mu1=l;
for(i=0;i<3;i++)
{
/*************found*************/
for(i=0;i<3;j++)
scanf(“%d”,&a[i][j]);
}
for(i=0;i<3;i++)
/*************found*************/
mu1=mu1*a[i][j];
printf("Mu1=%d\n",mu1);
}
main()
{
fun();
}
38.下列給定程序中fun()函數(shù)的功能是:將n個(gè)無(wú)序整數(shù)從小到大排序。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意;不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
fun(intn,int*a)
{inti,j,p,t;
for(j=0;j<n-1;j++)
{P=j;
/***************found*******************/
for(i=j+l;i<n-1;i++)
if(a[p]>a[i])
/***************found*******************/
t=i;
if(p!=j)
{t=a[j];a[j]=a[p];a[p]=t;}
}
}
putarr(ihtn,int*z)
{inti;
for(i=l;i<=n;i++,z++)
{printf("%4d",*z);
if(!(i%10))printf("\n");
}printf("\n");
}
main()
{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;
clrscr();
printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);
fun(n,aa);
printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);
}
39.下列給定的程序中,函數(shù)fun()的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從小到大的順序進(jìn)行排序。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#defineN20
voidfun(inta[],intn)
{inti,j,t,p;
for(j=0;j<n-1;j++)
/*************found**************/
{p=j
for(i=j;i<n;i++)
if(a[i]<a[p])
/*************found**************/
p=j;
t=a[p];a[p]=a[j];a[j]=t;
}
}
main()
{inta[N]={9.6,8,3,-1},i,m=5;
printf("排序前的數(shù)據(jù):");
for(i=0;i<m;i++)printf("%d",a[i]);
printf("\n");
fun(a,m);
printf("排序后的順序:");
for(i=0;i<m;i++)printf("%d",a[i]);
printf("\n");
}
40.下列給定程序中,函數(shù)fun()的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從低到高的順序找出前m(m≤10)名學(xué)生來(lái),并將這些學(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);
}
五、程序改錯(cuò)題(2題)41.下列給定的程序中,proc()函數(shù)的功能是:將str所指字符串中每個(gè)單詞的最后一個(gè)字母改成大寫(xiě)(這里的“單詞”是指有空格隔開(kāi)的字符串)。
例如,若輸人:Howdoyoudo,則輸出:HoWdOyoUd0。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
42.已知一個(gè)數(shù)列從0項(xiàng)開(kāi)始的前3項(xiàng)為0,0,1,以后的各項(xiàng)都是其相鄰的前3項(xiàng)之和。下列給定的程序中,函數(shù)proc的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的和sum。n的值通過(guò)形參傳人。例如,當(dāng)n=20時(shí),程序的輸出結(jié)果應(yīng)為42762.000000。請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)maiil函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>doubleproc(intn){doublesum,s0,s1,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;s0=0.0;s1=0.0;s2=1.0;//****found****for(k=4;k<n;k++)}{s=s0+s1+s2;sum+=S:s0=s1;s1=s2;//****found****s2=s;returnsum;}voidmain{intn;system("CLS");printf("InputN=");scanf("%d",&nJ;printf("%f\n",proc(n));}六、操作題(2題)43.下列程序段的運(yùn)行結(jié)果是______。
intx=0,y=0;
while(x<15)y++,x+=++y;
printf("%d,%d",y,x);
44.funl函數(shù)的調(diào)用語(yǔ)句為funl(&a,&b,&c);。它將3個(gè)整數(shù)按由大到小的JI匣序調(diào)整后依次放入a,b,c三個(gè)變量中,a中放最大數(shù),請(qǐng)?zhí)羁铡?/p>
voidfun2(int*x,int*y)
{intt;
t=*x;*x;*y;*y=t;
}
voidfunl(int*pa,int*pb,int*pc)
{if(*pc>*pb)fun2(【】);
if(*pa<*pc)fun2(【】);
if(*pa<*pb)fun2(【】);
}
參考答案
1.33解析:i=1時(shí),f(1)=1,j=j+f(1)=0+1=1;i=2時(shí),f(2)=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此時(shí)循環(huán)結(jié)束,程序運(yùn)行后的輸出結(jié)果是3。
2.1011121210111212解析:需要注意的是,函數(shù)fun()中的變量c為靜態(tài)局部變量,在靜態(tài)存儲(chǔ)區(qū)內(nèi)分配了存儲(chǔ)單元,在程序整個(gè)運(yùn)行期間不會(huì)釋放,所以調(diào)用函數(shù)時(shí),只賦初值一次,以后再調(diào)用函數(shù)時(shí),c中的值為上次調(diào)用函數(shù)時(shí)的值。執(zhí)行for循環(huán),當(dāng)i=0時(shí),fun(5)=5+1+4=10,此時(shí)c=4;當(dāng)i=1時(shí),fun(5)=5+1+5=11,此時(shí)c=5;當(dāng)i=2時(shí),fun(5)=5+1+6=12;此時(shí)c=6:當(dāng)i=3時(shí),退出for循環(huán),并輸出回車(chē)換行符。
3.24
4.k-1k\r\n-1解析:本題通過(guò)定義一中間值k,實(shí)現(xiàn)字符串str內(nèi)容的交換。
5.1919解析:根據(jù)二叉樹(shù)的性質(zhì):在任意一棵二叉樹(shù)中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。本題中度為2的結(jié)點(diǎn)數(shù)為18,故葉子結(jié)點(diǎn)數(shù)為18+1=19個(gè)。
6.x+=1;
7.-3-3解析:%運(yùn)算符是求兩個(gè)數(shù)相除的余數(shù),其結(jié)果與被除數(shù)的符號(hào)一致,本題中“-19%4”的值為“-3”。
8.指針P指向數(shù)組a的首地址,執(zhí)行語(yǔ)句p++;后p指向數(shù)組a的第2個(gè)元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n
9.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測(cè)試是白盒測(cè)試方法中的—種,它要求對(duì)程序中的每條路徑最少檢查一次,目的是對(duì)軟件的結(jié)構(gòu)進(jìn)行測(cè)試。
10.
11.C整型變量x、y的初值都為1,“x++,y++,++y”是一個(gè)逗號(hào)表達(dá)式,程序執(zhí)行“z=x++,y++,++y”之后,x的值為2,y的值為3,z取逗號(hào)表達(dá)式中的第二個(gè)表達(dá)式的值,為1。因此本題的答案為選項(xiàng)C。
12.B
13.Dch[1]即輸出的為第二個(gè)字符串,即BBB。
14.B
15.B所謂常量,是指在程序運(yùn)行的過(guò)程中,其值不能被改變的量。在C語(yǔ)言中,有整型常量、實(shí)型常量、字符常量和字符串常量等類(lèi)型。選項(xiàng)A是字符串,需要使用雙引號(hào);選項(xiàng)C不是合法的常量形式;選項(xiàng)D為實(shí)型常量中的指數(shù)形式,但指數(shù)形式e(E)之前必須是數(shù)字,之后必須為整數(shù)。故本題答案為B選項(xiàng)。
16.D
17.C整型變量x、y的初值都為1,“x++,y++,++y”是一個(gè)逗號(hào)表達(dá)式,程序執(zhí)行“z=x++,y++,++y”之后,x的值為2,y的值為3,z取逗號(hào)表達(dá)式中的第二個(gè)表達(dá)式的值,為1。因此本題的答案為選項(xiàng)C。
18.C
19.A++a與a++的區(qū)別是前者先自加再運(yùn)算,后者是先運(yùn)算后自加。
20.C解析:本題主要考查怎樣為嵌套定義的結(jié)構(gòu)中的成員賦值:由于worker中的birth是一個(gè)st型的結(jié)構(gòu),在給birth賦值時(shí),不能將birth作為一個(gè)整體,要用“.”運(yùn)算再深入一層訪問(wèn)到最基本的成員x、y、z。
21.
【解析】我們應(yīng)定義一個(gè)變量表示其和,一個(gè)變量表示其分?jǐn)?shù),由題目中可知循環(huán)結(jié)束的標(biāo)志為分?jǐn)?shù)小于eps,因此其為循環(huán)結(jié)束的條件,根據(jù)公式的變化規(guī)律,可求得s,最后把2*s返回到主函數(shù)中。
22.1doublefun(intw[][n])2{3inti,j,k=0;4doublesum=0.0;5for(i=0;i<n;i++)6for(j=0;j</n;i++)<n;i++)<n;j++)7if(i==0||i==N-1||j==0||j==N-l)/*只要下標(biāo)中有一個(gè)為0或N-1,則它一定是周邊元素*/</n;j++)</n;i++)<n;i++)<n;j++)8{sum=sum+w[i][j];/*將周邊元素求和*/</n;j++)</n;i++)<n;i++)<n;j++)9k++;</n;j++)</n;i++)<n;i++)<n;j++)10}</n;j++)</n;i++)<n;i++)<n;j++)11returnsum/k;/*求周邊元素的平均值*/</n;j++)</n;i++)<n;i++)<n;j++)12}</n;j++)</n;i++)<n;i++)<n;j++)本題要求計(jì)算二維數(shù)組周邊元素的平均值,for循環(huán)語(yǔ)句控制循環(huán)過(guò)程,if條件語(yǔ)句根據(jù)數(shù)組元素的下標(biāo)判斷該元素是否為二維數(shù)組的周邊元素。本題采用逐一判斷的方式,周邊元素的規(guī)律為下標(biāo)中有一個(gè)是0或N-1,所以只要下標(biāo)中有一個(gè)是0或N-1,那么它一定是周邊元素。計(jì)算周邊元素個(gè)數(shù)的方式是當(dāng)給sum累加一個(gè)值時(shí),k也加1。</n;j++)</n;i++)
23.
【解析】首先定義一個(gè)變量來(lái)存放表達(dá)式的和,根據(jù)題目中提供的多項(xiàng)式,通過(guò)n次循環(huán)來(lái)求出n項(xiàng)的和。最后把所求得的和返回到主函數(shù)當(dāng)中。
24.
【解析】要得到學(xué)生的最高分,需要將每一個(gè)學(xué)生的成績(jī)進(jìn)行比較。學(xué)生的成績(jī)存儲(chǔ)在鏈表中,其結(jié)束標(biāo)志為最后一個(gè)結(jié)點(diǎn)的next指針即NULL。比較每一個(gè)學(xué)生的成績(jī),將最高分返回給主函數(shù)。
25.
【解析】首先定義一個(gè)變量來(lái)表示其和s,通過(guò)n次循環(huán)求出n項(xiàng)的和,最后將所得到各項(xiàng)的和值返回給主函數(shù)。
26.
【解析】要將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入所指的數(shù)組中,首先應(yīng)該判斷大于整數(shù)m且緊靠m的整數(shù)是否為素?cái)?shù)。將緊靠m且為素?cái)?shù)的k個(gè)整數(shù)放入數(shù)組xx中。
27.
【解析】本題考查字符串連接函數(shù)的實(shí)現(xiàn)。本題通過(guò)兩個(gè)for循環(huán)完成功能。第一個(gè)循環(huán)的作用是計(jì)算出字符串的長(zhǎng)度,如果p1是ˊ\0ˊ(即此字符是字串尾),退出循環(huán),i中保存的數(shù)值即是字串長(zhǎng)度。第二個(gè)循環(huán)的作用是循環(huán)遍歷字串p2的字符,利用語(yǔ)句“p1[i++]=p2[j];”將p2中的字符逐個(gè)插到字串p1后。
28.
【解析】要求出數(shù)組周邊元素的平方和,首先要找到二維數(shù)組所有的周邊元素。二維數(shù)組的周邊元素的特點(diǎn)為行下標(biāo)或列下標(biāo)為0或M一1。根據(jù)這個(gè)特點(diǎn),找出二維數(shù)組中所有的周邊元素,求出其平方和放在變量s中。最后將變量s返回到主函數(shù)中。
29.
【解析】在while循環(huán)中,利用if判斷表達(dá)式中每一個(gè)字符是否為“#”,如果不是,將其復(fù)制到字符串,否則跳過(guò),這就實(shí)現(xiàn)了函數(shù)的功能。
(1)首先利用工作指針指向字符串,當(dāng)指針不指向串尾時(shí),就對(duì)字符串進(jìn)行循環(huán)判斷。
(2)在循環(huán)中利用if判斷表達(dá)式字符是否為“#”,如果不是,將其復(fù)制到字符串,否則跳過(guò)。
(3)所有字符處理完后,記得在新串s的末尾加上結(jié)束符“ˊ\0ˊ”。
30.voidfun(inta[3][3],intb[3][3]){ inti,j; 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中*/}行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對(duì)應(yīng)原矩陣的第j行第i列。本題使用兩層循環(huán)實(shí)現(xiàn)矩陣的轉(zhuǎn)置,并將計(jì)算結(jié)果存入矩陣b中,外層循環(huán)控制矩陣的行下標(biāo),內(nèi)層循環(huán)控制矩陣的列下標(biāo)。
31.(1)intfun(intxintyintz)(2)returnj;(1)intfun(intx,inty,intz)(2)returnj;解析:本題中函數(shù)的功能是求三個(gè)數(shù)的最小公倍數(shù)。fun函數(shù)辛接收的值能同時(shí)被x、y、z除盡的最小數(shù)就是它們的最小公倍數(shù)。
32.(1)錯(cuò)誤:while(i>j)正確:while(i<j)(2)錯(cuò)誤:*c=0;正確:*c='\0'(1)錯(cuò)誤:while(i>j)正確:while(i<j)\r\n(2)錯(cuò)誤:*c=0;正確:*c='\\0'解析:這是一個(gè)字符串處理的較為混合的程序,將字符串倒序存放的方法一般是以字符串中央為中心,將兩邊對(duì)稱(chēng)位置的字符互相交換??衫醚h(huán)語(yǔ)句實(shí)現(xiàn),但必須要注意兩邊對(duì)稱(chēng)位置元素的下標(biāo)。該題是用指針配合循環(huán)的嵌套實(shí)現(xiàn)解題目的。
33.(1)錯(cuò)誤:intj=1正確:doublej=1.0;(2)錯(cuò)誤:y+=1/(i*i);正確:y+=j/(i*i);(1)錯(cuò)誤:intj=1正確:doublej=1.0;\r\n(2)錯(cuò)誤:y+=1/(i*i);正確:y+=j/(i*i);解析:錯(cuò)誤1:為了做后面的除法運(yùn)算,j要定義為實(shí)型數(shù),否則除得的結(jié)果將為整數(shù)。錯(cuò)誤2:題中公式是加減相間的運(yùn)算,通過(guò)來(lái)實(shí)現(xiàn)。
34.(1)錯(cuò)誤:if(i%k!=0)正確:if(i%k=0)(2)錯(cuò)誤:if(k<i)正確:if(k>=i)(1)錯(cuò)誤:if(i%k!=0)正確:if(i%k=0)\r\n(2)錯(cuò)誤:if(k<i)正確:if(k>=i)解析:也許剛接觸C語(yǔ)言的學(xué)習(xí)者對(duì)素?cái)?shù)的概念不清楚,在這里說(shuō)明一下,素?cái)?shù)就是質(zhì)數(shù),本題的任務(wù)是隨便輸入一個(gè)整數(shù)m,然后在m的后面尋找緊跟m的一個(gè)質(zhì)數(shù),作為函數(shù)值返回。
for(i=m+1;;i++){
是從m后面的一位開(kāi)始循環(huán),將m后面一位的值賦予i。然后;我們依次判斷m后面的一位是否為素?cái)?shù)。
for(k=2;k<i;k++)
if(i%k==0)
是一個(gè)簡(jiǎn)單的數(shù)學(xué)判斷問(wèn)題,判斷i被賦予的值與k的余數(shù)是否為零。
35.(1)錯(cuò)誤:ifk>0正確:if(k>0)(2)錯(cuò)誤:elseif(k=O)正確:elseif(k==O)(1)錯(cuò)誤:ifk>0正確:if(k>0)\r\n(2)錯(cuò)誤:elseif(k=O)正確:elseif(k==O)解析:由數(shù)學(xué)知識(shí)我們可以知道,0和1的階乘都等于1,ifk>O中是一個(gè)簡(jiǎn)單的語(yǔ)法錯(cuò)誤,if后面沒(méi)有“()”說(shuō)明,在elseif(k=0)中,程序想說(shuō)明的是“如果k值為0,則函數(shù)返回1”,轉(zhuǎn)換成c語(yǔ)言語(yǔ)句就是“elseif(k==0)return1”。
36.(1)d=1;s=0;(2)d=d/10;(1)d=1;s=0;(2)d=d/10;解析:本題中函數(shù)的功能是計(jì)算n的5次方的值(規(guī)定n的值大于2、小于8),通過(guò)形參指針傳回主函數(shù);并計(jì)算該值的個(gè)位、十位、百位上數(shù)字之和作為函數(shù)值返回。本題解題過(guò)程首先是求5次方,然后對(duì)結(jié)果進(jìn)行截取以及求和。
37.(1)錯(cuò)誤:for(i=0;j<3;j++)正確:for(j=0;j<3;j++)(2)錯(cuò)誤:mu1=mu1*a[i][j
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 借貸擔(dān)保條件合同范本
- 買(mǎi)賣(mài)旅游車(chē)車(chē)合同范本
- 制作類(lèi)開(kāi)口合同范本
- 包工包料安裝鍋爐合同范本
- 養(yǎng)豬場(chǎng)租賃合同范本
- 鄉(xiāng)鎮(zhèn)土地開(kāi)發(fā)整改合同范本
- 佛山土地出租合同范本
- 付款協(xié)議合同范本
- 農(nóng)村養(yǎng)牛蛙銷(xiāo)售合同范本
- ktv裝修乙方合同范本
- 2024年湖南汽車(chē)工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- 完整word版,“呂氏八字命理學(xué)”高級(jí)理論
- 中外合作辦學(xué)的可行性報(bào)告
- 飛達(dá)及其輔助機(jī)構(gòu)
- 母嬰保健課程標(biāo)準(zhǔn)
- 深圳地鐵三號(hào)線(xiàn)正線(xiàn)信號(hào)系統(tǒng)
- 高中化學(xué)競(jìng)賽培訓(xùn)計(jì)劃
- 研發(fā)向善課程----綻放生命異彩
- 電廠機(jī)組深度調(diào)峰摸底試驗(yàn)方案
- 地球上的大氣知識(shí)結(jié)構(gòu)圖
- 加油站數(shù)質(zhì)量管理考核辦法版.doc
評(píng)論
0/150
提交評(píng)論