第12次上机 程序改错
第1题 【程序改错】
-------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数 返回二分之一的圆面积。
例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include
/**********FOUND**********/
double fun( r) double fun(double r) {
double s;
/**********FOUND**********/
s=1/2*3.14159* r * r; s=1.0/2*3.14159*r*r; /**********FOUND**********/ return r; return s; } main() {
float x;
printf ( \ scanf ( \
printf (\}
第2题 【程序改错】
功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的 字符按正序连接到t串的后面。
例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为: “EDCBAABCDE”。
------------------------------------------------------*/ #include
/**********FOUND**********/ int i; int sl,i; sl = strlen(s); for (i=0; i /**********FOUND**********/ word文档 可自由复制编辑 t[i] = s[sl-i]; t[i]=s[sl]; for (i=0; i t[sl+i] = s[i]; t[sl+i]=s[sl-i-1]; /**********FOUND**********/ t[2*sl] = \’0\\’ ; } main() { char s[100], t[100]; printf(\ fun(s, t); printf(\} 第3题 【程序改错】 功能:求出以下分数序列的前n项之和。和值通过函数值返回main 函数。 2/1+3/2+5/3+8/5+13/8+21/13 ?? 例如:若n = 5,则应输出:8.391667。 ------------------------------------------------------*/ #include /**********FOUND**********/ fun ( int n ) double fun(int n) { int a, b, c, k; double s; 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**********/ return c; return s; } main( ) { int n = 5; printf( \} 第4题 【程序改错】 -------------------------------------------------------- word文档 可自由复制编辑 功能:以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的 最大的n。 ------------------------------------------------------*/ #include int n,s; /**********FOUND**********/ s==n=0; s=0,n=0; /**********FOUND**********/ while(s>1000) while(s<=1000) { ++n; s+=n*n; } /**********FOUND**********/ printf(\ } 第5题 【程序改错】 -------------------------------------------------------- 功能:利用二维数组输出如图所示的图形。 ******* ***** *** * *** ***** ******* ------------------------------------------------------*/ #include /**********FOUND**********/ #define N= 7 #define N 7 main() { char a[N][N]; int i,j,z; for(i=0;i /**********FOUND**********/ word文档 可自由复制编辑 a[i][j]=; a[i][j]=’ ’; z=0; for(i=0;i<(N+1)/2;i++) { for(j=z;j /**********FOUND**********/ z=0; for(i=(N+1)/2;i z=z-1; z--; for(j=z;j for(i=0;i for(j=0;j /**********FOUND**********/ printf(\ printf(\ } } 第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 void fun ( int * a, int n ) { int k,m1,m2,max1,max2,t; max1=max2= -32768; m1=m2=0; for ( k = 0; k < n; k++ ) if ( a[k]>max1 ) { max2 = max1; m2 = m1; max1 = a[k]; m1 = k; } word文档 可自由复制编辑 /**********FOUND**********/ else if( a[k]>max1 ) else if( 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( ) { int b[N]={7,10,12,0,3,6,9,11,5,8}, n=10, i; for ( i = 0; i for ( i=0; i -------------------------------------------------------- 功能:根据以下公式求π值,并作为函数值返回。 例如:给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。 π 1 1 2 1 2 3 1 2 3 4 — = 1 + — + — x — + — x — x — + — x — x — x — + ... 2 3 3 5 3 5 7 3 5 7 9 ------------------------------------------------------*/ #include double s,t; int n=1; s=0.0; t=1; /**********FOUND**********/ while(t<=eps) { word文档 可自由复制编辑