二级C语言上机题目.docx

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

二级C语言上机题目.docx

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

二级C语言上机题目.docx

二级C语言上机题目

1.1请补充函数fun,函数fun的功能是求n的阶乘。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

longfun(intn)

{

if(【1】)

return(n*fun(【2】));

return【3】;

}

main()

{

【1】n>1或1

1.2下列给定程序中,函数fun的功能是:

分别统计字符串中大写字母和小写字母的个数。

例如,给字符串s输入:

AaaaBBb123CCccccd,则应输出结果:

upper=5,1ower=9。

请改正程序中的错误,使它能计算出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

/********found********/

voidfun(char*s,inta,intb)

{

while(*s)

{

/********found********/

if(*s>='A'&&*s<='z')

a++;

/********found********/

if(*s>='a'&&*s<='z')

b++;

s++;

}

}

main()

{

chars[100];

intupper=0,lower=0;

printf("\nPleaseastring:

");

gets(s);

fun(s,&upper,&lower);

printf("\nupper=%dlower=%d\n",upper,lower);

(1)错误:

voidfun(char*s,inta,intb)正确:

voidfun(char*s,int*a,int*b)

(2)错误:

a++;正确:

(*a)++;

(3)错误:

b++;正确:

(*b)++;

1.3请编写一个函数voidfun(char*tt,intpp[]),统计在tt字符串中"a"到"z"26个字母各自出现的次数,并依次放在pp所指数组中。

例如:

当输入字符串abcdefghabcdeabc后,程序的输出结果应该是:

333221110000000000000000000

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

voidfun(char*tt,intpp[])

{

}

voidmain()

{

charaa[1000];

intbb[26],k;

system("CLS");

printf("\nPleaseenteracharstring:

");

scanf("%s",aa);

fun(aa,bb);

for(k=0;k<26;k++)

printf("%d",bb[k]);

printf("\n");

答案voidfun(char*tt,intpp[])

{

inti;

for(i=0;i<26;i++)

pp[i]=0;/*初始化pp数组各元素为0*/

for(;*tt!

='\0';tt++)

if(*tt>='a'&&*tt<='z')

pp[*tt-'a']++;/*将tt字符串中'a'到'z'26个字母各自出现的次数,依次放在pp数组中,任一个小写字母减去'a'后所得结果正好是它对应的下标*/

}

2.1请补充函数fun,它的功能是:

计算并输出n(包括n)以内所有能被3或7整除的自然数的倒数之和。

例如,在主函数中从键盘给n输入30后,输出为:

s=1.226323。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

doublefun(intn)

{

inti;

doublesum=0.0;

for(i=1;_【1】;i++)

if(i%3==0_【2】_i%7==0)

sum+=_【3】_/i;

returnsum;

}

main()

{

intn;

doubles;

printf("\nInputn:

");

scanf("%d",&n);

s=fun(n);

printf("\n\ns=%f\n",s);

}

【1】i<=n【2】||【3】1.0或(double)1

2.2下列给定程序中,函数fun()的功能是:

根据整型形参m的值,计算如下公式的值。

t=1-1/(2×2)-1/(3×3)-…-1/(m×m)

请改正函数fun()中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

#include

doublefun(intm)

{doubley=1.0;

intI;

/*************found**************/

for(I=2;I

/*************found**************/

y-=1/(I*I);

return(y);

}

voidmain()

{intn=5;

system("CLS");

printf("\nTheresultis%1f\n",fun(n));

}

(1)错误:

for(I=2;I

for(I=2;I<=m;I++)

(2)错误:

y-=1/(I*I);正确:

y-=1.0/(I*I);

2.3请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:

将大于整数m且紧靠m的k个素数存入所指的数组中。

例如,若输入17,5,则应输出19,23,29,31,37。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

voidfun(intm,intk,intxx[])

{

}

voidmain()

{

intm,n,zz[1000];

system("CLS");

printf("\nPleaseentertwointegers:

");

scanf("%d%d",&m,&n);

fun(m,n,zz);

for(m=0;m

printf("%d",zz[m]);

printf("\n");

}

答案voidfun(intm,intk,intxx[])

{

inti,j,n;

for(i=m+1,n=0;n

{for(j=2;j

if(i%j==0)break;

if(j>=i)/*如果是素数,放入数组xx中*/

xx[n++]=i;

}

}

3.1给定程序的功能是:

求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:

圆面积公式为:

S=πr2,在程序中定义的变量名要与公式的变量相同)。

例如,输入圆的半径值:

19.527,输出为:

s=598.949991。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仪在横线上填入所编写的若干表达式或语句。

试题程序:

#include

doublefun(doubler)

{

return3.14159*_【1】_/2.0;

}

main()

{

doublex;

printf("Enterx:

");

scanf("%lf",_【2】_);

printf("S=%lf\n",fun(_【3】_));

}

【1】r*r【2】&x【3】x

3.2下列给定程序中,fun函数的功能是:

根据形参m,计算下列公式的值。

t=1+1/2+1/3+1/4+…+1/m

例如,若输入5,则应输出2.283333。

请改正程序中的错误,使它能计算出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

#include

doublefun(intm)

{

doublet=1.0;

intI;

for(I=2;I<=m;I++)

/*************found**************/

t+=1.0/k;

/*************found**************/

returnI;

}

voidmain()

{intm;

system("CLS");

printf("\nPleaseenter1integernumber:

");

scanf("%d",&m);

printf("\nTheresultis%1f\n",fun(m));

}

(1)错误:

t+=1.0/k;正确:

t+=1.0/I;

(2)错误:

returnI;正确:

returnt;

3.3编写函数fun,函数的功能是:

根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。

S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

例如:

若n的值为11时,函数的值为1.833333。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

#include

floatfun(intn)

{

}

voidmain()

{

intn;

floats;

system("CLS");

printf("\nPleaseenterN:

");

scanf("%d",&n);

s=fun(n);

printf("Theresultis:

%f\n",s);

}

答案floatfun(intn)

{

inti,s1=0;

floats=0.0;

for(i=1;i<=n;i++)

{s1=s1+i;/*求每一项的分母*/

s=s+1.0/s1;/*求多项式的值*/

}

returns;

}

4.1给定程序的功能是:

计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值通过形参传入。

例如,若q的值为50.0,则函数值为50.416687。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

doublefun(doubleq)

{

intn;

doubles;

n=2;

s=2.0;

while(s【1】q)

{

s=s+(double)(n+1)/n;

【2】;

}

printf("n=%d\n",n);

【3】;

}

main()

{

printf("%f\n",fun(50));

}

【1】<=【2】n++或n+=1或n=n+1【3】returns或return(s)

4.2下列给定的程序中,函数fun的功能是:

计算并输出k以内最大的10个能被13或17整除的自然数之和。

K的值由主函数传入,若k的值为500,则函数的值为4622。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

#include

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--;

/*************found**************/

returnm;

}

voidmain()

{system("CLS");

printf("%d\n",fun(500));

}

(1)错误:

if((k%13=0)||(k%17=0))

正确:

if((k%13==0)||(k%17==0))

(2)错误:

缺少大括号正确:

加}

4.3编写函数fun,它的功能是:

根据以下公式求p的值,结果由函数值带回。

m与n为两个正数且要求m>n。

P=m!

/(n!

(m-n)!

),例如:

m=12,n=8时,运行结果为495.000000。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

floatfun(intm,intn)

{

}

voidmain()

{

system("CLS");

printf("p=%f\n",fun(12,8));

}

答案floatfun(intm,intn)

{

inti;

doublep=1.0;

for(i=1;i<=m;i++)p=p*i;/*求m!

*/

for(i=1;i<=n;i++)p=p/i;/*求m!

/n!

*/

for(i=1;i<=m-n;i++)p=p/i;/*求m!

/(n!

(m-n)!

)*/

returnp;

}

5.1请补充函数fun,该函数的功能求能是:

整除x且是偶数的数,把这些数保存在数组bb中,并按从大到小的顺序输出。

例如当x=20时,依次输出:

20 10 4 2。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

#include

voidfun(intk,intbb[])

{

intI;

intj=0;

for(【1】;I<=k;I++)

{

if(【2】)

bb[j++]=I;

}

printf("\n\n");

for(I=【3】;I>=0;I--)

printf("%d",bb[I]);

}

voidmain()

{

intk=1;

intbb[100];

system("CLS");

printf("\nPleaseinputX=");

scanf("%d",&k);

fun(k,bb);

}

【1】I=1【2】k%I==0&&I%2==0【3】--j或j--或j=j-1或j-=1

5.2下列给定程序中,函数fun的功能是:

根据整型形参m,计算如下公式的值。

例如,若m中的值为5,则应输出:

1.463611。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

doublefun(intm)

{

doubley=1.0;

inti;

/********found********/

for(i=2;i

/********found********/

y+=1/(i*i);

return(y);

}

main()

{

intn=5;

printf("\nTheresultis%1f\n",fun(n));

}

(1)错误:

for(i=2;i

for(i=2;i<=m;i++)

(2)错误:

y+=1/(i*i)正确:

y+=1.0/(i*i)

5.3编写函数fun,它的功能是:

利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。

xn+1=cos(xn)

迭代步骤如下:

(1)取x1初值为0.0;

(2)x0=x1,把x1的值赋给x0;

(3)x1=cos(x0),求出一个新的xl;

(4)若x0-x1,的绝对值小于0.000001,则执行步骤(5),否则执行步骤

(2);

(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。

程序将输出结果Root=0.739085。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仪在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

floatfun()

{

}

main()

{

floatf=fun();

printf("Root=%f\n",f);

}

答案floatfun()

{

floatx1=0.0,x0;

do

{

x0=x1;

x1=cos(x0);

}

while(fabs(x0-x1)>=1e-6);

returnx1;

}

6.1程序的功能是计算s=!

!

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。

试题程序:

#include

longfun(intn)

{

inti;

longs;

s=【1】_;

for(i=1;i<=n;i++)

s=【2】;

returns;

}

main()

{

longs;

intk,n;

scanf("%d",&n);

s=【3】;

for(k=0;k<=n;k++)

s=【4】;

printf("%id\n",s);

}

【1】1【2】s*i或i*s【3】0【4】s+fun(k)

6.2下列给定程序中,函数fun的功能是:

按如下递归公式求函数值。

例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

/********found********/

intfun(n)

{

intc;

/********found********/

if(n=1)

c=10;

else

c=fun(n-1)+2;

return(c);

}

main()

{

intn;

printf("Entern:

");

scanf("%d",&n);

printf("Theresult:

%d\n\n",fun(n));

}

(1)错误:

intfun(n)正确:

intfun(intn)

(2)错误:

if(n=1)正确:

if(n==1)

6.3请编写函数fun,函数的功能是:

求出二维数组周边元素之和,作为函数值返回。

二维数组中的值在主函数中赋予。

例如:

若二维数组中的值为

13579

29994

69998

13570

则函数值为61。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

#defineM4

#defineN5

intfun(inta[M][N])

{

}

voidmain()

{

intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},

{6,9,9,9,8},{1,3,5,7,0}};

inti,j,y;

system("CLS");

printf("Theoriginaldatais:

\n");

for(i=0;i

{for(j=0;j

printf("%6d",aa[i][j]);

printf("\n");

}

y=fun(aa);

printf("\nThesun:

%d\n",y);

printf("\n");

}

答案intfun(inta[M][N])

{

inti,j,sum=0;

for(i=0;i

for(j=0;j

if(i==0||i==M-1||j==0||j==N-1)/*只要下标中有一个为0或M-1或N-1,则它一定是周边元素*/

sum=sum+a[i][j];/*将周边元素相加*/

returnsum;

}

7.1请补充函数fun,该函数的功能是:

求不超过给定自然数的所有偶数之和。

注意:

部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include

intfun(intx)

{

inti,s;

s=_【1】;

for(i=2;【2】;i+=2)

s+=i;

returns;

}

main()

{

intn;

do

{

printf("\nPleaseenternaturalnumbersn:

");

scanf("%d",&n);

}while(n<=0);

printf("\n不超过给定自然数%d的各偶数之和为%d\n",n,fun(n));

}

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

当前位置:首页 > 高等教育 > 文学

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

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