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(mhigh=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;iy+=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
fun