赞
踩
算法竞赛的目的是找到解决问题的答案,不是比谁的答案更高级!!!
目录
这个是中小学生都知道的的答案,底面积 x 2 加上 侧面积为表面积,我们令圆柱体的地面半径为r,高为h
则该圆柱体的表面积的表达为 PI * r * 2 + 2 PI * r
问题描述:输入底面半径r,和高度h,输出圆柱的表面积,保留三位小数
样例:
3.5 9
Area = 274.889
- #include<stdio.h>
- #include<math.h>
- int main()
- {
- const double pi = acos(-1.0);
- double r,h,s1,s2,s;
- scanf("%lf%lf",&r,&h);
- s1 = pi*r*r;
- s2 = 2*pi*r*h;
- s = s1*2+s2;
- printf("Area = %.3f",s);
- return 0;
- }
这里要注明几点,const 关键字表明 PI 的值是不可改变的,这里的 pi 在真正的意义上属于一个常量,一般声明常量用const 关键字即可
double表示双精度浮点数,它能比float更加精准的表示小数点后面的数
示例:
样例输入
123
样例输出
321
源代码
- #include<stdio.h>
- int main()
- {
- int n;
- scanf("%d",&n);
- printf("%d%d%d",n%10,n/10%10,n/100);
- return 0;
- }
但是这样当我们输入120的是时候,电脑会输出021,虽然这么表达也感觉不像错的,但是这样并不符合数学的规范写法,如果这样,我们就必须判断 n%10 是否为0 ,但也有另一个办法,将输出得到的值存储到一个变量中,然后再用%d输出,如果还要输出025,将%d 改为 %03d
- #include<stdio.h>
- int main()
- {
- int n,m;
- scanf("%d",&n);
- m = (n%10)*100 + (n/10%10)*10 +(n/100);
- printf("%d",m);//%d 改成 %03d即可得到和上述一样的结果
- return 0;
- }
问题描述:输入两个数字,输出时将这两个数字的位置交换
示例
样例输入:
23 24
样例输出:
24 23
- #include<stdio.h>
- int main()
- {
- int a,b;
- scanf("%d%d",&a,&b);
- printf("%d %d",b,a);
- return 0;
- }
-
- /*方法二
- a = a + b;
- b = a - b;
- a = a - b;
-
- 方法三
- a=a^b;
- b=a^b;
- a=a^b;
-
- 方法四
- int t;
- t = a;
- a = b;
- b = t;
- */

这个交换数据的题目还有两种,一种使用指针,还有是用函数,在算法竞赛中,只要找到解决问题的办法,就是好方法
问题描述:鸡和兔的数量有 n 只,总腿数 有 m,输入n,m,输出鸡的数目,兔的数目
示例
样例输入
14 32
样例输出
12 2
样例输入
10 16
样例输出
No answer
问题思考:我们假设鸡有 a 只,兔有 b 只,a + b = n,2a+4b = m,还有a和b都是整数并且大于0,还有兔和鸡的腿数都为偶数,所以m也一定为偶数
- #include<stdio.h>
- int main()
- {
- int a,b,n,m;
- scanf("%d%d",&n,&m);
- a = (4*n-m)/2;
- b = n - a;
- if(m%2 == 1||a<0||b<0)
- printf("No answer");
- else
- printf("%d %d\n",a,b);//a is chicken,b is rabbit
- return 0;
- }
问题描述: 输入三个整数,将其从小到大排序
示例
样例输入:
13 22 21
样例输出
13 21 22
问题思考:三个数字进行排序,有一种中间情况,当我们输入的三个数字恰好都相同呢?其实在判断条件中加入相等就可以了,我就直接把代码放出来就好了
- #include<stdio.h>
- int main()
- {
- int i,j,k,t;
- scanf("%d%d%d",&i,&j,&k);
- if(i>j)
- {
- t = i;
- i = j;
- j = t;
- }
- if(i>k)
- {
- t = i;
- i = k;
- k = t;
- }
- if(j>k)
- {
- t = j;
- j = k;
- k = t;
- }
- printf("%d %d %d\n",i,j,k);
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。