2级C语言机考改错题试题描述.docx

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

2级C语言机考改错题试题描述.docx

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

2级C语言机考改错题试题描述.docx

2级C语言机考改错题试题描述

第一部分改错题

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

1.下列给定程序的功能是:

读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。

例如,若输入整数2310,则应输出:

2、3、5、7、11。

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

注意:

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

试题程序:

#include"conio.h"

#include"stdio.h"

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

IsPrime(intn);

{

inti,m;

m=1;

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

for(i=2;i

if!

(n%i)

{

m=0;

break;

}

return(m);

}

main()

{

intj,k;

clrscr();

printf("\npleaseenteranintegernumberbetween2and10000:

");

scanf("%d",&k);

printf("\n\nTheprimefactor(s)of%dis(are):

",k);

for(j=2;j

if((!

(k%j))&&(IsPrime(j)))

printf("%4d,",j);

printf("\n");

}

主要算法:

涉及知识点:

试题难度:

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

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

逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。

例如,若a中的字符串为:

aBCDeFgH,b中的字符串为:

ABcd,则C中的字符串应为:

aBcdeFgH。

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

注意:

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

试题程序:

#include

#include

voidfun(char*p,char*q,char*c)

{

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

intk=1;

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

while(*p!

=*q)

{

if(*p<*q)

c[k]=*q;

else

c[k]=*p;

if(*p)

p++;

if(*q)

q++;

k++;

}

}

main()

{

chara[10]="aBCDeFgH",b[10]="ABcd",c[80]={'\0'};

fun(a,b,c);

printf("Thestringa:

");

puts(a);

printf("Thestringb:

");

puts(b);

printf("Theresult:

");

puts(c);

}

主要算法:

涉及知识点:

试题难度:

★★★

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

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

依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。

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

注意:

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

试题程序:

#include

#include

voidfun(char*s)

{

inti,j;

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

for(i=0,j=0;s[i]!

='\0';i++)

if(s[i]>='0'&&s[i]<='9')

s[j]=s[i];

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

s[j]="\0";

}

main()

{

charitem[80];

clrscr();

printf("\nEnterastring:

");

gets(item);

printf("\n\nThestringis:

\%s\n",item);

fun(item);

printf("\n\nThestringofchangingis:

\%s\n",item);

}

_

主要算法:

涉及知识点:

试题难度:

★★★

 

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

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

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

例如,给字符串S输入:

AaaaBBb123CCccccd,则应输出结果:

upper=5,lower=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;

clrscr();

printf("\nPleaseastring:

");

gets(s);

fun(s,&upper,&lower);

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

}

主要算法:

涉及知识点:

试题难度:

★★

 

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

5.假定整数数列中的数不重复,并存放在数组中。

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

删除数列中值为X的元素,同时将其它元素前移。

n中存放的是数列中元素的个数。

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

注意:

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

试题程序:

#include

#defineN20

fun(int*a,intn,intx)

{

intp=0,i;

a[n]=x;

while(x!

=a[p])

{

p=p+1;

}

if(p==n)

return-1;

else

{

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

for(i=p;i

a[i+1]=a[i];

returnn-1;

}

}

main()

{

intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;

n=10;

printf("Theoriginaldata:

\n");

for(i=0;i

printf("\nInputx(todelete):

");

scanf("%d",&x);

printf("Delete:

%d\n",x);

n=fun(w,n,x);

if(n==-1)

printf("***Notbefound!

***\n\n");

else

{

printf("Thedataafterdelete:

\n");

for(i=0;i

printf("%5d",w[i]);

printf("\n\n");

}

}

主要算法:

涉及知识点:

试题难度:

★★★

 

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

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

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

111

T=1-―---…-

2x23x3mxm

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

0.536389。

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

注意:

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

试题程序:

#include

#include

doublefun(intm)

{

doubley=1.0;

inti;

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

for(i=2;i

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

y-=1/(i*i);

return(y);

}

main()

{

intn=5;

clrscr();

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

}

_

主要算法:

涉及知识点:

试题难度:

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

7.下列给定程序中函数fun的功能是:

用选择法对数组中的n个元素按从小到大的顺序进行排序。

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

注意:

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

试题程序:

#include

#defineN20

voidfun(inta[],intn)

{

inti,j,t,p;

for(j=0;j

{

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

p=j

for(i=j;i

{

if(a[i]

{

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

p=i;

t=a[p];

a[p]=a[i];

a[i]=t;

}

}

}

}

main()

{

inta[N]={9,6,8,3,-1},i,m=5;

printf("dfrgddfgd:

");

for(i=0;i

printf("%d",a[i]);

printf("\n");

fun(a,m);

printf("gfdghfg:

");

for(i=0;i

printf("%d",a[i]);

printf("\n");

}

主要算法:

涉及知识点:

试题难度:

★★

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

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

在字符串str中找出ASCII码值最大的字符,

将其放在第一个位置上;并将该字符前的原字符向后顺序移动。

例如,调用fun函数之前给字符串输入:

ABCDeFGH,调用后字符串中的内容为:

eABCDFGH。

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

注意:

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

试题程序:

#include

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

fun(char*p)

{

charmax,*q;inti=0;

max=p[i];

while(p[i]!

=0)

{

if(max

{

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

max=p[i];

p=q+i;

}

i++;

}

while(q>p)

{

*q=*(q-1);

q--;

}

p[0]=max;

}

main()

{

charstr[80];

printf("Enterastring:

");

gets(str);

printf("\nTheoriginalstring:

");

puts(str);

fun(str);

printf("\nThestringaftermoving:

");

puts(str);

printf("\n\n");

}

主要算法:

涉及知识点:

试题难度:

★★★

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

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

从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。

例如,若输入8名学生的成绩:

80.5607290.59851.58864

则低于平均分的学生人数为4(平均分为:

75.5625)。

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

注意:

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

试题程序:

#include

#include

#defineN20

intfun(float*s,intn,float*aver)

{

floatave,t=0.0;

intcount=0,k,i;

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

for(k=0;k

t=s[k];

ave=t/n;

for(i=0;i

if(s[i]

count++;

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

*aver=&ave;

returncount;

}

main()

{

floats[30],aver;

intm,i;

clrscr();

printf("\nPleaseenterm:

");

scanf("%d",&m);

printf("\nPleaseenter%dmark:

\n",m);

for(i=0;i

scanf("%f",s+i);

printf("\nThenumberofstudents:

%d\n",fun(s,m,&aver));

printf("Ave=%f\n",aver);

}

主要算法:

涉及知识点:

试题难度:

★★

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

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

将s所指字符串中出现的t1所指子串全部替换成t2所指子字符串,所形成的新串放在w所指的数组中。

在此处,要求t1和t2所指字符串的长度相同。

例如,当s指字符串中的内容为abcdabfab,t1指子串中的内容为ab,t2所指子串中的内容为99时,结果,在w所指的数组中的内容应为99cd99f99。

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

注意:

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

试题程序:

#include

#include

#include

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

intfun(char*s,char*t1,char*t2,char*w)

{

inti;

char*p,*r,*a;

strcpy(w,s);

while(*w)

{

p=w;r=t1;

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

while(r)

if(*r==*p)

{

r++;p++;

}

else

break;

if(*r=='\0')

{

a=w;

r=t2;

while(*r)

{

*a=*r;

a++;

r++;}

w+=strlen(t2);

}

else

w++;

}

}

main()

{

chars[100],t1[100],t2[100],w[100];

clrscr();

printf("\nPleaseenterstrings:

");

scanf("%s",s);

printf("\nPleaseentersubstringt1:

");

scanf("%s",t1);

printf("\nPleaseentersubstringt2:

");

scanf("%s",t2);

if(strlen(t1)==strlen(t2)){

fun(s,t1,t2,w);

printf("\nTheresultis:

%s\n",w);

}

else

printf("Error:

strlen(t1)!

=strlen(t2)\n");

}

主要算法:

涉及知识点:

试题难度:

★★★★

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

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

将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。

规定输入的字符串最多只能包含5位8进制数字。

例如,若输入77777,则输出将是32767。

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

注意:

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

试题程序:

#include

intfun(char*p)

{

intn;

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

n=*p-'o';

p++;

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

while(*p!

=0)

{

n=n*7+*p-'o';

p++;

}

returnn;

}

main()

{

chars[6];

inti;

intn;

printf("Enterastring(0cataldigits):

");

gets(s);

if(strlen(s)>5)

{

printf("Error:

stringtoolonger!

\n\n");

exit(0);

}

for(i=0;s[i];i++)

if(s[i]<'0'||s[i]>'7')

{

printf("Error:

%cnotisocataldigits!

\n\n",s[i]);

exit(0);

}

printf("Theoriginalstring:

");

puts(s);

n=fun(s);

printf("\n%sisconveredtointegenumber:

%d\n\n",s,n);

}

主要算法:

涉及知识点:

试题难度:

★★

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

12.下列给定程序中函数fun的功能是:

求出在字符串中最后一次出现的子字符串的地

址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。

例如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是:

abcdx。

当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到信息:

notbefound!

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

注意:

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

试题程序:

#include

#include

#include

char*fun(char*s,char*t)

{

char*p,*r,*a;

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

a=NuLL;

while(*s)

{

p=s;r=t;

while(*r)

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

if(r==p)

{

r++;

p++;

}

else

break;

if(*r=='\0')

a=s;

s++;

}

returna;

}

main()

{

chars[100],t[100],*p;

clrscr();

printf("\npleaseenterstrings:

");

scanf("%s",s);

printf("\npleaseentersubstringt:

");

scanf("%s",t);

p=fun(s,t);

if(p)

printf("\ntheresultis:

%s\n",p);

else

printf("\nnotfound!

\n");

}

_

主要算法:

涉及知识点:

试题难度:

★★★

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

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

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

1111

t=1+-+-+-…+-

234m

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

请改正程序中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。

注意:

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

试题程序:

#include

#include

doublefun(intm)

{

doublet=1.0;

inti;

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

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

t+=1.0/k;

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

___填空____

}

main()

{

intm;

clrscr();

printf("\npleaseenter1integernumbers:

\n");

scanf("%d",&m);

printf("\n\ntheresultis%lf\n",fun(m));

}

主要算法:

涉及知识点:

试题难度:

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

14.下列给定程序中,函数fun和funx的功能是:

用二分法求方程2x3-4x2+3x-6=0的根,并要求绝对误差不超过0.001。

例如,若给m输入-100,给n输入90,则函数求得的一个根值为2.000。

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

注意:

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

试题程序:

#include"stdio.h"

#include"math.h"

doublefunx(d

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

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

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

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