C语言机试文档格式.docx
《C语言机试文档格式.docx》由会员分享,可在线阅读,更多相关《C语言机试文档格式.docx(179页珍藏版)》请在冰豆网上搜索。
&
(IsPrime(j)))printf("
\n%4d"
j);
printf("
\n"
);
第1处内容填写有误
第[1]处操作错误
题面要求操作:
内容为[if(!
(n%i)){]
实际操作结果:
内容为[if(!
(n___1___i)){]
第2处内容填写有误
第[2]处操作错误
内容为[m=0;
break;
]
内容为[m=0;
___2___;
第3处内容填写有误
第[3]处操作错误
内容为[scanf("
&
k);
内容为[scanf("
___3___);
2.在考生文件夹下的给定程序modi12.c中,函数fun的功能是:
根据整型形参n,计算如下公式的值。
111
A1=1,A2=──,A3=──,……An=────
1+A11+A21+A(n-1)
例如:
若n=10,则应输出:
0.617977。
请改正程序中的错误,使它能得出正确结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
conio.h>
stdlib.h>
intfun(intn)
{floatA=1;
inti;
for(i=2;
i<
n;
i++)
A=1.0/(1+A);
returnA;
main()
{intn;
system("
cls"
\nPleaseentern:
scanf("
&
n);
A%d=%f\n"
n,fun(n));
内容为[floatfun(n)]
内容为[intfun(intn)]
内容为[for(i=2;
=n;
i++)]
内容为[for(i=2;
333333
请编写一个函数fun,它的功能是:
求出一个2×
M整型二维数组中最大元素的值,并将此值返回调用函数。
部分源程序存在考生文件夹下的文件prog156.c中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
fun(inta[][M])
{}
{intarr[2][M]={5,8,3,90,76,-4,12,82};
max=%d\n"
fun(arr));
NONO();
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*wf;
intarr[][M]={5,8,3,90,76,-4,12,82};
wf=fopen("
b156.out"
"
w"
);
fprintf(wf,"
max=%d\n"
fclose(wf);
}解题思路:
先用一个变量记录二维数组的第一个元素,然后通过嵌套的循环语句依次将数组中的其他元素与这个变量作比较,如果大于它则交换两者的值。
{
inti,j,base;
base=a[0][0];
/*假定数组中第一个元素的值为最大*/
for(i=0;
2;
i++)/*外层循环用于控制数组行的变化*/
for(j=0;
j<
M;
j++){/*内层循环用于控制数组列的变化*/
if(base<
a[i][j])/*将数组中的其他元素与变量base作比较,如果大于它则交换两者的值*/
base=a[i][j];
}
returnbase;
/*返回变量base的值给主函数*/
3.给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组中:
成绩为60到69的人数存到b[0]中,成绩为70到79的人数存到b[1],成绩为80到89的人数存到b[2],成绩为90到99的人数存到b[3],成绩为100的人数存到b[4],成绩为60分以下的人数存到b[5]中。
例如,当a数组中的数据是:
93、85、77、68、59、43、94、75、98。
调用该函数后,b数组中存放的数据应是:
1、2、1、3、0、2。
源程序存放在考生文件夹下的blank27.c中。
voidfun(inta[],intb[],intn)
inti;
for(i=0;
i<
6;
i++)b[i]=0;
/**************found**************/
___1___;
i++)
if(a[i]<
60)b[5]++;
___2___b[(a[i]-60)/10]++;
{inti,a[100]={93,85,77,68,59,43,94,75,98},b[6];
fun(___3___,9);
theresultis:
i++)printf("
%d"
b[i]);
}第1处内容填写有误
内容为[for(i=0;
i++)]
内容为[for(i=0;
___1___;
内容为[elseb[(a[i]-60)/10]++;
内容为[___2___b[(a[i]-60)/10]++;
内容为[fun(a,b,9);
内容为[fun(___3___,9);
4.在考生文件夹下的给定程序modi75.c中,函数fun的功能是:
读入一个字符串(长度<
20),将该字符串中的所有字符按升序排序后输出。
若输入:
edcba,则应输出:
abcde。
#defineM20
voidfun(chart[])
charc;
inti,j;
for(i=strlen(t);
i;
i--)
j++)
if(t[j]<
t[j+1])
{
c=t[j];
t[j]=t[j+1];
t[j+1]=c;
chars[81];
\nPleaseenteracharacterstring:
gets(s);
\n\nBeforesorting:
\n\"
%s\"
s);
fun(s);
\nAftersortingdecendingly:
内容为[for(i=strlen(t)-1;
i--)]
内容为[for(i=strlen(t);
内容为[if(t[j]>
t[j+1])]
内容为[if(t[j]<
5.编写函数fun,它的功能是:
计算并输出下列级数和:
111
s=───+───+……+─────
1×
22×
3n×
(n+1)
例如,当n=10时,函数值为:
0.909091。
部分源程序存在考生文件夹下的文件prog54.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
doublefun(intn)
main()/*主函数*/
{system("
%f\n"
fun(10));
NONO();
NONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
FILE*wf;
a29.out"
"
fprintf(wf,"
}解题思路:
累计1/(i*(i+1))的和,通过一循环即可实现。
本评析仅供参考。
{inti;
doubles=0;
for(i=1;
s=s+1.0/(i*(i+1));
/*累加各分式的值*/
return(s);
6.给定程序的功能是:
在x数组中放入n个采样值,计算并输出方差值。
N(XK-X'
)^2NXK
S=∑─────,其中X'
=∑─
K=1NK=1N
例如n=8,输入:
193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763时,结果应为:
1.135901。
floatfun(floatx[],intn)
{intj;
floatxa=0.0,s;
for(j=0;
j<
xa+=x[j]/n;
s=___2___;
s+=(x[j]-xa)*(x[j]-xa)/___3___;
returns;
main()
{floatx[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};
fun(x,8));
内容为[for(j=0;
j++)]
内容为[for(j=0;
j++)]
内容为[s=0;
内容为[s=___2___;
内容为[s+=(x[j]-xa)*(x[j]-xa)/n;
内容为[s+=(x[j]-xa)*(x[j]-xa)/___3___;
7.在考生文件夹下的给定程序modi7.c中,函数fun的功能是:
计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入,若k的值为500,则函数值为4622。
请改正程序中的错误,使它能得出正确的结果。
intfun(intk)
{intm=0,mc=0,j;
while((k>
=2)&
(mc<
10))
/************found************/
{if((k%13=0)||(k%17=0))
{m=m+k;
mc++;
k--;
returnm;
_____
{system("
%d\n"
fun(500));
内容为[{if((k%13==0)||(k%17==0))]
内容为[{if((k%13=0)||(k%17=0))]
内容为[}]
内容为[_____]
8.函数fun的功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12。
调用该函数后,c=2514。
注意:
部分源程序存在考生文件夹下的文件prog90.c中。
intfun(inta,intb)
{inta,b;
longc;
Inputa,b:
%d%d"
a,&
b);
c=fun(a,b);
Theresultis:
%ld\n"
c);
FILE*rf,*wf;
inti,a,b;
longc;
rf=fopen("
in5.dat"
r"
bd05.dat"
for(i=0;
10;
i++){
fscanf(rf,"
%d,%d"
a,&
b);
c=fun(a,b);
a=%d,b=%d,c=%ld\n"
a,b,c);
fclose(rf);
}解题思路:
可用整除和求余的运算求取整数各位上的数值。
方法是整除相应位上的位权值,再对其求余,余数即为相应位上的数值。
voidfun(inta,intb,long*c)
inta_up,a_low,b_up,b_low;
a_up=a/10;
/*求正整数a的十位数*/
a_low=a%10;
/*求正整数a的个位数*/
b_up=b/10;
/*求正整数b的十位数*/
b_low=b%10;
/*求正整数b的个位数*/
*c=b_low*1000+a_low*100+b_up*10+a_up;
/*将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上*/
9.给定程序的功能是分别统计字符串中大写字母和小写字母的个数。
例如,给字符串ss输入:
AaaaBBb123CCccccd,
则输出结果应为:
upper=5,lower=9
voidfun(char*s,int*a,int*b)
while(*s)
{if(*s>
='
A'
&
*s<
Z'
)
/**********found**********/
___1___;
if(*s>
a'
z'
s++;
{chars[100];
intupper=0,lower=0;
\nPleaseastring:
gets(s);
fun(s,&
upper,&
lower);
\nupper=%dlower=%d\n"
内容为[(*a)++;
内容为[___1___;
内容为[(*b)++;
内容为[___2___;
内容为[printf("
upper,lower);
内容为[printf("
\nupper=%dlower=%d\n"
10.考生文件夹下的给定程序modi47.c的功能是:
计算S=f(f(-1.0)+f(5.0))的值。
当程序正确时,结果为:
2488.000000。
f(x)函数定义如下:
┌2x^2+3x+4(x<
=2)
设f(x)=│
└-2x^2+3x-4(x>
2)
math.h>
doublef(doublex)
{doubley;
If(x<
=2.0)
y=2.0*x*x+3.0*x+4.0;
else
y=-2.0*x*x+3.0*x-4.0;
returny
f(f(-1.0)+f(5.0)));
内容为[if(x<
=2.0)]
内容为[If(x<
内容为[returny;
内容为[returny]
3333333333333333333333333333333333
请编写函数fun,它的功能是:
求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串:
123412132,输入字符为:
1,则输出:
3。
解题思路:
1、建立一个计数器times,预设值为0;
2、从字符串中的第一个字符开始,逐一与指定字符c比较,如果为c,则计数器加1;
3、返回计数器的值,此值即为指定字符在字符串ss中的个数。
intfun(char*ss,charc)
inttimes=0,i;
strlen(ss);
i++){
if(ss[i]==c)times++;
}/*从前往后顺序比较ss字符串中的字符,如果相等,则个数加1*/
11.给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:
圆面积公式为:
S=πr2,在程序中定义的变量名要与公式的变量相同)。
例如输入圆的半径值:
19.527输出为:
s=598.950017。
floatfun(float___1___)
return3.14159*___2___/2.0;
{floatx;
printf("
Enterx:
scanf("
%f"
printf("
s=%f\n"
fun(x));
题面要