算法入门经典——第1章程序设计入门

写在开头:重新研读发现前面部分虽然内容简单,但值得基础不够牢的朋友仔细阅读,体会刘汝佳老师构建知识体系的过程

 1 /*
 2     1.1算术表达式 
 3 */ 
 4 #include<stdio.h>
 5 #include<math.h>
 6 int main(){
 7     //例1-1 
 8     printf("%d\n",1+2);
 9     //实验1~4 
10     printf("%d\n",3-4);
11     printf("%d\n",5*6);
12     printf("%d\n",8/4);
13     printf("%d\n",8/5);//取整数部分 
14     
15     //例1-2 
16     //实验5
17     printf("%.1f\n",8.0/5.0); //%.1f保留1位小数 
18     printf("%.2f\n",8.0/5.0); //%.2f保留2位小数 
19     printf("%f\n",8.0/5.0); //%f保留6位小数 
20     //实验6~7 
21     printf("%.1f\n",8/5); //输出结果:0.0
22     printf("%d\n",8.0/5.0); //输出结果:-1717986918
23     //整数用%d,实数用%f 输出 
24     /*
25         意义:格式要规范
26         实际原因:待查 
27     */ 
28      
29     //例1-3 
30     printf("%.8f\n",1+2*sqrt(3)/(5-0.1));
31     /*
32        整数与浮点数混合运算还是浮点数 
33        sqrt(x)传参是double类 
34     */
35     return 0;
36 } 

上面这小节的核心意义在于说明一个道理:编程是练会的,编程上遇到的问题,自己多动手找答案。


 

 1 /*
 2     1.2变量及其输出 
 3 */ 
 4 #include<stdio.h>
 5 #include<math.h>
 6 int main(){
 7     /*//程序1-4 a+b问题
 8     int a,b;
 9     scanf("%d%d",&a,&b);
10     printf("%d\n",a+b);*/
11     
12     //求圆柱表面积
13     const double pi=acos(-1.0);
14     double r,h,s1,s2,s;
15     scanf("%lf%lf",&r,&h);
16     s1=pi*r*r;
17     s2=2*pi*r*h;
18     s=s1*2.0+s2;
19     printf("Area=%.3f\n",s);
20     /*
21        样例:
22        输入:3.5 9
23        输出:Area=274.889
24     */
25     return 0;
26 }

 

/*
    1.3顺序结构 
*/ 
#include<stdio.h>
int main(){
    //例1-2三位数翻转(1)
    {
        int n;
        scanf("%d",&n);
        printf("%d%d%d\n",n%10,n/10%10,n/100);
    }
    //三位数翻转(2)
    {
        int n,m;
        scanf("%d",&n);
        m=(n%10)*100+(n/10%10)*10+n/100;
        printf("%03d\n",m); 
        /*
            printf("%04d",123);
            输出:0123
            printf("%05d",123);
            输出:00123 
        */
    }
    
    //例1-3交换变量
    //交换变量(1)
    {
        int a,b,t;
        scanf("%d%d",&a,&b);
        t=a;
        a=b;
        b=t;
        printf("%d %d\n",a,b);
    } 
    //交换变量(2)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        a=a+b;
        b=a-b;
        a=a-b; 
        printf("%d %d\n",a,b);
    } 
    //交换变量(3)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        printf("%d %d\n",b,a);
    }
    /*
        小结:
             (1)法为最普世通法,适用范围最广;
             (2)法对于未定义加减的数据类型并不适用,
             它的存在意义更多是为了锻炼思维; 
             (3)纯属特定题目用法(本题最佳解法): 
                意义是: 程序的作用是解决问题,而不是炫技 
    */
    return 0;
}

这两节没什么特别要注意的,唯一值得关注的是三种交换变量的方法


 

 1 /*
 2     1.4分支结构 
 3 */ 
 4 #include<stdio.h>
 5 int main(){
 6     //例1-4鸡兔同笼问题
 7     {
 8         int a,b,n,m;
 9         scanf("%d%d",&a,&b);
10         a=(4*n-m)/2;
11         b=n-a;
12         if(m%2==1||a<0||b<0)
13             printf("No answer\n");
14         else 
15             printf("%d %d\n",a,b);
16     } 
17     //例1-5三整数排列(从小到大) 
18     //三整数排列(1) 
19     {
20         int a,b,c;
21         scanf("%d%d%d",&a,&b,&c);
22         if(a<b&&b<c)printf("%d %d %d\n",a,b,c);
23         if(a>b&&b>c)printf("%d %d %d\n",c,b,a);
24         if(a<c&&b<a)printf("%d %d %d\n",b,a,c);
25         if(a>c&&c>b)printf("%d %d %d\n",a,c,b);
26         if(b>c&&c>a)printf("%d %d %d\n",b,c,a);
27         if(b>a&&a>c)printf("%d %d %d\n",b,a,c);
28         //缺陷:当三数相等时,无输出 
29     }
30     //三整数排列(2) 
31     {
32         int a,b,c;
33         scanf("%d%d%d",&a,&b,&c);
34         if(a<b&&b<c)printf("%d %d %d\n",a,b,c);
35         else if(a>=b&&b>=c)printf("%d %d %d\n",c,b,a);
36         else if(a<=c&&b=<a)printf("%d %d %d\n",b,a,c);
37         else if(a>=c&&c>=b)printf("%d %d %d\n",a,c,b);
38         else if(b>=c&&c>=a)printf("%d %d %d\n",b,c,a);
39         else if(b>=a&&a>=c)printf("%d %d %d\n",b,a,c);
40     }
41     //三整数排列(2) 
42     {
43         int a,b,c,t;
44         scanf("%d%d%d",&a,&b,&c);
45         if(a>b){t=a;a=b;b=t;}
46         if(a>c){t=a;a=c;c=t;}
47         /*
48             此句不能省,原因:a<b;b>c时,
49             无法判断原a,c大小无必然大小关系 
50         */
51         if(b>c){t=b;b=c;c=t;}
52         printf("%d %d %d\n",a,b,c); 
53     }
54     return 0;
55 }

 

posted @ 2019-07-01 17:36 逸非安逸 阅读(...) 评论(...) 编辑 收藏