算法竞赛入门经典第2版 第1章

Posted ljlzl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法竞赛入门经典第2版 第1章相关的知识,希望对你有一定的参考价值。

学习目标:

  熟悉C语言程序的编译和运行

  学会编程计算并输出常见的算术表达式的结果

  掌握整数和浮点数的含义和输出方法、声明方法、读入方法

  掌握数学函数的使用方法

  初步了解变量的含义

  掌握变量交换的三变量法

  理解算法竞赛中的程序三部曲:输入、计算、输出

  记住算法竞赛的目标及其对程序的要求

                                                          

                                                                         1.2 变量及其输入

1.如果一定要把浮点数值存放在一个int型变量中,将会丢失部分信息——不推荐这样做。

例1-1  圆柱体的表面积

#include <stdio.h>

int main()
{
    const double pi = acos(-1.0);
    double r,h,s1,s2;
    scanf("%lf %lf",&r,&h);
    s1 = 2*pi*r*r;
    s2 = 2*pi*r*h;
    printf("Area = %.3f
",s1+s2);
    return 0;
}

(1).不要让程序“按任意键退出”(例如,调用system(“pause”),或者添加一个多余的getchar()),因为不会有人来“按任意键”的。

(2).在算法竞赛中,不要使用头文件conio.h,不要使用getch(),getche(),gotoxy()和clrscr()函数。

 

                                                                      1.3 顺序结构程序设计

例1-2 三位数反转

#include <stdio.h>

int main()
{
    int a,a1,a2,a3,b;

    scanf("%d",&a);

    a1 = a/100;
    a2 = (a-a1*100)/10;
    a3 = a%10;
    b = a3*100+a2*10+a1;

    printf("%d
",b); //考虑最后一位为0时的输出,%d或%03d

    return 0;
}

(1).注意数的最后一位为0时如何取值。

 

例1-3 交换变量

#include <stdio.h>

int main()
{
    /* 三变量法
    int a,b,temp;
    scanf("%d %d",&a,&b);
    temp = a;
    a = b;
    b = temp;
    printf("%d %d",a,b);*/
    
    //最佳的方法:
    int a,b;
    scanf("5d %d",&a,&b);
    printf("%d %d",b,a);
    return 0;
}

(1).算法竞赛是在比谁能更好地解决问题,而不是在比谁写的程序看上去更高级。

                                                                        

                                                                                 1.4 分支结构程序设计

例1-4 鸡兔同笼

#include <stdio.h>

int main()
{
    int m,n,j,t;
    scanf("%d %d",&n,&m);
    t = (m-2*n)/2;
    j = n-t;

    if(m%2 == 1 || j<0 || t<0)
        printf("No answer");
    else
        printf("%d %d
",j,t);
    return 0;
}

(1).和其他语言不同的是,在C语言中单个整数也可以表示真假,其中0为假,其他值为真。

(2).短路运算

 

例1-5 三整数排序

 

#include <stdio.h>

int main()
{
    int a,b,c,t;
    scanf("%d %d %d",&a,&b,&c);

    if(a>b)
    {
        t = a;a = b;b = t;
    }
    if(a>c)
    {
        t = a;a = c;c = t;
    }
    if(b>c)
    {
        t = b;b = c;c = t;
    }
    printf("%d %d %d",a,b,c);
    return 0;
}

 

以上是关于算法竞赛入门经典第2版 第1章的主要内容,如果未能解决你的问题,请参考以下文章

算法竞赛入门经典(第2版)+算法艺术与信息学竞赛pdf-高清版免费下载

《算法竞赛入门经典(第二版)》pdf

算法竞赛入门经典(刘汝佳)课后习题前三章答案

算法竞赛入门经典第二版 随笔1

算法竞赛入门经典第二版 第二章习题及思考题

算法竞赛入门经典第二版 蛇形填数 P40