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