算法竞赛入门经典第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章的主要内容,如果未能解决你的问题,请参考以下文章