二级C语言机试试题11Word格式文档下载.docx
《二级C语言机试试题11Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《二级C语言机试试题11Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
}
main()
chars[N];
intcount[10],i;
printf("
\nPleaseenteracharstring:
"
);
gets(s);
\nTheoriginalstring\n"
puts(s);
fun(s,count);
\nThecountberofleter\n"
5;
\n"
%d=%d"
2*i+1,count[i]);
【答案】
(1)*p
(2)a[*p-'
]++(3)count[j]=a[i]
下列给定程序中,函数fun的功能是从字符串s中删除所有小写字母"
c"
。
请修改程序中的错误,使它能计算出正确的结果。
不要改动main函数,不能增行或删行,也不能更改程序的结构。
voidfun(char*str)
for(i=j=0;
str[i]!
\0'
;
/****error******/
if(str[i]!
c'
str[j]=str[i];
str[i]='
charstr[100];
Enterastringwith'
:
"
gets(str);
Theoriginalstring:
puts(str);
fun(str);
Thestringafterdeleted:
\n\n"
(1)str[j++]=str[i];
(2)str[j]='
M名学生的成绩已在主函数中放入一个带头节点的链表结构中,a指向链表的头节点。
请编写函数fun,它的功能是求出平均分,由函数值返回。
例如,若学生的成绩是69、85、91、72、64,则平均分应当是76.200。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
stdlib.h>
#defineM5
structlist
{
doubles;
structlist*next;
};
typedefstructlistSCORE;
doublefun(SCORE*a)
SCORE*creat(double*stu)
SCORE*a,*p,*q;
inti=0;
a=p=(SCORE*)malloc(sizeof(SCORE));
p->
s=0;
while(i<
M)
q=(SCORE*)malloc(sizeof(SCORE));
q->
s=stu[i];
i++;
next=q;
p=q;
next=0;
returna;
outlist(SCORE*a)
SCORE*p;
p=a->
next;
a"
do
->
%4.1f"
p->
s);
p=p->
while(p!
=0);
main()
doublestu[M]={69,85,91,72,64},ave;
SCORE*a;
FILE*out;
a=creat(stu);
outlist(a);
ave=fun(a);
ave=%6.3f\n"
ave);
out=fopen("
outfile.dat"
"
w"
fprintf(out,"
%6.3f"
fclose(out);
doubleaver=0.0;
//初始化平均值
while(a!
=NULL)
//如果头指针不指向链表尾,就累加链表中成绩
aver+=a->
s;
//累加成绩
a=a->
//指向下一个节点
aver/=M;
//求平均分
returnaver;
请补充fun函数,该函数的功能是逐个比较s1、s2两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到s数组中,形成一个新的字符串。
例如,若s1中的字符串为aBCDeFgH,s2中的字符串为ABcd,则s中的字符串应为ABCD。
string.h>
voidfun(char*a,char*b,char*s)
inti=___1___;
while(*a___2___*b)
if(*a>
*b)
s[i]=*b;
else
s[i]=*a;
if(*a)
a++;
if(*b)
b++;
chars1[10]="
aBCDeFgH"
s2[10]="
ABcd"
s[80]={'
fun(s1,s2,s);
Thestrings1:
puts(s1);
Thestrings2:
puts(s2);
Theresults:
(1)0
(2)||
下列给定程序中,函数fun的功能是根据整型参数n,计算如下公式的值:
例如,若n=4,则应输出0.600000。
请修改程序中的错误,得出正确的结果。
/*******error*********/
fun(intn)
doublex=1;
inti;
/*******error*********/
for(i=2;
n;
x=1.0/(1+x);
returnx;
intn;
\nPleaseentern:
scanf("
%d"
&
n);
x%d=%lf\n"
n,fun(n));
(1)doublefun(intn)
(2)for(i=2;
=n;
请编写函数fun,其功能是计算并输出给定10个数的方差:
例如,给定的10个数为76.0、65.0、72.0、85.0、57.0、67.0、45.0、92.0、44.0、58.0,则输出为F=14.982990。
math.h>
doublefun(doubley[10])
doublef,y[10]={76.0,65.0,72.0,85.0,57.0,67.0,45.0,92.0,44.0,
58.0};
\nTheoriginaldatais:
%6.1f"
y[i]);
f=fun(y);
f=%f\n\n"
f);
out=fopen("
%f"
inti,j;
doublef=0.0,f1=0.0;
//初始化变量
for(i=0;
i++)//求公式中y的值
f1+=y[i];
f1/=10;
for(j=0;
j<
j++)
//求公式中给出的根号下的部分
f+=(y[j]-f1)*(y[j]-f1);
f/=10;
f=pow(f,0.5);
//求平方根
returnf;
请补充函数fun,该函数的功能是比较字符串s1和s2的大小,并返回比较的结果。
例如,当sr1="
abcd"
,s2="
abc"
时,fun函数返回"
s1>
s2"
#defineN80
char*fun(char*s1,char*s2)
char*t1=s1,*t2=s2;
while(*t1&
*t2)
if(___1___)
return"
<
if(___2___)
>
t1++;
t2++;
if(*t1==*t2)
=="
if(*t1==___3___)
chars1[N],s2[N];
Pleaseinputs1:
gets(s1);
Pleaseinputs2:
gets(s2);
Theresultis\n"
s1%ss2"
fun(s1,s2));
(1)*t1<
*t2
(2)*t1>
*t2(3)'
下列给定的程序中,函数fun的功能是应用递归算法求某数b的平方根。
求平方根的迭代公式如下:
例如,2的平方根值为1.414214。
fun(doubleb,doublex0)
doublex1,y;
x1=(x0+b/x0)/2.0;
if(abs(x1-x0)>
=1e-6)
y=fun(b,x1);
y=x1;
returny;
doublen;
Entern:
%lf"
Thesquarerootof%lfis%lf\n"
n,fun(n,1.0));
(1)doublefun(doubleb,doublex0)
(2)if(fabs(x1-x0)>
程序定义了M×
M的二维数组,并在主函数中自动赋值。
请编写函数fun(int[][M],intn),该函数的功能是使数组左下半三角元素中的值乘以n。
例如,若n的值为0,matrix数组中的值为:
,则返回主程序后,matrix数组中的值应为:
#defineM3
voidfun(intmatrix[][M],intn)
intmatrix[M][M],n,i,j;
Thearray\n"
M;
{
for(j=0;
j++)
matrix[i][j]=rand()%10;
%4d"
matrix[i][j]);
n=rand()%4;
n=%4d\n"
n);
fun(matrix,n);
THERESULT\n"
matrix[i][j]=i*j+1;
fun(matrix,9);
}
=i;
matrix[i][j]=matrix[i][j]*n;
请补充fun函数,该函数的功能是寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组a中,函数返回素数的个数。
例如,输入3和18,则输出为3 5 7 11 13 17。
intfun(intn,intm,inta[N])
inti,j,k=0,flag;
for(j=n;
=m;
___1___;
j;
flag=0;
break;
if(___3___)
a[k++]=j;
returnk;
intn=0,m=0,i,k;
inta[N];
Inputn\n"
Inputm\n"
m);
m-n;
k=fun(n,m,a);
k;
a[i]);
(1)flag=1
(2)j%i==0(3)flag==1
下列给定程序中函数fun的功能是:
传入一个整数n,计算如下公式的值:
例如,若输入5,则应输出-0.283333。
请修改函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
doublefun(intn)
doubles=1.0;
s=1.0-1/i;
/*******error*******/
___填空___
\nPleaseenter1integernumbers:
\n\nTheresultis%lf\n"
fun(n));
(1)s=s-1.0/i;
/s-=1.0/i;
/s-=(double)1/i
(2)returns;
请编写函数fun,其功能是将两个两位数的正整数a、b合并成一个整数放在c中。
合并的方式:
将a的十位和个位依次放在c的百位和个位上,b的十位和个位依次放在c的千位和十位上。
例如,当a=45,b=12,调用该函数后,c=1425。
voidfun(inta,intb,long*c)
inta,b;
longc;
Inputa,b:
scanf("
%d%d"
a,&
b);
fun(a,b,&
c);
Theresultis:
%ld\n"
c);
for(a=0;
a<
a++)
fun(a+28,a+82,&
%ld\n"
【答案】*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;
请补充fun函数,该函数的功能是计算并输出下列多项式的值:
例如,若主函数从键盘给n输入50后,则输出为S=1.960784。
___1___fun(intn)
doublesum=0.0,temp;
for(i=1;
temp=0.0;
for(j=1;
temp+=___2___;
sum+=1.0/temp;
returnsum;
Pleaseinputn:
s=fun(n);
%f\n\n"
s);
(1)double
(2)j
下列给定程序中函数fun的功能:
输出N行N列正方阵,然后求两条对角线上各元素之和,返回此和数。
#defineN5
/*******error********/
intfun(intn,inta[][])
inti,j,sum=0;
\nThe%dx%dmatrix:
N,N);
/******error*********/
%4f"
a[i][j]);
sum+=a[i][i]+a[i][n-i-1];
if(n%2!
=0)
sum-=a[n/2][n/2];
return(sum);
intx[N][N]={{1,2,3,4,5},{2,3,4,5,1},{3,4,5,1,2},{4,5,1,2,3},
{5,4,3,2,1}};
\nThesumofallelementson2diagnalis%d."
fun(N,x));
(1)intfun(intn,inta[][N])
(2)printf("
请编写一个函数fun,它的功能是计算n门课程的平均分,计算结果作为函数值返回。
例如,若有5门课程的成绩是88、92、80、61.5、55;
则函数的值为75.30。
floatfun(float*b,intm)
floats[10]={88,92,80,61.5,55},aver;
aver=fun(s,5);
\nAveragesis:
%5.2f\n"
aver);
%5.2f"
floatave=0.0;
inti;
m;
ave+=b[i];
ave/=m;
returnave;
请补充main函数,该函数的