改错题 下列给定程序中,函数fun的功能是:根据整型形参n,计算如下公式的值。
A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=1/(1+A(n-1))
例如,若n=10,则应输出0.617977。
请改正程序中的锴误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
/**********found**********/
int fun(int n)
{
float A=1;int i;
/**********found**********/
for(i=2;i<n;i++)
A=1.0/(1+A);
return A;
}
void main()
{
int n;
system('CLS');
printf('\nPlease enter n:');
scanf('%d',n);
printf('A%d=%lf\n',n,fun(n));
}
改错题 给定程序中fun函数的功能是:求s=aa...aa-...-aaa-aa-a(此处aa...aa表示n个a,a和n的值在1至9之间)。
例如a=3,n=6,则以上表达式为:s=333333-33333-3333-333-33-3,其值是:296298。
a和n是fun函数的形参,表达式的值作为函数值传回main函数。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
long fun (int a,int n)
{ int j;
/**********found**********/
long s=0,t=1;
for(j=0;j<n;j++)
t=t*10+a;
s=t;
for(j=1;j<n;j++){
/**********found**********/
t=t%10;
s=s-t;
}
return(s);
}
main()
{ int a,n;
printf('\nPlease enter a and n:');
scanf('%d%d', a, n);
printf('The value of function is:%ld\n', fun(a.n));
}
改错题给定程序MODI1.C中fun函数的功能:求出以下分数序列的前n项之和。和值通过函数值返回main函数。例如,若n=5,则应输出8.391667。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序如下:#includestdio.h/**************found**************/fun(intn){inta=2,b=1,c,k;doubles=0.0;for(k=1;k=n;k++){s=s+1.0*a/b;/**************found**************/c=a;a+=b;b+=c;}return(s);}main(){intn=5;printf('\nThevalueoffunctionis:%lf\n',fun(n));}
改错题
给定程序MODI1.c中函数fun的功能:将十进制正整数m转换成k(2≤k≤9)进制数,并按高位到低位顺序输出。
例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
请改正fun函数中的错误,使它能得出正确的结果。
注意:不要改动main函数。不得谱行或删行,也不得更改程序的结构!
给定源程序如下:
#include conio.h
#include stdio.h
void fun( int m, int k )
{
int aa[20], i;
for( i = 0; m; i++ )
{
/**********found**********/
aa[i] = m/k;
m /= k;
}
for( ; i; i-- )
/**********found**********/
printf( '%d', aa[ i ] );
}
main()
{
int b, n;
printf( '\nPlease enter a number and a base:\n' );
scanf( '%d %d', n, b );
fun( n, b );
printf('\n');
}
改错题 给定程序中函数fun的功能是:由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。
例如,n=8时,输入:193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763。
所得平均值为:195.838750,在平均值以上的实数个数应为:5。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
int fun(double x[],int n)
{
/************found************/
int j,c=0,double xa=0.0;
for(j=0;j<n;j++)
xa+=x[j]/n;
printf('ave=%f\n',xa);
for(j=0;j<n;j++)
/************found************/
if(x[j]=>xa)
c++;
return c;
}
main()
{double x[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};
printf('%d\n',fun(x,8));
}
改错题 下列给定程序中,函数fun的功能是:将n个无序整数从小到大排序。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<onio.h>
#include<stdio.h>
#include<stdlib.h>
fun(int n, int *a)
{
int i, j, p, t;
for(j=0; j<n-1; j++)
{
p=j;
/**********found**********/
for(i=j+1; i<n-1; i++)
if(a[p]>a[i])
/**********found**********/
t=i;
if(p!=j)
{t=a[j]; a[j]=a[p];a[p]=t;}
}
}
putarr{int n, int *z)
{
int i;
for(i=1; i<=n; i++, z++)
{
printf('%4d', *z);
if(!(i%10))printf('\n');
}
printf('\n');
}
void main()
{
int aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11;
system('CLS');
printf('\nBefore sorting %d numbers:\n', n);
putarr(n, aa);
fun(n, aa);
printf('\nAfter sorting %d numbers:\n', n);
putarr(n, aa);
}
改错题 下列给定程序中,函数fun的功能是:从整数10~55,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中a1放个位数,a2放十位数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
int fun(int *b)
{int k,a1,a2,i=0;
for(k=10;k<=55;k++)
{
/*****************found*****************/
a2=k/10;
a1=k-a2*10;
if((k%3==0a2==5)||(k%3==0
a1==5))
{
b[i]=k;i++;
}
}
/*****************found*****************/
return k;
}
main()
{int a[100],k,m;
m=fun(a);
printf('The result is:\n');
for(k=0;k<m;k++)
printf('%4d',a[k]);
printf('\n');
}
改错题
给定程序MODI1.c中函数fun的功能:根据输入的三个边长(整型值),判断能否构成三角形;构成的是等边三角形,还是等腰三角形。若能构成等边三角形,则函数返回3;若能构成等腰三角形,则函数返回2;若能构成一般三角形,则函数返回1,若不能构成三角形,则函数返回0。
请改正函数fun中指定位置的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
#include math.h
/**************found**************/
void fun(int a,int b,int c)
{ if(a+bc b+ca a+cb) {
if(a==b b==c)
return 3;
else if(a==b||b==c||a==c)
return 2;
/**************found**************/
else retrun 1
}
else return 0;
}
main()
{ int a,b,c,shape;
printf('\nInput a,b,c: '); scanf('%d%d%d',a,b,c);
printf('\na=%d, b=%d, c=%d\n',a,b,c);
shape =fun(a,b,c);
printf('\n\nThe shape : %d\n',shape);
}
改错题 下列给定的程序中,函数proc()的功能是:用选择法对数组中的m个元素按从小到大的顺序进行排序。
例如,排序前的数据为:11 32 -5 2 14
则排序后的数据为:-5 2 11 14 32
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
# include <stdio.h>
# define M 20
void proc(int a[],int n)
{
int i,j,t,p;
//****found****
for(j=0;j<n-1;j++);
{
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p])
p=i;
t=a[p];
a[p]=a[j];
//****found****
a[p]=t;
}
}
void main()
{
int arr[M]={11,32,-5,2,14},i,m=5;
printf('排序前的数据:');
for(i=0;i<m;i++)
printf('%d',arr[i]);
printf('\n');
proc(arr,m);
printf('排序后的顺序:');
for(i=0;i<m;i++)
printf('%d',arr[i]);
printf('\n');
}
改错题 下列给定的程序中,函数proc()的功能是:将str所指字符串中出现的t1所指字符串全部替换成t2所指字符串,将所形成的新的字符串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。
例如,当str所指字符串中所指的内容为“abcdabcdefg”,t1所指字符串中的内容为“be”,t2所指字符串中的内容为“11”时,结果在w所指数组中的内容应为“a11dalldefg”。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
//****found****
int proc(char *str,char *t1,char *t2,char*w)
{
char*p,*r,*a;
strcpy(w,str);
while(*w)
{
p=w;r=t1;
//****found****
while(r)
if(*r==*p){r++;p++;}
else break;
if(*r=='\0')
{
=w;r=t2;
//****found****
while(*r){*a=*r;a++;r++}
w+=strlen(t2);
}
else w++;
}
}
void main()
{
char str[100],t1[100],t2[100],w[100];
system('CLS');
printf('\nPlease enter string str:');
scanf('%s',str);
printf('\nPlease enter substring t1:');
scanf('%s',t1);
printf('\nPlease enter substring t2:');
scanf('%s',t2);
if(strlen(t1)==strlen(t2))
{
proc(str,t1,t2,w);
printf('\nThe result is:%s\n',w);
}
else printf('Error: strlen(t2)\n');
}
改错题 下列给定程序中,函数proc()的功能是:用递归算法计算Fibonacci级数序列中第n项的值。从第一项起,Fibonacci级数序列为1,1,2,3,5,8,13,21,…。
例如,若给n输入8,该项的Fibonacci级数值为21。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
long proc(int g)
{
//****found****
switch(g);
{
case 0:return 0;
//****found****
case 1;case 2:return 1;
}
return(proc(g-1)+proc(g-2));
}
void main()
{
long fib;int n;
printf('Input n:');scanf('%d',n);
printf('n=%d\n',n);
fib=proc(n);
printf('fib=%d\n\n',fib);
}
改错题 下列给定程序中,函数fun的功能是:给一维数组a输入任意4个整数,并按如下的规律输出。例如,输入1、2、3、4,程序运行后输出以下方阵:
4 1 2 3
3 4 1 2
2 3 4 1
1 2 3 4
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define M 4
/**********found**********/
void fun(int a)
{
int i,j,k,m;
printf('Enter 4 number:');
for(i=0;i<M;i++)
scanf('%d',a[i]);
printf('\n\nThe result:\n\n');
for(i=M;=i>0;i--)
{
k=a[M-1];
for(j=M-1;j>0;j--)
/**********found**********/
a[j]=a[j+1];
a[0]=k;
for(m=0;m<M;m++)
printf('%d',a[m]);
printf('\n');
}
}
void main()
{
int a[M];
fun(a);
printf('\n\n');
}
改错题下列给定程序中函数fun的功能是:用递归算法求形参a的平方根。求平方根的迭代公式如下:例如,a为2时,平方根值为1.414214。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<math.h>#include<stdio.h>/**********found**********/fun(doublea,doublex0){doublex1,y;x1=(x0+a/x0)/2.0;/**********found**********/if(fabs(x1-x0)<0.00001)y=fun(a,x1);elsey=x1;returny;}voidmain(){doublex;printf('Enterx:');scanf('%lf',x);printf('Thesquarerootof%lfis%lf\n',x,fun(x,1,0));}
改错题
给定程序MODI1.C中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把S所指串中的字符按正序连接到t所指串的后面。
例如:当s所指的字符串为:“ABCDE”时,则t所指的字符串应为:“EDCBAABCDE”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#inelude<string.h>
void fun(char *s, char *t)
{
/**********found**********/
int i;
i=0;
s1=strlen(s);
for(;i<s1; i++)
/**********found**********/
t[i]=s[s1-i];
for(i=0; i<s1; i++)
t[s1+i]=s[i];
t[2*s1]='\0';
}
main()
{ char s[100], t[100];
printf('\nPlease enter string s:'); scanf('%s', s);
fun(s, t);
printf('The result is:%s\n', t);
}
改错题下列给定程序中,函数fun的功能是:根据整数形参m的值,计算如下公式的值。例如,若m中的值为5,则应输出0.536389。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>doublefun(intm){doubley=1.0;inti;/********found********/for(i=2;i<m;i++)/********found********/y-=1/(i*i);return(y);}main(){intn=5;printf('\nTheresultis%lf\n',fun(n));}
改错题 下列给定程序中,函数fun的功能是:求出s所指字符串中最后一次出现的t所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
例如,当字符串中的内容为“abcdabfabcdx”,t中内容为“ab”时,输出结果应是“abcdx”。
当字符串中的内容为“abcdabfabcdx”,t中内容为“abd”时,则程序输出未找到信息“Notfound!”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
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++;
}
return a;
}
void main()
{
char s[100],t[100],*p;
system('CLS');
printf('\nPlease enter string S:');
scanf('%s',s);
printf('\nPlease enter substring t:');
scanf('%s',t);
p=fun(s,t);
if(p)
printf('\nThe result is:%s\n',p);
else
printf('\nNot found!\n');
}
改错题
给定程序MODI1.c中函数fun的功能:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
void fun (long s, long *t)
{ int d;
long sl=1;
/************found************/
t = 0;
while ( s 0)
{ d = s%10;
/************found************/
if (d%2 == 0)
{ *t = d * sl + *t;
sl *= 10;
}
s /= 10;
}
}
main()
{ long s, t;
printf('\nPlease enter s:'); scanf('%ld', s);
fun(s, t);
printf('The result is: %ld\n', t);
}
改错题 下列给定程序中,函数fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同,若相同,什么也不做;若不同,则将其插在串的最后。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#include <string.h>
/********found********/
void fun(char str,char ch)
{while(*str *str!=ch)str++;
/********found********/
if(*str==ch)
{str[0]=ch;
/********found********/
str[1]='0';
}
}
main()
{char s[81],c;
printf('\nPlease enter a string:\,n');gets(s);
printf('\n Please enter the character to search:');
c=getchar();
fun(s,c);
printf('\nThe result is %s\n',s);
}
改错题
给定程序MODI1.c中函数fun的功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。
请改正函数fun中的错误或在横线处填上适当的内容,并把横线删除,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序如下:
#include stdio.h
void fun()
{
int a[3][3],sum;
int i,j;
/*********found**********/
______;
printf('Input data:');
for (i=0;i3;i++)
{ for (j=0;j3;j++)
/*********found**********/
scanf('%d',a[i][j]);
}
for (i=0;i3;i++)
sum=sum+a[i][i];
printf('Sum=%d\n',sum);
}
main()
{
fun();
}
改错题 给定程序中函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。
例如,当x的值为9、y的值为11、z的值为15时,函数值为-3.50。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
给定源程序:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
/**********found**********/
#define FU(m,n)(m/n)
float fun(float a,float b,float c)
{ float value;
value=FU(a+b,a-b)+FU(c+b,c-b);
/**********found**********/
Return(Value);
}
main()
{ float x,y,z,sum;
printf('Input x y z:');
scanf('%f%f%f',x,y,z);
printf('x=%f,y=%f,z=%f\n',x,y,z);
if(x==y||y==z){printf('Data error!\n');exit(0);}
sum=fun(x,y,z);
printf('The result is:%5.2f\n',sum);
}