『算法学习笔记』1st day. 顺序结构程序设计

来源:互联网 发布:数据挖掘的就业前景 编辑:程序博客网 时间:2024/03/28 23:15

拿着算法书,我实在不知从何开始。虽然想参加算法比赛,但是不论如何需要从基本开始掌握。心急往往会出错,索性我从书上的例题开始研究,顺便研究相关的知识点,全部都总结在博客里,也方便自己以后复习。我参考的书籍是 刘汝佳的《算法竞赛 入门经典》,以后不指出均以此书为准。

我的情况是以前学过C语言,但是使用的并不多,也很久没碰了,基本可以算是零基础,所以如果有类似情况的朋友也欢迎交流学习。

例题1-1 圆柱体的表面积

输入底面半径r和高h,输出圆柱体的表面积,保留3位小数。

样例输入:3.5 9

样例输出:Area=174.889

  1 #include<stdio.h>  2 #include<math.h>  3 int main()  4 {  5         const double pi=4.0*atan(1.0);  6         double r,h,s1,s2,s;  7         scanf("%lf%lf", &r,&h);  8         s1=pi*r*r;  9         s2=2*pi*r*h; 10         s=s1*2.0+s2; 11         printf("Area= %.3lf\n",s); 12         return 0; 13 }

知识点:

1.pi的处理 这里用了4.0 * atan(1.0)的值,以为有的编辑器不知道pi这个常数(实际上是M_PI)所以记住 pi=4.0*atan(1.0) 

  同时不要忘记 include<math.h> ; 尽量以const关键字声明常数。

2.算法竞赛中每行输出均以回车结束,包括最后一行。每行的行首不应有空格,另外没两个数字或者字符串之间应该以单个空格隔开。

3.关于printf 的格式 只有%开头的部分才会被后面的值替换掉。


例题1-2 三位数反转

输入一个三位数,分理处它的百位 十位和个位, 反转后输出。

样例输入:123

样例输出:321

 1 #include<stdio.h>  2 int main()  3 {  4         int n;  5         scanf("%d",&n);  6         printf("%d%d%d\n",n%10,n/10%10,n/100);  7         return 0;  8 }

如果用变量存储中间结果

#include<stdio.h>  2 int main()  3 {  4         int n,m;  5         scanf("%d",&n);  6         m=n%10*100+(n/10%10)*10+(n/100);  7         printf("%03d\n",m);  8         return 0;  9 }

知识点:

%03d 表示输出整数 如果不足三位 就补零。

例题1-3

 1 /*  2 Function: exchange params  3 sample input: 824 16  4 sample output: 16 824  5 */  6   7 #include<stdio.h>  8   9 int main() 10 { 11 #if 0 12  //使用中间变量的中转的方法 13  14         int a, b,t; 15         scanf("%d%d", &a, &b); 16         t=a; 17         a=b; 18         b=t; 19         printf("%d %d\n", a,b); 20 #endif 21  22 #if 1 23 //不使用中间变量也可以完成 事实上并不需要真的交换变量 24         int a,b; 25         scanf("%d%d",&a,&b); 26         printf("%d %d\n", b, a); 27 #endif 28         return 0; 29 } 30  31 ~                      


0 0
原创粉丝点击