C语言:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。-使字符串的前导*号不得多于n个,若多余n个,则删除多余的*号,

时间:2022-01-09 07:15:28

//fun函数:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。

 #include <stdio.h>
void fun( char *p )
{ char max,*q; int i=;
max=p[i];
while( p[i]!= )
{ if( max<p[i] )
{ max=p[i];
/**********found**********/
q = p + i;//先找到最大值,记录最大值的位置。
}
i++;
}
/**********found**********/
while(q>p )
{ *q=*(q-);//进行顺序后移。
q--;
}
p[]=max;
}
void main()
{ char str[];
printf("Enter a string: "); gets(str);
printf("\nThe original string: "); puts(str);
fun(str);
printf("\nThe string after moving: "); puts(str); printf("\n\n");
}

//fun函数:根据一下公式求圆周率值,并作为函数返回值。Π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...

 #include <math.h>
#include <stdio.h>
double fun(double eps)
{ double s,t; int n=;
s=0.0;
/************found************/
t=1.0;
while( t>eps)
{ s+=t;
t=t * n/(*n+);
n++;
}
/************found************/
return (s*);
}
void main()
{ double x;
printf("\nPlease enter a precision: "); scanf("%lf",&x);
printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));
}

//规定输入的字符串中只包含字母和*号,fun函数:使字符串的前导*号不得多于n个,若多余n个,则删除多余的*号,若少于或等于n个,则不做处理,字符串尾部和中间的*号不删除。

 #include <stdio.h>
void fun( char *a, int n )
{
char *b;
b = a;
int i = ;
while (!('A' <= *b&&*b <= 'Z'))
{
//printf("%c\n", *b);
b++;
i++;
}
if (i > n)
{
a = a + n;//注意位置不在while里面
while (*b != '\0')
{
*a = *b;
a++;
b++;
}
*a = '\0';
}
} void main()
{ char s[]; int n;void NONO ();
printf("Enter a string:\n");gets(s);
printf("Enter n : ");scanf("%d",&n);
fun( s,n );
printf("The string after deleted:\n");puts(s);
NONO();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out ;
int i, n ; char s[] ;
in = fopen("in.dat","r") ;
out = fopen("out.dat","w") ;
for(i = ; i < ; i++) {
fscanf(in, "%s", s) ;
fscanf(in, "%d", &n) ;
fun(s,n) ;
fprintf(out, "%s\n", s) ;
}
fclose(in) ;
fclose(out) ;
}

//使用数组完成:

    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';
   }   
}