C语言(循环,DEVFORGE学编程社区)

Posted on 2019-09-17 11:36  金色的省略号  阅读(896)  评论(0编辑  收藏  举报

1、级数和

 1 #include <stdio.h>
 2 #include <math.h>
 3 int main()
 4 {
 5     int n = 5,j=1;
 6     double sum = 0;
 7     
 8     scanf("%d",&n);
 9     
10     while(n--)
11     {
12         sum += pow(-1,j-1)*pow(2,j)/((pow(2,j) + pow(-1,j))*(pow(2,j+1)+pow(-1,j+1)));
13         j++;
14     }
15     printf("%f",sum);
16     
17     return 0;
18 }

2、二分求根

 1 #include<stdio.h>
 2 #include<math.h>
 3 #define EPS 1e-6
 4 float Root(float x)
 5 {
 6     return 2*x*x*x - 4*x*x +3*x - 6;
 7 }
 8 int main()
 9 {
10     float min,max,mid;
11     scanf("%f%f",&min,&max);
12  
13     do{
14         mid=(max+min)/2.0;
15         if( Root(mid) > EPS) max = mid;
16         if( Root(mid) < EPS) min = mid;
17     }while(fabs( Root(mid) ) > EPS);
18  
19     printf("%.2f\n",mid);
20  
21     return 0;
22 }

3、你会存钱吗?

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5     double maxMoney = 0;
 6     double temp;
 7     int a1, b1, c1, d1, e1;
 8     for (int a = 0; a <= 2; a++) 
 9     {
10         for (int b = 0; b <= (20-8*a)/5; b++) 
11         {
12             for (int c = 0; c <= (20-8*a-5*b)/3; c++) 
13             {
14                 for (int d = 0; d <= (20-8*a-5*b-3*c)/2; d++) 
15                 {
16                     int e = 20-8*a-5*b-3*c-2*d;
17                     temp = 2000*pow(1+0.0084*12*8, a)
18                         *pow(1+0.0075*12*5, b)
19                         *pow(1+0.0069*12*3, c)
20                         *pow(1+0.0066*12*2, d)
21                         *pow(1+0.0063*12*1, e);
22                     if (maxMoney < temp) {
23                         maxMoney = temp;
24                         a1 = a;
25                         b1 = b;
26                         c1 = c;
27                         d1 = d;
28                         e1 = e;
29                     }
30                 }
31             }
32         }
33     }
34     printf("%d %d %d %d %d\n",a1,b1,c1,d1,e1);
35     printf("%.2f\n",maxMoney);
36     return 0;
37 }

 4、VOL大学乒乓球比赛

 1 #include<stdio.h>
 2 #include<math.h>
 3 
 4 int main()
 5 {
 6     char teamA[] = { 'A','B','C' }; // 把字母映射成012
 7     char teamB[] = { 'X','Y','Z' }; // 把字母映射成012
 8     for (int i = 0; i < 3; i++) // 枚举A的对手
 9         for (int j = 0; j < 3; j++) // 枚举B的对手
10             for (int k = 0; k < 3; k++) // 枚举C的对手
11             {
12                 if (i != 0 && k != 0 && k != 2 // A不与X/C不与X,Z
13                     && i != j && j != k && k != i) // 保证ABC的对手是不同的
14                 {
15                     // 输出方案
16                     printf("%c=%c\n",teamA[0],teamB[i]);
17                     printf("%c=%c\n",teamA[1],teamB[j]);
18                     printf("%c=%c\n",teamA[2] ,teamB[k]);
19                 }
20             }
21     return 0;
22 }

5、整数位数

 1 #include<stdio.h>
 2 #include<math.h>
 3 
 4 int main()
 5 {
 6     double d;
 7     scanf("%lf",&d);
 8     int cnt = 0;
 9     int n = fabs(d);
10     while(n)
11     {
12         n/=10;
13         cnt++;
14     }
15     printf("%d",cnt);    
16     return 0;
17 }

 

 1 #include<stdio.h>
 2 #include<math.h>
 3 #define N 100
 4 int main()
 5 {
 6     char str[N] = "";
 7     char *p = str;
 8     int cnt = 0;
 9     gets(str);
10     while(*p=='-'||*p=='0')
11         p++;
12     while(*p!='.')
13     {
14         if(*p>='0'&&*p<='9')
15             cnt++;
16         p++;
17     }
18     printf("%d",cnt);    
19     return 0;
20 }

 6、两个整数之间所有的素数

 1 #include<stdio.h>
 2 #include<math.h>
 3 int isPrime(int n)
 4 {
 5     for(int i=2; i<n; ++i)
 6         if(n%i == 0)
 7             return 0;
 8     return 1;
 9 }
10 int main()
11 {
12     int a,b;
13     scanf("%d%d",&a,&b);
14     for(int i=a; i<=b; ++i)
15     {
16         if(isPrime(i))
17             printf("%d ",i);
18     }    
19     return 0;
20 }

7、自然数立方的乐趣

 1 #include<stdio.h>
 2 #include<math.h>
 3 #define N 100
 4 int main()
 5 {
 6     int a,i=1,t=i,sum=0,index=0;
 7     int arr[N] = {0};
 8     scanf("%d",&a);
 9     
10     while(sum != a*a*a)
11     {    
12         arr[index++] = i;         
13         sum += i;    
14         i+=2;
15         if(sum > a*a*a)
16         {
17             index = 0;
18             i = t+2;
19             t = i;
20             sum = 0;    
21         }
22     }
23     
24     printf("%d*%d*%d=%d=",a,a,a,a*a*a);
25     for(int j=0; j<index; ++j)
26     {
27         if(j)
28             printf("+");
29         printf("%d",arr[j]);
30     }
31     
32     return 0;
33 }

8、迭代求根

 1 #include<stdio.h>
 2 #include<math.h>
 3 #define EPS 1e-5
 4 int main()
 5 {
 6     double a,x=2,t;
 7     scanf("%lf",&a);
 8     x = a;
 9     
10     do{    
11         t = x;
12         x=(x+a/x)/2;
13     }while(t-x>EPS);
14     
15     printf("%.5f",x);
16     
17     return 0;
18 }

9、多项式的猜想

 1 #include<stdio.h>
 2 #include<math.h>
 3 
 4 int main()
 5 {
 6     int a1,a2,a3,sum,n;
 7     int m[]={100,1000,10000},index = 0;
 8     
 9     while(index<3)
10     {
11         n=2,a1=1,a2=1,sum =2;//赋初值
12         while(sum<m[index])
13         {
14             a3=a2+2*a1;        
15             sum += a3; //累加
16             
17             if(sum>=m[index])//不符合条件break
18                 break;
19             
20             n++;      //符合条件n++
21             a2=a1,a1=a3; //迭代            
22         }
23         printf("%d\n",n);//打印
24         index++; 
25     }
26     
27     return 0;
28 }

10、区间内的素数

 1 #include<stdio.h>
 2  
 3 int isPrime(int n)
 4 {
 5     for(int i=2; i<n; ++i)
 6         if(n%i==0)
 7             return 0;
 8     return 1;
 9 }
10  
11 int main()
12 {
13     int cnt=0, sign=1, sum=0;
14      
15     for(int j=800; j>=500; --j)
16     {
17         if(isPrime(j))
18         {
19             cnt++;
20             sum += j*sign;
21             sign = -sign;
22         }       
23     }
24      
25     printf("%d %d",cnt,sum);
26      
27     return 0;
28 }