//fun函数:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
1 #include <stdio.h> 2 void fun( char *p ) 3 { char max,*q; int i=0; 4 max=p[i]; 5 while( p[i]!=0 ) 6 { if( max<p[i] ) 7 { max=p[i]; 8 /**********found**********/ 9 q = p + i;//先找到最大值,记录最大值的位置。 10 } 11 i++; 12 } 13 /**********found**********/ 14 while(q>p ) 15 { *q=*(q-1);//进行顺序后移。 16 q--; 17 } 18 p[0]=max; 19 } 20 void main() 21 { char str[80]; 22 printf("Enter a string: "); gets(str); 23 printf(" The original string: "); puts(str); 24 fun(str); 25 printf(" The string after moving: "); puts(str); printf(" "); 26 }
//fun函数:根据一下公式求圆周率值,并作为函数返回值。Π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...
1 #include <math.h> 2 #include <stdio.h> 3 double fun(double eps) 4 { double s,t; int n=1; 5 s=0.0; 6 /************found************/ 7 t=1.0; 8 while( t>eps) 9 { s+=t; 10 t=t * n/(2*n+1); 11 n++; 12 } 13 /************found************/ 14 return (s*2); 15 } 16 void main() 17 { double x; 18 printf(" Please enter a precision: "); scanf("%lf",&x); 19 printf(" eps=%lf, Pi=%lf ",x,fun(x)); 20 }
//规定输入的字符串中只包含字母和*号,fun函数:使字符串的前导*号不得多于n个,若多余n个,则删除多余的*号,若少于或等于n个,则不做处理,字符串尾部和中间的*号不删除。
1 #include <stdio.h> 2 void fun( char *a, int n ) 3 { 4 char *b; 5 b = a; 6 int i = 0; 7 while (!('A' <= *b&&*b <= 'Z')) 8 { 9 //printf("%c ", *b); 10 b++; 11 i++; 12 } 13 if (i > n) 14 { 15 a = a + n;//注意位置不在while里面 16 while (*b != '