算法竞赛入门 刘汝佳 例题代码及练习题代码(一)

时间:2021-04-10 00:10:40

前几天开始看刘汝佳的《算法入门竞赛》谢了挺多的代码,本来准备等写完一起贴上来的,前几天因为系统崩溃的缘故,把以前敲的代码全都弄丢了~ ~,心塞塞啊,所以决定现在写一部分就上传一部分,下面是我自己写的代码,供大家参考欢迎大家批评指正,代码的运行环境是dev_cpp,如果有什么错误的话还是希望大家能够给我指出来,万分感谢!在写完所有的代码后,我会上传的github上供大家下载(如果你需要的话),欢迎大家关注我的博客.

废话不多说了现在上传第一章的代码

例题1_1  圆柱的表面积

//输入底面半径 r 和  高 h,输出圆柱的表面积保留三位小数
# include <stdio.h>
# include <math.h>
int main(){
const double pi=4*atan(1.0);
double r,h,s1,s2,s;
scanf("%lf%lf",&r,&h);
s1=pi*r*r;
s2=2*pi*r*h;
s=2*s1+s2;
printf("%.3lf",s);
return 0;
}


例题1_2  三位数的反转

//三位数的反转
# include <stdio.h>
int main(){
int n;
scanf("%d",&n);
printf("%d%d%d",n%10,n/10%10,n/100);
return 0;
}
//但是这道题需要注意的东西是什么呢?
//如果输入的是520?
//我们的输出结果是多少呢 025 ?25?
//这一点要根据题目给的要求来看
/*
输出025
# include <stdio.h>
int main(){
int n;
scanf("%d",&n);
printf("%03d",n%10*100+(n/10%10)*10+n/100);
return 0;
}
输出25
# include <stdio.h>
int main(){
int n;
scanf("%d",&n);
printf("%d",n%10*100+(n/10%10)*10+n/100);
return 0;
}
*/


例题1_3  变量交换

//变量交换
// 输入两个数交换他们的值输出
//方法很多介绍一种很sb 的

# 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);
return 0;
}


例题1_4  鸡兔同笼

//鸡兔同笼
//有m个头,n条腿,问鸡几只,兔几只
# include <stdio.h>

int main(){
int m,n,a,b; //a表示鸡的只数,b表示兔的只数
scanf("%d%d",&m,&n);
b=(n-2*m)/2;
a=m-b;
if(a<0||b<0||m%2!=0){
printf("不存在");
}
else {
printf("%d %d",a,b);
}
return 0;
}


例题1_5  三数排序

//三数排序
# include<stdio.h>

int main(){
int a,b,c,temp;
scanf("%d%d%d",&a,&b,&c);
if(a<b){
temp=a;
a=b;
b=temp;
}
if(a<c){
temp=a;
a=c;
c=temp;

}
if(b<c){
temp=b;
b=c;
c=temp;
}

printf("%d %d %d",a,b,c);
return 0;
}


习题1_1  平均数

//平均数   输入三个整数 输出他们的平均值,保留 三位小数
# include <stdio.h>

int main(){
double a,b,c,sum=0;
scanf("%lf%lf%lf",&a,&b,&c);
sum=a+b+c;
printf("%.3lf",sum/3);
return 0;
}


习题1_2  温度

//温度输入华氏温度输出摄氏温度 保留三位小数  c=5(f-32)/9;

# include <stdio.h>
int main(){
double f,c;
scanf("%lf",&f);
c=5*(f-32)/9;
printf("%.3lf",c);
return 0;
}


习题1_3  连续和

//连续和   输入正整数n 输出1+2+3+....+n的值
# include <stdio.h>

int main(){
int n;
scanf("%d",&n);
printf("%d",((1+n)*n)/2);
return 0;
}


习题1_4  正弦余弦

//正弦和余弦
//输入正整数n(n<360) 输出N度的正弦和余弦函数值

# include <stdio.h>
# include <math.h>


int main(){
int n;
scanf("%d",&n);
printf("sin %d = %lf, cos %d = %lf",n,sin(n),n,cos(n));
return 0;
}


习题1_5  距离

//距离   输入四个浮点数x1,y1,x2,y2 ,求(x1,y1)到(x2,y2)的距离

# include <stdio.h>
# include <math.h>
int main(){
double x1,y1,x2,y2;
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
double deltx=x1-x2;
double delty=y1-y2;
double length=sqrt(deltx*deltx+delty*delty);
printf("%lf",length);
return 0;
}


习题1_6  偶数

//偶数  判断一个数是否为偶数

# include <stdio.h>

int main(){
int n;
if(n%2==0){
printf("偶数");
}
else{
printf("不是偶数");
}
}


习题1_7  打折

//打折  一件衣服  95元  满300 打85折,输入买几件衣服,,输出付多少钱
# include <stdio.h>

int main(){
int n;
scanf("%d",&n);
if(95*n>=300){
printf("%lf",95*n*0.85);
}
else {
printf("%lf",95*n);
}
return 0;
}


习题1_8  绝对值

//绝对值

# include <stdio.h>
# include <math.h>
int main(){
float f;
scanf("%f",&f);
printf("%f",fabs(f));
return 0;
}


习题1_9  三角形

//三角形  ,判断输入的三条变能否输出三角形
//输入的三条边均为正整数
# include <stdio.h>
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a+b>c){
if(a+c>b){
if(b+c>a){
printf("能够构成三角形");
}
}
}
else{
printf("不能构成三角形");
}
return 0;
}


习题1_10 年份

//年份  输入一个年份,输出当年是不是瑞年

# include <stdio.h>

bool leapyear(int year){
if((year%4==0&&year%100!=0)||year%400==0){
return 1;
}
else {
return 0;
}
}
int main(){
int year;
scanf("%d",&year);
if(leapyear(year)){
printf("是瑞年");
}
else {
printf("不是瑞年");
}
return 0;
}