机试练习4(31-40套含答案)

更新时间:2024-04-16 23:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第三十一套

请补充main函数,该函数的功能是:求n!。 例如,7!=5040。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序:

#include #include #include void main() {

int I,n; long f=1; system(\ printf(\ scanf(\【1】); for(【2】;I<=n;I++)

【3】;

printf(\}

【参考答案】

(1) &n (2) i=1或i=2 (3) f*=i

下列给定程序中,函数fun的功能是:求表达式s=aa…aa-…-aa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)的值。例如a=3,n=6,则以上表达式为: s=333333-33333-3333-333-33-3

其值是296298。a和n是函数fun的形参,表达式的值作为函数值传回main函数。 请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include long fun(int a,int n) { int j;

/*************found**************/ long s=0,t=1;

/*************found**************/ for(j=0;j<=n;j++) t=t*10+a; s=t;

for(j=1;j

/*************found**************/ t=t; s=s-t; }

return(s); } main() {

int a,n;

printf(\ scanf(\

printf(\}

【参考答案】

(1)错误:long s=0,t=1; 正确:long s=0, t=0; (2)错误:for (j=0;j<=n;j++) 正确:for (j=0;j

(3)错误:t=t; 正确:t=t/10;

第三十二套

请补允函数fun,该函数的功能是:计算并输出下列多项式的值。 例如,若主函数从键盘给n输入50后,则输出为S=1.960784。 注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填若干表达式或语句。 试题程序: #include 【1】 fun(int n)

{

int i,j;

double sum=0.0,t; for(i=1;i<=n;i++) { t=0.0;

for(j=1;j<=i;j++)

t+=【2】;

sum+=【3】; }

return sum; }

void main() { int n; double s;

printf(\ scanf(\ s=fun(n);

printf(\}

【参考答案】

(1) double (2) j (3)1.0/t或(double)1/t

下列给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值。

例如,若m的值为5,则应输出:1.463611。 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include double fun (int m) { double y=1.0; int i;

/*************found**************/ for(i=2;i

/*************found**************/ y+=1/(i*i); return (y); }

void main() { int n=5; system(\

printf(\}

【参考答案】

(1)错误:for (i=2;i

第三十三套

程序的功能是计算。 注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: #include long fun(int n) { int I; long s; s=【1】;

for(I=1;I<=n;I++)

s=【2】;

return s; }

void main() {

long s; int k,n; scanf(\

s=【3】;

for(k=0;k<=n;k++)

s=【4】;

printf(\}

【参考答案】

(1) 1 (2) s*i或i*s (3) 0 (4) s+fun(k)

数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数fun的功能是:计算前项的累计和。在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数里。如当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。符合此条件的累加值应为42,126,366,570,1010。 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #define N 20

int fun(int n, int *a)

/*************found**************/ { int I,j,k,sum; sum=0;

for(k=3,I=0;I

/*************found**************/ if(sum%4=2) a[j++]=sum; }

/*************found**************/ return j; }

void main() {int a[N],d,n,i;

printf(\ scanf(\ d=fun(n,a);

printf(\ for(i=0;i

printf(\}

【参考答案】

(1)错误:int i,j,k,sum; 正确:int i,j=0,k,sum; (2)错误:if(sum%4=2) 正确:if(sum%4==2) (3)错误:return j; 正确:return j++;

第三十四套

请补充main函数,该函数的功能是:求1+2!+3!+…+N!的和。 例如,1+2!+3!+…+5!+6!的和为873。 注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序:

#include #include void main() {

int I, n; long s=0, t=1; system(\

printf(\ scanf(\【1】); for(I=1;I<=n;I++) { }

printf(\}

【参考答案】 (1) &n (2) t*i (3) s+t

下列给定程序中,函数fun的功能是:求S的值。设

S=(22/(1*3))*(42/(3*5))*(62/(5*7))*…*(2k)2/((2k-1)*(2k+1)) 例如,当k为10时,函数的值应为1.533852。 请改正程序中的错误,使它能得出正确的结果。

t=【2】; s=【3】;

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include #include #include

/*************found**************/ fun(int k)

{ int n; float s, w, p, q; n=1; s=1.0; while(n<=k) { w=2.0*n; p=w-1.0; q=w+1.0; s=s*w*w/p/q; n++; }

/*************found**************/ return s }

void main() { system(\

printf(\}

【参考答案】

(1)错误:fun(int k) 正确:double fun(int k) (2)错误:return s

第三十五套

给定程序的功能是:计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值通过形参传入。

例如,若q的值为50.0,则函数值为50.416687。 注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

正确:return s;

试题程序:

#include double fun(double q) { int n; double s,t; n=2; s=2.0; while(s【1】q) {

s=s+(double)(n+1)/n; 【2】; }

printf(\ 【3】; }

void main() {

printf(\}

【参考答案】 (1)<=

(2)n++或n+=1或n=n+1 (3)return s 或 return(s)

下列给定程序中,函数fun的功能是:给定n个实数,输出平均值,并统计平均值以上(含平

)

,

n=8

,

193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为195.838745,在平均值以上的实数个数应为5。 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include #include int fun(float x[], int n)

/*************found**************/

int j, c=0; float xa=0.0; for (j=0; j

printf(\ for (j=0; j=xa) c++; return c; }

void main() {

float

x[100]={ 193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763}; system(\

printf(\}

【参考答案】

(1)错误:缺{ 正确:加{

第三十六套

请在函数fun的横线上填写若干表达式,使从键盘上输入一个整数n,输出n对应的斐波拉契数列。斐波拉契数列是一整数数列,该数列自第三项开始,每数等于前面两数之和,即0,1,1,2,3,5,8,13,21,34,55,… 注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include int fun(int n); void main() {

int i,n=0; scanf(\ for(i=0;i

int fun(int n)

printf(\

{

if(【1】)

return 0;

else }

【参考答案】

(1) n==0 (2) n==1 (3) fun(n-1)+fun(n-2)

下列给定程序中,函数fun的功能是:根据整型形参n,计算如下公式的值。 A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=1/(1+A (n-1)) 例如,若n=10,则应输出0.617977。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include #include

/*************found**************/ int fun(int n) { float A=1;int I;

/*************found**************/ for(I=2;I

void main() { int n; system(\

printf(\ scanf(\

printf(\ }

if(【2】)

return 1;

else

return 【3】 ;

【参考答案】

(1)错误:int fun(int n) 正确:float fun(int n) (2)错误:for(i=2;i

第三十七套

请补充函数fun,该函数的功能是:把从键盘输入的3个整数按从小到大输出。 例如,输入\结果输出\。 注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序:

#include #include #include void main() {

int x,y,z,t; system(\

printf(\ scanf(\ if(【1】) {

t=x; x=y; y=t;

}/*交换x,y的值*/ if(【2】) {

t=z; z=x; x=t;

}/*交换x,z的值*/ if(【3】) {

t=y; y=z; z=t;

}/*交换z,y的值*/

printf(\

printf(\}

【参考答案】

(1) x>y (2) x>z (3) y>z

下列给定程序中,函数fun的功能是:找出100到n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。 请改正函数fun中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #define N 100

int fun(int *s, int n) {

int I,j,k,a,b,c; j=0;

for(I=100; I

/*************found**************/ k=n; a=k; k/=10;

/*************found**************/ b=k/10; c=k/10; if(a==b && a==c)

s[j++]=I; } return j; }

void main() {

int a[N], n,num=0, i; do {

printf(\ scanf(\ }

while(n > 1000); num= fun(a,n);

printf(\ for(i=0; i

【参考答案】

(1)错误:k=n 正确:k=i; (2)错误:b=k/10; 正确:b=k;

第三十八套

请补充main函数,该函数的功能是:计算三名学生学科的平均成绩。 例

,

score[N][M]={{83.5,82,86,65,67},{80,91.5,84,99,95},{90,95,86,95,97}}时,五门学科的平均分为:84.5,89.5,85.3,86.3,86.3。 注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序:

#include #include #define N 3 #define M 5 int main() {

int I,j; static

float

score[N][M]=

{{83.5,82,86,65,67},{80,91.5,84,99,95},{90,95,86,95,97}}; static float bb[N]; system(\ for(I=0;I

bb[I]=0.0;

for(I=0;I<【1】;I++) { }

for(I=0;I

printf(\【3】); return 0; }

【参考答案】

(1) N (2) M (3) bb[i]/N

下列给定程序中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如,若k=10,则应输出3628800。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include long fun(int k) {

/*************found**************/ if k>1

return(k*fun(k-1)); return 1; }

void main() {int k=10; system(\

printf(\ } 【参考答案】

for(j=0;j<【2】;j++)

bb[j]+=score[I][j];

错误:if k>1 正确:if(k>1)

第三十九套

请补充函数fun,该函数的功能是:判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回\否则返回\。 注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #include char *fun(int n) {

int g,s,b; g=n; s=n/10; b=【1】; if((g+b)==s)

return 【2】;

else return 【3】;

}

void main() {

int num=0; system(\

printf(\ scanf(\ printf(\

printf(\ printf(\}

【参考答案】

(1) n/100 (2) \

下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。 t=1/2-1/3-…-1/m

例如,若输入5,则应输出-0.283333。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include #include double fun(int m) {

double t=1.0; int I;

for(I=2;I<=m;I++)

/*************found**************/ t=1.0-1/I;

/*************found**************/ ; }

void main() {int m; system(\

printf(\ scanf(\

printf(\ fun(m)); }

【参考答案】

(1)错误:t=1.0-1/i; 正确:t-=1.0/i; (2)错误:; 正确:return t;

第四十套

数组xx[N]保存着一组3位数的无符号正整数,其元素的个数通过变量num传入函数fun。请补充函数fun,该函数的功能是:从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组yy中,其个数由函数fun返回。 例

,

xx[8]={135,787,232,222,424,333,141,541}

时,bb[6]={787,232,222,424,333,141}。 注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #include #define N 1000

int fun(int xx[],int bb[],int num) {

int I,n=0; int g,b;

for(I=0;I

return【3】; }

void main() {

int xx[8]={135,787,232,222,424,333,141,541}; int yy[N]; int num=0,n=0,i=0; num=8; system(\

printf(\ for(i=0;i

printf(\g=【1】; b=xx[I]/100; if(g==b)

【2】;

printf(\ n=fun(xx,yy,num); printf(\ for(i=0;i

printf(\

}

【参考答案】

(1) xx[i] (2) bb[n++]=xx[i] (3) n

下列给定函数中,函数fun的功能是:统计字符串中各元音字母(即A、E、I、O、U)的个数。注意:字母不分大小写。例如,输入THIs is a boot,则应输出是1 0 2 2 0。 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include #include

/*************found**************/ fun(char *s, int num[5]) { int k, i=5; for(k=0;k

/*************found**************/ num[i]=0; for(;*s;s++) { i=-1;

/*************found**************/ switch(s)

{ case 'a': case'A':{i=0;break;} case 'e ': case 'E':{i=1;break;} case 'i': case 'I':{i=2;break;} case 'o': case 'O':{i=3;break;} case 'u': case 'U':{i=4;break;} } if(i>=0) num[i]++; } }

void main()

{ char s1[81]; int num1[5], i; system(\

printf(\ gets(s1);

fun(s1, num1);

for(i=0;i<5;i++) printf(\ printf(\ } 【参考答案】

(1)错误:fun(char *s, int num[5]) 正确:void fun(char *s, int num[5]) (2)错误:num[i]=0; (3)错误:switch(s)

正确:num[k]=0; 正确:switch(*s)

本文来源:https://www.bwwdw.com/article/9jmp.html

Top