码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-12-08 00:16:05      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:整数   算法   信息   double   运算   cos   got   丢失   程序   

学习目标:

  熟悉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\n",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\n",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\n",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章

标签:整数   算法   信息   double   运算   cos   got   丢失   程序   

原文地址:https://www.cnblogs.com/ljlzl/p/10085844.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!