C语言程序改错题.docx
《C语言程序改错题.docx》由会员分享,可在线阅读,更多相关《C语言程序改错题.docx(9页珍藏版)》请在冰豆网上搜索。
C语言程序改错题
第12次上机程序改错
第1题
【程序改错】
--------------------------------------------------------
功能:
求二分之一的圆面积,函数通过形参得到圆的半径,函数
返回二分之一的圆面积。
例如:
输入圆的半径值:
19.527输出为:
s=598.950017。
------------------------------------------------------*/
#include
#include
/**********FOUND**********/
doublefun(r)doublefun(doubler)
{
doubles;
/**********FOUND**********/
s=1/2*3.14159*r*r;s=1.0/2*3.14159*r*r;
/**********FOUND**********/
returnr;returns;
}
main()
{
floatx;
printf("Enterx:
");
scanf("%f",&x);
printf("s=%f\n",fun(x));
}
第2题【程序改错】
功能:
先将在字符串s中的字符按逆序存放到t串中,然后把s中的
字符按正序连接到t串的后面。
例如:
当s中的字符串为:
“ABCDE”时,则t中的字符串应为:
“EDCBAABCDE”。
------------------------------------------------------*/
#include
#include
#include
voidfun(char*s,char*t)
{
/**********FOUND**********/
inti;intsl,i;
sl=strlen(s);
for(i=0;i/**********FOUND**********/
t[i]=s[sl-i];t[i]=s[sl];
for(i=0;it[sl+i]=s[i];t[sl+i]=s[sl-i-1];
/**********FOUND**********/
t[2*sl]="0";t[2*sl]=’0\’ ;
}
main()
{
chars[100],t[100];
printf("\nPleaseenterstrings:
");scanf("%s",s);
fun(s,t);
printf("Theresultis:
%s\n",t);
}
第3题【程序改错】
功能:
求出以下分数序列的前n项之和。
和值通过函数值返回main
函数。
2/1+3/2+5/3+8/5+13/8+21/13……
例如:
若n=5,则应输出:
8.391667。
------------------------------------------------------*/
#include
#include
/**********FOUND**********/
fun(intn)doublefun(intn)
{
inta,b,c,k;doubles;
s=0.0;a=2;b=1;
for(k=1;k<=n;k++)
{
/**********FOUND**********/
s=(double)a/b;s=s+(double)a/b;
c=a;
a=a+b;
b=c;
}
/**********FOUND**********/
returnc;returns;
}
main()
{
intn=5;
printf("\nThevalueoffunctionis:
%lf\n",fun(n));
}
第4题【程序改错】
--------------------------------------------------------
功能:
以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的
最大的n。
------------------------------------------------------*/
#include
#include"string.h"
main()
{
intn,s;
/**********FOUND**********/
s==n=0;s=0,n=0;
/**********FOUND**********/
while(s>1000)while(s<=1000)
{
++n;
s+=n*n;
}
/**********FOUND**********/
printf("n=%d\n",&n-1);printf("n=%d\n",n-1);
}
第5题
【程序改错】
--------------------------------------------------------
功能:
利用二维数组输出如图所示的图形。
*******
*****
***
*
***
*****
*******
------------------------------------------------------*/
#include
#include
/**********FOUND**********/
#defineN=7#defineN7
main()
{
chara[N][N];
inti,j,z;
for(i=0;ifor(j=0;j/**********FOUND**********/
a[i][j]=;a[i][j]=’’;
z=0;
for(i=0;i<(N+1)/2;i++)
{
for(j=z;ja[i][j]='*';
z=z+1;
}
/**********FOUND**********/
z=0;
for(i=(N+1)/2;i{
z=z-1;z--;
for(j=z;ja[i][j]='*';
}
for(i=0;i{
for(j=0;j/**********FOUND**********/
printf("%d",a[i][j]);printf("%c",a[i][j]);
printf("\n");
}
}
第6题【程序改错】
--------------------------------------------------------
功能:
求出a所指数组中最大数和次最大数(规定最大数和次最大
数不在a[0]和a[1]中),依次和a[0]、a[1]中的数对调。
例如:
数组中原有的数:
7、10、12、0、3、6、9、11、5、8,
输出的结果为:
12、11、7、0、3、6、9、10、5、8。
------------------------------------------------------*/
#include
#include
#defineN20
voidfun(int*a,intn)
{
intk,m1,m2,max1,max2,t;
max1=max2=-32768;m1=m2=0;
for(k=0;kif(a[k]>max1)
{
max2=max1;m2=m1;
max1=a[k];m1=k;
}
/**********FOUND**********/
elseif(a[k]>max1)elseif(a[k]>max2)
{
max2=a[k];m2=k;}
/**********FOUND**********/
t=a[0];
a[m1]=a[0];a[0]=a[m1];
a[m1]=t;
/**********FOUND**********/
t=a[1];
a[m2]=a[1];a[1]=a[m2]
a[m2]=t;
}
main()
{
intb[N]={7,10,12,0,3,6,9,11,5,8},n=10,i;
for(i=0;iprintf("%d",b[i]);
printf("\n");
fun(b,n);
for(i=0;iprintf("%d",b[i]);
printf("\n");
}
第7题
【程序改错】
--------------------------------------------------------
功能:
根据以下公式求π值,并作为函数值返回。
例如:
给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。
π1121231234
—=1+—+—x—+—x—x—+—x—x—x—+...
23353573579
------------------------------------------------------*/
#include
doublefun(doubleeps)
{
doubles,t;
intn=1;
s=0.0;
t=1;
/**********FOUND**********/
while(t<=eps)
{
s+=t;
/**********FOUND**********/
t=n/(2*n+1)*t;
n++;
}
/**********FOUND**********/
returns;
}
main()
{
doublex;
scanf("%lf",&x);
printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));
}
第8题【程序改错】