机试练习54150套含答案.docx

上传人:b****3 文档编号:3851360 上传时间:2022-11-25 格式:DOCX 页数:37 大小:25.60KB
下载 相关 举报
机试练习54150套含答案.docx_第1页
第1页 / 共37页
机试练习54150套含答案.docx_第2页
第2页 / 共37页
机试练习54150套含答案.docx_第3页
第3页 / 共37页
机试练习54150套含答案.docx_第4页
第4页 / 共37页
机试练习54150套含答案.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

机试练习54150套含答案.docx

《机试练习54150套含答案.docx》由会员分享,可在线阅读,更多相关《机试练习54150套含答案.docx(37页珍藏版)》请在冰豆网上搜索。

机试练习54150套含答案.docx

机试练习54150套含答案

第四十一套

请补充函数fun,该函数的功能是:

判断一个数是否为素数。

该数是素数时,函数返回字符串"yes!

",否则函数返回字符串"no!

",并在主函数中输出。

注意:

部分源程序给出如下。

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

试题程序:

#include

#include

#include

【1】

{

intI,m;

m=1;

for(I=【2】;I

if(【3】)

{

m=0;

break;

}

if(m==1&&n>1)

return("yes!

");

else

return("no!

");

}

voidmain()

{

intk=0;

system("CLS");

printf("Input:

");

scanf("%d",&k);

printf("%s\n",fun(k));

}

【参考答案】

(1)char*fun(intn)

(2)2

(3)n%i==0或!

(n%i)

下列给定程序中,函数fun的功能是:

按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。

若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。

例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。

请改正函数fun中的错误,使它能得出正确的结果。

注意:

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

试题程序:

#include

#defineSIZE20

fun(double*s,double*w)

{intk,i;doublesum;

for(k=2,i=0;i

{s[i]=k;k+=2;}

sum=0.0;

for(k=0,i=0;i

{sum+=s[i];

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

if(i+1%5==0)

{w[k]=sum/5;sum=0;k++;}

}

returnk;

}

voidmain()

{doublea[SIZE],b[SIZE/5];

inti,k;

k=fun(a,b);

printf("Theoriginaldata:

\n");

for(i=0;i

{

if(i%5==0)printf("\n");

printf("%4.0f",a[i]);

}

printf("\n\nTheresult:

\n");

for(i=0;i

printf("\n\n");

}

【参考答案】

(1)错误:

if(i+1%5==0)正确:

if((i+1)%5==0)

程序定义了的二维数组,并在主函数中自动赋值。

请编写函数fun(inta[][N],intn),该函数的功能是:

使数组左下半三角元素中的值乘以n。

例如,若n的值为3,a数组中的值为:

则返回主程序后a数组中的值应为:

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

#defineN5

voidfun(inta[][N],intn)

{

}

main()

{

inta[N][N],n,i,j;

FILE*out;

printf("*****Thearray*****\n");

for(i=0;i

{

for(j=0;j

{

a[i][j]=rand()%10;

printf("%4d",a[i][j]);

}

printf("\n");

}

n=rand()%10;

printf("n=%4d\n",n);

fun(a,n);

printf("*****THERESULT*****\n");

for(i=0;i

{

for(j=0;j

printf("%4d",a[i][j]);

printf("\n");

}

/******************************/

out=fopen("out.dat","w");

for(i=0;i

for(j=0;j

a[i][j]=i*j+1;

fun(a,9);

for(i=0;i

{

for(j=0;j

fprintf(out,"%4d",a[i][j]);

fprintf(out,"\n");

}

fclose(out);

/******************************/

}

【参考答案】

fun(inta[][N],intn)

{

inti,j;

for(i=0;i

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

a[i][j]=a[i][j]*n;

}

第四十二套

给定程序中,函数fun的功能是:

在形参s所指字符串中的每个数字字符之后插入一个*号。

例如,形参s所指的字符串为:

def35adh3kjsdf7。

执行结果为:

def3*5*adh3*kjsdf7*。

注意:

部分源程序给出如下。

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

试题程序:

#include

voidfun(char*s)

{

inti,j,n;

for(i=0;s[i]!

='\0';i++)

if(s[i]>='0'【1】s[i]<='9')

{

n=0;

while(s[i+1+n]!

=【2】)

n++;

for(j=i+n+1;j>i;j--)

s[j+1]=【3】;

s[j+1]='*';

i=i+1;

}

}

main()

{

chars[60]="ba3a54cd23a";

printf("\ntheoriginalstringis:

%s\n",s);

fun(s);

printf("\ntheresultis:

%s\n",s);

}

【参考答案】

(1)&&

(2)0(3)s[j]或*(s+j)

下列给定程序中,函数fun的功能是:

找出一个大于给定整数m且紧随m的素数,并作为函数值返回。

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

注意:

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

试题程序:

#include

#include

#include

intfun(intm)

{intI,k;

for(I=m+1;;I++)

{for(k=2;k

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

if(I%k!

=0)

break;

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

if(k

return(I);

}

}

voidmain()

{intn;

system("CLS");

printf("\nPleaseentern:

");

scanf("%d",&n);

printf("%d\n",fun(n));

}

【参考答案】

(1)错误:

if(i%k!

=0)正确:

if(i%k==0)

(2)错误:

if(k

if(k>=i)

请编写函数voidfun(intx,intpp[],int*n),它的功能是:

求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。

例如,若x中的值为30,则有4个数符合要求,它们是1、3、5、15。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

voidfun(intx,intpp[],int*n)

{

}

voidmain()

{

FILE*wf;

intx,aa[1000],n,i;

system("CLS");

printf("\nPleaseenteranintegernumber:

\n");

scanf("%d",&x);

fun(x,aa,&n);

for(i=0;i

printf("%d",aa[i]);

printf("\n");

/******************************/

wf=fopen("out.dat","w");

fun(30,aa,&n);

for(i=0;i

fprintf(wf,"%d",aa[i]);

fclose(wf);

/*****************************/

}

【参考答案】

voidfun(intx,intpp[],int*n)

{

inti,j=0;

for(i=1;i

/*i的初始值为1,步长为2,确保i为奇数*/

if(x%i==0)

/*将能整除x的数存入数组pp中*/

pp[j++]=i;

*n=j;

/*传回满足条件的数的个数*/

}

第四十三套

请补充函数fun,该函数的功能是:

依次取出字符串中所有的小写字母以形成新的字符串,并取代原字符串。

注意:

部分源程序给出如下。

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

试题程序:

#include

#include

#include

voidfun(char*s)

{

intI=0;

char*p=s;

while(【1】)

{

if(*p>='a'&&*p<='z')

{

s[I]=*p;

【2】;

}

p++;

}

s[I]=【3】;

}

voidmain()

{

charstr[80];

system("CLS");

printf("\nEnterastring:

");

gets(str);

printf("\n\nThestringis:

%s\n",str);

fun(str);

printf("\n\nThestringofchangingis:

%s\n",str);

}

【参考答案】

(1)*p

(2)i++或++i或i+=1或i=i+1

(3)'\0'

下列给定程序中,函数fun的功能是:

计算并输出high以内最大的10个素数之和。

high由主函数传给函数fun。

例如high的值为100,则函数的值为732。

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

注意:

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

试题程序:

#include

#include

#include

#include

intfun(inthigh)

{

intsum=0,n=0,j,yes;

while((high>=2)&&(n<10))

{

yes=1;

for(j=2;j<=high/2;j++)

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

if(high%j==0)

{

yes=0;

break

}

if(yes)

{

sum+=high;

n++;

}

high--;

}

returnsum;

}

voidmain()

{

system("CLS");

printf("%d\n",fun(100));

}

【参考答案】

(1)错误:

break正确:

break;

请编写一个函数fun,它的功能是:

根据以下公式求的值(要求满足精度0.005,即某项小于0.005时停止迭代)。

/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…+1*2*3*…*n/(3*5*7*…*(2n+1))

程序运行后,如果输入精度0.0005,则程序输出3.14…。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

doublefun(doubleeps)

{

}

voidmain()

{

doublex;

FILE*wf;

printf("Inputeps:

");

scanf("%lf",&x);

printf("\neps=%1f,PI=%1f\n",x,fun(x));

/******************************/

wf=fopen("out.dat","w");

fprintf(wf,"%lf",fun(0.0005));

fclose(wf);

/*****************************/

}

【参考答案】

doublefun(doubleeps)

{

doubles=1.0,s1=1.0;

intn=1;

while(s1>=eps)

/*当某项大于精度要求时,继续求下一项*/

{s1=s1*n/(2*n+1);/*求多项式的每一项*/

s=s+s1;/*求和*/

n++;

}

return2*s;

}

第四十四套

从键盘输入一组小写字母,保存在字符数组str中。

请补充函数fun,该函数的功能是:

把字符数组str中字符下标为奇数的小写字母转换成对应的大写字母,结果仍保存在原数组中。

例如,输入"acegikm",则输出"aCeGiKm"。

注意:

部分源程序给出如下。

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

试题程序:

#include

#include

#defineN80

voidfun(chars[])

{

intI=0;

while(【1】)

{

if(I%2!

=0)

s[I]-=【2】;

【3】;

}

}

voidmain()

{

charstr[N];

system("CLS");

printf("\nInputastring:

\n");

gets(str);

printf("\n***originalstring***\n");

puts(str);

fun(str);

printf("\n***newstring***\n");

puts(str);

}

【参考答案】

(1)s[i]!

='\0'或s[i]

(2)32或'a'-'A'(3)i++

下列给定程序中,函数fun的功能是:

计算整数n的阶乘。

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

注意:

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

试题程序:

#include

#include

doublefun(intn)

{

doubleresult=1.0;

while(n>1&&n<170)

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

result*=--n;

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

return;

}

voidmain()

{intn;

system("CLS");

printf("Enteraninteger:

");

scanf("%d",&n);

printf("\n\n%d!

=%1g\n\n",n,fun(n));

}

【参考答案】

(1)错误:

result*=--n;正确:

result*=n--;

(2)错误:

return;正确:

returnresult;

请编写函数fun,该函数的功能是:

计算n门课程的平均分,计算结果作为函数值返回。

例如,有5门课程的成绩是90.5,72,80,61.5,55,则函数的值为71.80。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

floatfun(float*a,intn)

{

}

voidmain()

{

FILE*wf;

floatscore[30]={90.5,72,80,61.5,55},aver;

aver=fun(score,5);

printf("\nAveragescoreis:

%5.2f\n",aver);

/******************************/

wf=fopen("out.dat","w");

fprintf(wf,"%5.2f",aver);

fclose(wf);

/*****************************/

}

【参考答案】

floatfun(float*a,intn)

{

floatav=0.0;

inti;

for(i=0;i

av=av+a[i];

return(av/n);/*返回平均值*/

}

第四十五套

函数fun的功能是:

逆置数组元素中的值。

形参n给出数组中数据的个数。

例如,若a所指数组中的数据依次为:

1、2、3、4、5、6、7、8、9,则逆置后为:

9、8、7、6、5、4、3、2、1。

注意:

部分源程序给出如下。

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

试题程序:

#include

voidfun(inta[],intn)

{

intI,t;

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

{

t=a[I];

a[i]=a[n-1-【2】];

【3】=t;

}

}

main()

{

intb[9]={1,2,3,4,5,6,7,8,9},i;

printf("\ntheoriginaldata:

\n");

for(i=0;i<9;i++)

printf("%4d",b[i]);

printf("\n");

fun(b,9);

printf("\n\thedataafterinbert:

\n");

for(i=0;i<9;i++)

printf("%4d",b[i]);

printf("\n");

}

【参考答案】

(1)n/2

(2)i(3)a[n-i-1]

下列给定程序中,函数fun的功能是:

应用递归算法求某数a的平方根。

求平方根的迭代公式如下:

例如,2的平方根为1.414214。

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

注意:

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

试题程序:

#include

#include

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

fun(doublea,doublex0)

{doublex1,y;

x1=(x0+a/x0)/2.0;

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

if(fabs(x1-x0)>0.00001)

y=fun(a,x1);

elsey=x1;

returny;

}

voidmain()

{doublex;

printf("Enterx:

");scanf("%lf",&x);

printf("Thesquarerootof%lfis%1f\n",x,fun(x,1.0));

}

【参考答案】

(1)错误:

fun(doublea,doublex0)

正确:

doublefun(doublea,doublex0)

(2)错误:

if(fabs(x1-x0)>0.00001)

正确:

if(fabs(x1-x0)>=0.00001)

请编写函数fun,该函数的功能是:

统计一行字符串中单词的个数,作为函数值返回。

一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1