小粉书第2章

Posted meng2ya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小粉书第2章相关的知识,希望对你有一定的参考价值。

例题 2-3 近似计算

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int t=1,n=1;
 5     double term,sum=0;
 6     do{
 7         term = 1.0/n;
 8         sum += term*t;
 9         n += 2;
10         t = -t;
11     }while(term > 1e-6);
12     printf("%.6f
",sum);
13 
14 }

 

例题 2-1 水仙花数

#include<stdio.h>
int main()
{
    for(int i=100; i<=999; ++i){
        int a = i/100, b = i/10%10, c = i%10;
        if(i == a*a*a + b*b*b + c*c*c)
            printf("%d ",i);
    }
    return 0;
}

 

例题 2-2 韩信点兵

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b,c,cnt=1,flag=1;
 5     while(scanf("%d%d%d",&a,&b,&c)!=EOF){
 6         for(int i=10; i<=100; ++i)
 7             if(i%3==a && i%5==b && i%7==c){
 8                 printf("Case %d:%d
",cnt++,i);
 9                 flag=0;
10                 break;
11             }
12         if(flag)
13             printf("Case %d: No answer
",cnt++);
14         flag = !flag;
15     }
16     return 0;
17 }

 

例题 2-3 倒三角形

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,t;  
 5     scanf("%d",&n);
 6     t=n;    //  将n的值复制给t 
 7     for(int i=0; i<n; ++i){     // 找到图形每行空格和层数之间的关系 
 8         for(int j=0; j<i; ++j) 
 9             printf(" ");
10         for(int j=0; j<2*t-1; ++j)   
11             printf("#");
12         printf("
");
13         t--;
14     }
15     return 0;
16 }

 

例题 2-4 子序列的和

 1 #include<stdio.h>
 2 int main()
 3 {
 4     long long n,m;
 5     double sum=0;
 6     while(scanf("%lld%lld",&n,&m)!=EOF){
 7         if(n==0 || m==0)
 8             break;
 9         for(long long i=n; i<=m; ++i){
10             double x = 1.0 / (i * i);
11             sum += x;
12         }
13         printf("%.5f
",sum);
14         sum = 0;   // 注意归零 
15     }        
16     return 0;
17 }

 

例题 2-5 分数化小数

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b,c,x,cnt=1;
 5     while(scanf("%d%d%d",&a,&b,&c)!=EOF){
 6         if(a==0 && b==0 && c==0)
 7             break;
 8         printf("Case %d: %d.",cnt++,a/b);    // 打印整数部分
 9 
10         for(int i=1; i<c; ++i){   // 打印小数部分
11             x = a % b * 10 / b;
12             printf("%d",x);
13             a = a % b * 10 % b;
14         }
15         if(a % b * 10 / b >= 5)   // 最后一位四舍五入
16             printf("%d
",x+1);
17         else
18             printf("%d
",x);
19     }
20     return 0;
21 }

 

例题 2-6 排列 

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int r1,r2,r3;
 5     for(int i=123; i<=329; ++i){   // 987/3 = 329
 6         r1 = i;
 7         r2 = 2 * i;
 8         r3 = 3 * i;
 9         int a = r1 % 10, b = r1 / 10 % 10, c = r1 / 100;
10         int d = r2 % 10, e = r2 / 10 % 10, f = r2 / 100;
11         int g = r3 % 10, h = r3 / 10 % 10, m = r3 / 100;
12         if(a+b+c+d+e+f+g+h+m == 45 && a*b*c*d*e*f*g*h*m == 362880)
13             printf("%d %d %d
",r1,r2,r3);
14     }
15     return 0;
16 }

 

思考题 题目2

1 #include<stdio.h>
2 int main() {
3     double i=0;
4     printf("%.1f
",i+0.1); 
5     for(i=0; i!=10; i+=0.1)
6         printf("%.lf
",i);
7     return 0;
8 }

程序会一直跑下去,没有搞明白,看了一篇帖子,说是和double的精度有关,留坑待填。

顺便吐槽一下,一遍腰疼一遍写代码,女性是多么需要关爱的群体。

以上是关于小粉书第2章的主要内容,如果未能解决你的问题,请参考以下文章

紫书第五章训练2 F - Compound Words

紫书第9章 动态规划初步

OpenGL蓝宝书第五章代码勘误以及惯性坐标系去解释模型变换:Pyramid.cpp

西瓜书第1章习题

《算法导论(原书第3版)》第24章部分题目解答

DX12龙书第6章习题