//fun函数:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
1 #include2 void fun( char *p ) 3 { char max,*q; int i=0; 4 max=p[i]; 5 while( p[i]!=0 ) 6 { if( max 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("\nThe original string: "); puts(str);24 fun(str);25 printf("\nThe string after moving: "); puts(str); printf("\n\n");26 }
//fun函数:根据一下公式求圆周率值,并作为函数返回值。Π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...
1 #include2 #include 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("\nPlease enter a precision: "); scanf("%lf",&x);19 printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));20 }
//规定输入的字符串中只包含字母和*号,fun函数:使字符串的前导*号不得多于n个,若多余n个,则删除多余的*号,若少于或等于n个,则不做处理,字符串尾部和中间的*号不删除。
1 #include2 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\n", *b);10 b++;11 i++;12 }13 if (i > n)14 {15 a = a + n;//注意位置不在while里面16 while (*b != '\0')17 {18 *a = *b;19 a++;20 b++;21 }22 *a = '\0'; 23 }24 }25 26 void main()27 { char s[81]; int n;void NONO ();28 printf("Enter a string:\n");gets(s);29 printf("Enter n : ");scanf("%d",&n);30 fun( s,n );31 printf("The string after deleted:\n");puts(s);32 NONO();33 }34 void NONO ()35 { /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */36 FILE *in, *out ;37 int i, n ; char s[81] ;38 in = fopen("in.dat","r") ;39 out = fopen("out.dat","w") ;40 for(i = 0 ; i < 10 ; i++) {41 fscanf(in, "%s", s) ;42 fscanf(in, "%d", &n) ;43 fun(s,n) ;44 fprintf(out, "%s\n", s) ; 45 }46 fclose(in) ;47 fclose(out) ;48 }
//使用数组完成:
void fun( char *a, int n ) { char b[81]; int z = 0; while (*a != '\0') { b[z] = *a ; z++; a++; } a = a - z;//指针位置返还 b[z] = '\0';//标记结束 int i = 0; while (!(b[i]>='A'&&b[i] <= 'Z')) { i++; } if (i > n) { a = a + n; while (b[i]!='\0') { *a = b[i]; //printf("%c\n", *a); a++; i++; } *a ='\0'; } }