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

本文针对算法初学者,从零开始介绍算法基础知识。通过具体例题,如计算圆柱体表面积、三位数反转等,逐步讲解C语言实现过程及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

我的情况是以前学过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 
~                      


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值