C语言:根据以下公式计算s,s=1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n) -在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,

//根据一下公式计算s,并将计算结果作为函数返回值,n通过形参传入。s=1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n)

 1 #include <stdio.h>
 2 
 3 float fun(int  n)
 4 {
 5     float s=1.0;
 6     int x=0;
 7     for (int i = 2; i <= n; i++)
 8     {
 9         for (int j = i; j > 0; j--)
10         {
11             x += j;
12         }
13         s += 1 / (float)x;
14         x = 0;//切记x归零。
15     }
16     return s;
17 }
18 
19 void main()
20 {  int n; float s;22    printf("\nPlease enter N:"); scanf("%d", &n);
23    s = fun(n);
24    printf("the result is: %f\n", s);26 }

//另一种方法:

 1 float fun(int  n)
 2 {
 3     float s=0.0;
 4     int x=0;
 5     for (int i = 1; i <= n; i++)//i初始值为1
 6     {
 7         x += i;
 8         s += 1 / (float)x;
 9     }
10     return s;
11 }

//使用递归解决

 1 float fun(int  n)
 2 {
 3     float m = 0;
 4     if (n == 1) return 1.0;
 5     for (int i = 1; i <= n; i++)
 6     {
 7         m += i;
 8     }
 9     return 1 / m + fun(n - 1);
10 }

//在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,找不到相同字符则不做处理。

 1 #include    <stdio.h>
 2 void fun(char  *s, char  c)
 3 {  int  i, j, n;
 4 /**********found**********/
 5   for(i=0; s[i]!='\0'; i++)
 6      if(s[i]==c)
 7      {
 8 /**********found**********/
 9         n=0;
10         while(s[i+1+n]!='\0')  n++;//计算之后字符串的长度
11         for(j=i+n+1; j>i; j--)  s[j+1]=s[j];//依次赋值给下一个元素,也就是元素后移一位。
12 /**********found**********/
13         s[j+1]=c;
14         i=i+1;
15      }
16 }
17 void main()
18 {  char  s[80]="baacda", c;
19    printf("\nThe string:  %s\n",s);
20    printf("\nInput a character:  ");  scanf("%c",&c);
21    fun(s,c);
22    printf("\nThe result is:  %s\n",s);
23 }

 

posted @ 2019-03-13 12:09  小大大小  阅读(16971)  评论(0编辑  收藏  举报