南开一百上机改错100题.docx

上传人:b****8 文档编号:11111035 上传时间:2023-02-25 格式:DOCX 页数:79 大小:38.76KB
下载 相关 举报
南开一百上机改错100题.docx_第1页
第1页 / 共79页
南开一百上机改错100题.docx_第2页
第2页 / 共79页
南开一百上机改错100题.docx_第3页
第3页 / 共79页
南开一百上机改错100题.docx_第4页
第4页 / 共79页
南开一百上机改错100题.docx_第5页
第5页 / 共79页
点击查看更多>>
下载资源
资源描述

南开一百上机改错100题.docx

《南开一百上机改错100题.docx》由会员分享,可在线阅读,更多相关《南开一百上机改错100题.docx(79页珍藏版)》请在冰豆网上搜索。

南开一百上机改错100题.docx

南开一百上机改错100题

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

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

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

2、3、5、7、11。

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

注意:

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

#include

#include

IsPrime(intn);

{inti,m;

m=1;

for(i=2;i

if!

(n%i)

{m=0;break;}

return(m);

}

第一处:

IsPrime(intn);改为:

IsPrime(intn)

第二处:

!

(n%i)改为(!

(n%i))

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

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

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

aBCDeFgH,b中的字符串为:

Abcd,则c中的字符串应为:

aBcdeFgH。

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

注意:

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

#include

#include

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

{intk=1;

while(*p!

=*q)

{if(*p<*q)c[k]=*q;

elsec[k]=*p;

if(*p)p++;

if(*q)q++;

k++;

}

}

第一处:

k=1;改为k=0;

第二处:

(*p!

=*q)改为(*p||*q)

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

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

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

注意:

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

#include

#indlude

voidfun(char*s)

{inti,j;

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

=’\0’;i++)

if(s[i]>=’0’&&s[i]!

<=’9’)

s[j]=s[i];

s[j]=”\0”;

}

第一处:

s[j]=s[i];改为s[j++]=s[i];

第二处:

s[j]=”\0”;改为s[j]=’\0’;

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

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

例如,给字符串s输入:

AaaaBBb123CCccccd,则应输出结果:

upper=6,lower=8.

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

注意:

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

#include

#include

Voidfun(char*s,inta,intb)

{

while(*s)

{if(*s>=’A’&&*s<=’Z’)

a++;

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

b++;

s++;

}

}

第一处:

Voidfun(char*s,inta,intb)改为Voidfun(char*s,int*a,int*b)

第二处:

a++;改为(*a)++;

第三处:

b++;改为(*b)++;

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

{for(i=p;i

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

returnn-1;

}

}

第一处:

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

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

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

T=1-1/(2*2)-1/(3*3)-……-1/(m*m)

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

0.536389。

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

注意:

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

#include

#include

doublefun(intm)

{doubley=1.0;

inti;

for(i=2;i

y-=1/(i*i);

return(y);

}

第一处:

for(i=2;i

第二处:

y-=1/(i*i);改为y-=1.0/(i*i);

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

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

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

注意:

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

#include

#defineN20

voidfun(inta[],intn)

{inti,j,t,p;

for(j=0;j

p=j

for(i=j;i

if(a[i]

p=j;

t=a[p];

a[p]=a[i];

a[i]=t;

}

}

第一处:

p=j改为p=j;

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

在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。

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

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

eABCDFGH。

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

注意:

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

#include

fun(char*p)

{charmax,*q;inti=0;

max=p[i];

while(p[i]!

=0)

{if(max

{max=p[i];

p=q+i;

}

i++;

}

while(q

{*q=*(q-1);

q--;

}

a[0]=max;

}

第一处:

fun(char*p)改为voidfun(char*p)

第二处:

p=q+i;改为q=p+i;

第三处:

while(q>p)

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

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

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

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

75.5625)。

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

注意:

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

#include

#imclude

#defimen20

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

{floatave,t=0.0;

intcount=0,k,i;

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

t=s[k];

ave=t/n;

for(i=0;i<n;i++

if(s[i]<ave)count++;

*aver=&ave;

returncount;

}

第一处:

t=s[k];改为t+=s[k];

第二处:

*aver=&ave;改为*aver=ave;

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

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

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

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

99cd99f99。

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

注意:

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

#include

#include

#include

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

{

inti;

char*p,*r,*a;

strcpy(w,s);

while(*w)

{p=w;r=tl;

while(r)

if(*r==*p){r++;p++;}

elsebreak;

if(*r==`\0`)

{a=w;r=t2;

wile(*r){*a=*r;a++;r++;}

w+=strlen(t2);

}

elsew++;

}

}

}

第一处:

intfun(chars,chart1,chart2,charw)改为voidintfun(chars,chart1,chart2,charw)

第二处:

while(r)改为while(*r)

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

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

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

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

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

注意:

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

#include

intfun(char*p)

intn;

n=*p-`o`;

p++;

while(*p!

=0)

{n=n*7+*p-`0`;

p++;

}

returnn;

}

第一处:

n=*p-`o`;改为n=*p-`0`;

第二处:

n=n*7+*p-`0`;改为n=n*8+*p-`0`;

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;

a=NuLL;

while(*s)

{p=s;r=t;

while(*r)

if(r==p){r++;p++}

elsebreak;

if(*r==`\0`)a=s;

s++;

}

returna;

}

第一处:

a=NuLL;改为a=NULL;

第二处:

if(r==p)改为if(*r==*p)

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

根据形参m,计算如下公的值T=1+1/2+1/3+1/4+……+1/m

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

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

注意:

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

#include

#include

doublefun(intm)

{

doublet=1.0;

inti;

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

t+=1.0*/k;

_____

}

第一处:

t+=1.0*/k;改为t+=1.0/i;

第二处:

填returnt;

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

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

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

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

注意:

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

#include

#include

doublefunx(double.x)

{return(2*x*x*x-4*x*x+3*x-6);}

doublefun(doublem,doublen)

{intr;

r=(m+n)/2;

while(fabs(n-m)<0.001)

{if(funx®*funx(n)<0)m=r;

elsen=r;

r=(m+n)/2;

}

returnr;

}

第一处:

intr;改为doubler;

第二处:

while(fabs(n-m)<0.001)改为while(fabs(n-m)>0.001)

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

判断字符ch是否与str所指串中的某个字符相同;若相同,则什么也不做,若不同,则将其插在串的最后。

请改正程序中的错误,使它能进行正确的操作。

注意:

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

#include

#include

#include

voidfun(charstr,charch)

{while(*str&&*str!

=ch)str++;

if(*str==ch)

{str[0]=ch;

str[1]=`0`;

}

}

第一处:

voidfun(charstr,charch)改为voidfun(char*str,charch)

第二处:

if(*str==ch)改为if(*str==’\0’)

第三处:

str[1]=`0`;改为str[1]=’\0’;

16.下列给定程序中的函数Creatlink的功能是:

创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。

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

注意:

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

#include

#include

#include

typedefstructaa

{intdata;

structaa*next;

}node;

node*creatlink(intn,intm)

{nodeh=null,*p,*s;

inti;

s=(node*)malloc(sizeof(node));

h=p;

p->next=null;

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

{s=(node*)malloc(sizeof(node));

s->data=rand()%m;s->next=p->next;

p->next=s;p=p->nest;

}

returnp;

}

outlink(node*h)

{node*p;

p=h->next;

printf(\n\nthelist:

\n\nhead〞);

while(p)

{printf(->%d〞,p->data);

p=p->next;

}

printf(〞\n〞);

}

第一处:

p->next=null;改为p=s;

第二处:

s->data=rand()%m;改为s->data=rand()%(m-1);

第三处:

returnp;改为returnh;

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

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

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

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

注意:

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

#include

#include

intfun(intk)

{intm=o,mc=0,j;

while(k>=2)&&(mc<10))

{

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

{m=m+k;mc++;}

k--;

}

returnm;

------

第一处:

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

第二处:

应加}

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

实现两个整数的交换。

例如给a和b分别输入60和65,输出为:

a=65b=60

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

注意:

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

#include

#include

voidfun(inta,b)

{intt;

t=b;b=aa=t;

}

第一处:

voidfun(inta,b)改为voidfun(int*a,int*b)

第二处:

t=b;b=aa=t;改为t=*b;*b=*a;*a=t;

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

从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。

例如,当s中的数为7654321时,t中的数为642。

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

注意:

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

#include

#include

voidfun(lings,longt)

{longsl=10;

s/=10;

*t=s%10;

while(s<0)

{s=s/100;

t=s%10sl+*t;

sl=sl*10l

}

}

第一处:

voidfun(lings,longt)改为voidfun(lings,long*t)

第二处:

while(s<0)改为while(s>0)

20,N个有序整数数列已婚放在一维数组中,给定下列程序中,函数fun的功能是:

利用折半查找算法查找整数m在数组中的位置。

若找到,则返回其下标值:

反之,则返回-1。

折半查找的基本算法是:

每次查找前先确定数组中待查的范围:

low和high(low

如果m的值大于中章位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。

直到low>high,查找结束。

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

注意:

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

#include

#definen10

voidfun(inta[],intm)

{intlow=0,high=n-1,mid;

while(low<=high)

{mid=(low+high)/2;

if(m

high=mid-1;

elseif(m>=a[mid])

low=mid+1;

elsereturn(mid);

}

return(-1);

}

第一处:

voidfun(inta[],intm)改为intfun(inta[],intm)

第二处:

if(m>=a[mid])改为if(m>a[mid])

21.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。

函数fun的作用是:

求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。

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

注意:

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

#include

#include

#include

typedefstructaa

{intdata;

structaa*next;

}NODE;

fun(NODE*h)

{intmax=-1;

NODE*p;

P=h;

While(p)

{if(p->data>max)

max=p->data;

p=h->next;

}

returnmax;

}

outresult(ints,FILE*pf)

{fprintf(pf,”\nThemaxinlink:

%d\n”,s);}

NODE*creatlink(intn,intm)

{NODE*h,*p,*s,*q;

intI,x;

h=p=(NODE*)malloc(sizeof(NODE));h->data=9999;

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

{s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%m;s->next=p->next;

p->next=s;p=p->next;

}

p->next=NULL;

returnh;

}outlink(NODE*h,FILE*pf)

{NODE*p;

p=h->next;

fprintf(pf,”\nTHELIST:

\n\nHEAD“);

while(p)

{fprintf(pf,”->%d”,p->data);p=p->next;}

fprintf(pf,“\n”);

}

第一处:

fun(NODE*h)改为intfun(NODE*h)

第二处:

p=h->next;改为p=p->next;

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

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

Y=1+1/(2*2)+1/(3*3)+1/(4*4)+……+1/(m*m)请改正程序中的错误,使它能得出正确的结果。

注意:

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

#include

#include

doublefun(intm)

{doubley=1.0;

inti;

for(i=2;i

y+=1/(i*i);

return

}

第一处:

for(i=2;i

第二处:

y+=1/(i*i);改为y+=1.0/(i*i);

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

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

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

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

注意:

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

#include

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

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

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

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