机试练习54150套含答案.docx
《机试练习54150套含答案.docx》由会员分享,可在线阅读,更多相关《机试练习54150套含答案.docx(37页珍藏版)》请在冰豆网上搜索。
机试练习54150套含答案
第四十一套
请补充函数fun,该函数的功能是:
判断一个数是否为素数。
该数是素数时,函数返回字符串"yes!
",否则函数返回字符串"no!
",并在主函数中输出。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#include
【1】
{
intI,m;
m=1;
for(I=【2】;Iif(【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;iprintf("\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;jprintf("%4d",a[i][j]);
printf("\n");
}
/******************************/
out=fopen("out.dat","w");
for(i=0;ifor(j=0;ja[i][j]=i*j+1;
fun(a,9);
for(i=0;i{
for(j=0;jfprintf(out,"%4d",a[i][j]);
fprintf(out,"\n");
}
fclose(out);
/******************************/
}
【参考答案】
fun(inta[][N],intn)
{
inti,j;
for(i=0;ifor(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;iprintf("%d",aa[i]);
printf("\n");
/******************************/
wf=fopen("out.dat","w");
fun(30,aa,&n);
for(i=0;ifprintf(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;iav=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,该函数的功能是:
统计一行字符串中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一