二级C语言机试试题11.docx

上传人:b****5 文档编号:5933717 上传时间:2023-01-02 格式:DOCX 页数:29 大小:35.94KB
下载 相关 举报
二级C语言机试试题11.docx_第1页
第1页 / 共29页
二级C语言机试试题11.docx_第2页
第2页 / 共29页
二级C语言机试试题11.docx_第3页
第3页 / 共29页
二级C语言机试试题11.docx_第4页
第4页 / 共29页
二级C语言机试试题11.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

二级C语言机试试题11.docx

《二级C语言机试试题11.docx》由会员分享,可在线阅读,更多相关《二级C语言机试试题11.docx(29页珍藏版)》请在冰豆网上搜索。

二级C语言机试试题11.docx

二级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函数,该函数的

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

当前位置:首页 > 医药卫生 > 基础医学

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

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