上机改错100题Word格式文档下载.docx
《上机改错100题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《上机改错100题Word格式文档下载.docx(66页珍藏版)》请在冰豆网上搜索。
*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函数,不得增行或删行,也不得更改程序的结构!
#indlude<
voidfun(char*s)
{inti,j;
for(i=0,j=0;
s[i]!
=’\0’;
i++)
if(s[i]>
=’0’&
&
<
=’9’)
s[j]=s[i];
s[j]=”\0”;
改为s[j++]=s[i];
改为s[j]=’\0’;
4.下列给定程序中,fun函数的功能是:
分别统计字符串中大写字母和小写字母的人数。
例如,给字符串s输入:
AaaaBBb123CCccccd,则应输出结果:
upper=6,lower=8.
请改正程序中的错误,使它能计算出正确的结果。
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)++;
5.假定整数数列中的数不重复,并存放在数组中。
下列给定程序中,函数fun的功能是:
删除数列中值为x的元素。
N中存放的是数列中元素的个数。
#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;
a[i+1]=a[i];
returnn-1;
改为a[i]=a[i+1];
6.下列给定程序中,函数fun的功能是:
根据整型形参m的值,计算如下公式的值。
T=1-1/(2*2)-1/(3*3)-……-1/(m*m)
例如,若m中的值为5,则应输出:
0.536389。
请改正程序中的错误,使它能得出正确的结果。
doublefun(intm)
{doubley=1.0;
inti;
for(i=2;
i<
m;
y-=1/(i*i);
return(y);
i++)改为for(i=2;
=m;
改为y-=1.0/(i*i);
7.下列给定程序中函数fun的功能是:
用选择法对数组中的n个元素按从小到大的顺序进行排序。
注意:
voidfun(inta[],intn)
{inti,j,t,p;
for(j=0;
j<
n-1;
j++){
p=j
for(i=j;
if(a[i]<
a[p])
p=j;
t=a[p];
a[p]=a[i];
a[i]=t;
p=j改为p=j;
8.下列给定程序中,函数fun的功能是:
在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上;
并将该字符前的原字符向后顺序移动。
例如,调用fun函数之前给字符串输入:
ABCDeFGH,调用后字符串中的内容为:
eABCDFGH。
fun(char*p)
{charmax,*q;
inti=0;
max=p[i];
while(p[i]!
=0)
{if(max<
p[i])
{max=p[i];
p=q+i;
i++;
while(q<
p)
{*q=*(q-1);
q--;
a[0]=max;
fun(char*p)改为voidfun(char*p)
改为q=p+i;
while(q>
9.下列给定程序中,函数fun的功能是:
从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。
例如,若输入8名学生的成绩:
80.5607290.59851.58864则低于平均分的学生人数为4(平均分为:
75.5625)。
请改正程序中的错误,使它能统计出正确的结果。
#include<
comio.h>
#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];
改为*aver=ave;
10.下列给定程序中,函数fun的功能是:
将s所指字符串中出现的t1所指子串全部替换成t2所指子字符串,所形成的新串放在w所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为abcdabfab,t1所指子串中的内容为ab,t2所指子串中的内容为99时,结果,在w所指的数组中的内容应为:
99cd99f99。
intfun(char*s,char*t1,char*t2,char*w)
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;
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。
intfun(char*p)
intn;
n=*p-`o`;
{n=n*7+*p-`0`;
returnn;
改为n=*p-`0`;
n=n*7+*p-`0`;
改为n=n*8+*p-`0`;
12.下列给定程序中函数fun的功能是:
求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;
若未找到,则函数值为NULL。
例如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是:
abcdx。
当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到信息:
notbefound!
。
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++}
if(*r==`\0`)a=s;
returna;
改为a=NULL;
if(r==p)改为if(*r==*p)
13.下列给定程序中,fun函数的功能是:
根据形参m,计算如下公的值T=1+1/2+1/3+1/4+……+1/m
例如,若输入5,则诮输出2.283333。
请改正程序中的错误或在横线处填上适当的内容并把横线删除,使用权它能计算出正确的结果。
doublefun(intm)
doublet=1.0;
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。
math.h〞>
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;
returnr;
intr;
改为doubler;
0.001)改为while(fabs(n-m)>
15.下列给定程序中,函数fun的功能是:
判断字符ch是否与str所指串中的某个字符相同;
若相同,则什么也不做,若不同,则将其插在串的最后。
请改正程序中的错误,使它能进行正确的操作。
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’;
16.下列给定程序中的函数Creatlink的功能是:
创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
请改正函数Creatlink中的错误,使它能得出正确的结果。
stdlib.h>
typedefstructaa
{intdata;
structaa*next;
}node;
node*creatlink(intn,intm)
{nodeh=null,*p,*s;
s=(node*)malloc(sizeof(node));
h=p;
p->
next=null;
for(i=1;
=n;
{s=(node*)malloc(sizeof(node));
s->
data=rand()%m;
s->
next=p->
next;
next=s;
p=p->
nest;
returnp;
outlink(node*h)
{node*p;
p=h->
printf(\n\nthelist:
\n\nhead〞);
while(p)
{printf(->
%d〞,p->
data);
p=p->
printf(〞\n〞);
改为p=s;
改为s->
data=rand()%(m-1);
改为returnh;
17.下列给定程序中,函数fun的功能是:
计算并输出k以内最大的10个能被13或17整除的自然数之和。
K的值由主函数传入,若k的值为500,则函数值为4622。
请改正程序中的错误,使程序能输出正确的结果。
conio,h>
stdio,h>
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
voidfun(inta,b)
{intt;
t=b;
b=aa=t;
voidfun(inta,b)改为voidfun(int*a,int*b)
改为t=*b;
*b=*a;
*a=t;
19.下列给定程序中函数fun的功能是:
从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
例如,当s中的数为7654321时,t中的数为642。
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)
0)改为while(s>
20,N个有序整数数列已婚放在一维数组中,给定下列程序中,函数fun的功能是:
利用折半查找算法查找整数m在数组中的位置。
若找到,则返回其下标值:
反之,则返回-1。
折半查找的基本算法是:
每次查找前先确定数组中待查的范围:
low和high(low<
high),然后把m与中间位置(mid)中元素的值进行比较。
如果m的值大于中章位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;
反之,下一次的查找范围落在中间位置之前的元素中。
直到low>
high,查找结束。
#definen10
voidfun(inta[],intm)
{intlow=0,high=n-1,mid;
while(low<
=high)
{mid=(low+high)/2;
if(m<
a[mid])
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>
21.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。
函数fun的作用是:
求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正函数fun中的错误,使它能得出正确的结果。
typedefstructaa
{intdata;
structaa*next;
}NODE;
fun(NODE*h)
{intmax=-1;
NODE*p;
P=h;
While(p)
{if(p->
data>
max)
max=p->
data;
}
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;
{s=(NODE*)malloc(sizeof(NODE));
s->
next=NULL;
returnh;
}outlink(NODE*h,FILE*pf)
{NODE*p;
fprintf(pf,”\nTHELIST:
\n\nHEAD“);
while(p)
{fprintf(pf,”->
%d”,p->
fprintf(pf,“\n”);
fun(NODE*h)改为intfun(NODE*h)
改为p=p->
22.下列给定程序中,函数fun的功能是:
根据整型形参m,计算如下公式的值。
Y=1+1/(2*2)+1/(3*3)+1/(4*4)+……+1/(m*m)请改正程序中的错误,使它能得出正确的结果。
doublefun(intm)
y+=1/(i*i);
return
i++)改为for(i=2;
改为y+=1.0/(i*i);
23.下列给定程序中,函数fun的功能是:
按以下递归公式求函数值。
例如,当给n输入5时,函数值为18;
当给n输入3时,函数值为14。
不要改动main函数,不得增行或删行,也不得更改程序的结构
fun