信息学奥赛一本通(C++版) 第一部分 C++语言 第二章 顺序结构程序设计
http://ybt.ssoier.cn:8088/
第一节 运算符和表达式
//1006 A+B问题
#include <stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
return 0;
}
//1007 计算(a+b)*c的值
#include <stdio.h>
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d",(a+b)*c);
return 0;
}
//1008 计算(a+b)/c的值
#include <stdio.h>
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d",(a+b)/c);
return 0;
}
//1009 带余除法
#include <stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("%d %d",a/b,a%b);
return 0;
}
//1010 计算分数的浮点数值
#include <stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("%.9lf",a*1.0/b);
return 0;
}
2017-10-19 21:14 AC该节内容
第二节 常量和变量
//1011 甲流疫情死亡率
//提交 未通过,仔细一看,漏了输出的%号 ,修改,提交AC
#include <stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("%.3f%%",b*1.0/a*100);
return 0;
}
//1012 计算多项式的值
//提交 未通过,一看,眼花了,读取的时候,少读了一个数,修改,提交AC
#include <stdio.h>
int main(){
double x,a,b,c,d;
scanf("%lf%lf%lf%lf%lf",&x,&a,&b,&c,&d);
printf("%.7lf",a*x*x*x+b*x*x+c*x+d);
return 0;
}
//1013 温度表达转化
#include <stdio.h>
int main(){
double f;
scanf("%lf",&f);
printf("%.5lf",5*(f-32)/9);
return 0;
}
//1014 与圆相关的计算
#include <stdio.h>
#define pi 3.14159
int main(){
double r;
scanf("%lf",&r);
printf("%.4lf %.4lf %.4lf",2*r,2*pi*r,pi*r*r);
}
//1015 计算并联电阻的阻值
#include <stdio.h>
int main(){
double r1,r2;
scanf("%lf%lf",&r1,&r2);
printf("%.2lf",1/(1/r1+1/r2));
return 0;
}
2017-10-19 21:40 AC该节内容
第三节 标准数据类型
//1016 整型数据类型存储空间大小
#include <stdio.h>
int main(){
printf("%d %d",sizeof(int),sizeof(short));
return 0;
}
//1017 浮点型数据类型存储空间大小
#include <stdio.h>
int main(){
printf("%d %d",sizeof(float),sizeof(double));
return 0;
}
//1018 其他数据类型存储空间大小
//请注意,因C语言里无bool变量,故以下代码采用C++方式编译提交
#include <stdio.h>
int main(){
printf("%d %d",sizeof(bool),sizeof(char));
return 0;
}
//1019 浮点数向零舍入
#include <stdio.h>
int main(){
float f;
scanf("%f",&f);
printf("%d",(int)f);
return 0;
}
//1020 打印ASCII码
#include <stdio.h>
int main(){
char s[2];
scanf("%s",s);
printf("%d",s[0]);
return 0;
}
//1021 打印字符
#include <stdio.h>
int main(){
int a;
scanf("%d",&a);
printf("%c",a);
return 0;
}
//1022 整型与布尔型的转换
#include <stdio.h>
int main(){
int a;
scanf("%d",&a);
if(a==0)printf("0");
else printf("1");
return 0;
}
//1023 Hello,World!的大小
//提交,未通过,怎么查都查不出问题,无奈,搜索网络,找到https://zhidao.baidu.com/question/1735639697759366947.html里面提示"Hello, World!"的逗号和'W'中间有个空格
//我的天,看来题目中提供的字符串,自己敲,错误百出,用拷贝粘贴,最理想。
//修改,提交AC
#include <stdio.h>
int main(){
printf("%d",sizeof("Hello, World!"));
return 0;
}
2017-10-19 22:19 AC 该节内容
第四节 数据输入输出
//1024 保留3位小数的浮点数
#include <stdio.h>
int main(){
float f;
scanf("%f",&f);
printf("%.3f",f);
return 0;
}
//1025 保留12位小数的浮点数
#include <stdio.h>
int main(){
double d;
scanf("%lf",&d);
printf("%.12lf",d);
return 0;
}
//1026 空格分隔输出
#include <stdio.h>
int main(){
char a;
int b;
float c;
double d;
scanf("%c%d%f%lf",&a,&b,&c,&d);
printf("%c %d %.6f %.6lf",a,b,c,d);
return 0;
}
//1027 输出浮点数
//提交,未通过,搜索网络https://zhidao.baidu.com/question/2056380868273451467.html
//发现,还是理解的问题,读入的数据是双精度,本人写的是单精度 float f;输出是对双精度进行处理
#include <stdio.h>
int main(){
double f;//float f;
scanf("%lf",&f);
printf("%f\n%.5f\n%e\n%g",f,f,f,f);
return 0;
}
//1028 字符菱形
#include <stdio.h>
int main(){
char c;
scanf("%c",&c);
printf(" %c\n",c);
printf(" %c%c%c\n",c,c,c);
printf("%c%c%c%c%c\n",c,c,c,c,c);
printf(" %c%c%c\n",c,c,c);
printf(" %c\n",c);
return 0;
}
2017-10-20 AC 该节内容
第五节 顺序结构实例
//1029 计算浮点数相除的余
//提交,未通过,搜索网络https://zhidao.baidu.com/question/1862253134086546187.html
//发现%g,猜测输出忽略小数部分,最后的一些连续的0
//搜索,http://blog.sina.com.cn/s/blog_771bd2c901011bmp.html摘抄如下:
// %g用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。即%g是根据结果自动选择科学记数法还是一般的小数记数法
//收获,学习了%g的用法,修改,提交AC
#include <stdio.h>
int main(){
double a,b;
scanf("%lf%lf",&a,&b);
printf("%g",a-(int)(a/b)*b);//此处写成 printf("%.4lf",a-(int)(a/b)*b);
return 0;
}
//1030 计算球的体积
#include <stdio.h>
int main(){
double r;
scanf("%lf",&r);
printf("%.2lf",4*3.14*r*r*r/3);
return 0;
}
//1031 反向输出一个三位数
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
printf("%d%d%d",n%10,n/10%10,n/100);
return 0;
}
//1032 大象喝水查
#include <stdio.h>
int main(){
int h,r;
scanf("%d%d",&h,&r);
printf("%d",(int)(20*10*10*10/(3.14*r*r*h))+1);//printf("%d",int(20*10*10*10/(3.14*r*r*h))+1);编译错误
return 0;
}
//1033 计算线段长度
//提交,未通过,不敢相信,
//重新读题,发现输入是实数,而不是整数,读了半天题,发现这个没读出
//修改,提交,未通过,将float改成double ,提交AC
#include <stdio.h>
#include <math.h>
int main(){
double xa,ya,xb,yb;//float xa,ya,xb,yb;//int xa,ya,xb,yb;
scanf("%lf%lf%lf%lf",&xa,&ya,&xb,&yb);//scanf("%f%f%f%f",&xa,&ya,&xb,&yb);//scanf("%d%d%d%d",&xa,&ya,&xb,&yb);
printf("%.3lf",sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya)));//printf("%.3f",sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya)));
return 0;
}
//1034 计算三角形面积
//已知三条边,求面积,搜索网络,发现 https://baike.baidu.com/item/%E6%B5%B7%E4%BC%A6%E5%85%AC%E5%BC%8F/106956?fr=aladdin海伦公式
//提交,未通过,将float 全改成 double,提交AC
//输入仅一行,包括6个单精度浮点数,分别对应x1, y1, x2, y2, x3, y3。虽然题目说的是单精度浮点数,还是用double进行读取
#include <stdio.h>
#include <math.h>
int main(){
double x1,y1,x2,y2,x3,y3,a,b,c,p,s;//float x1,y1,x2,y2,x3,y3,a,b,c,p,s;
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);//scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3);
a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
c=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("%.2lf",s);//printf("%.2f",s);
return 0;
}
//1035 等差数列末项计算
#include <stdio.h>
int main(){
int a1,a2,n;
scanf("%d%d%d",&a1,&a2,&n);
printf("%d",a1+(n-1)*(a2-a1));
return 0;
}
//1036 A*B问题
#include <stdio.h>
int main(){
long long a,b;
scanf("%lld%lld",&a,&b);
printf("%lld",a*b);
return 0;
}
//1037 计算2的幂
#include <stdio.h>
int main(){
int n,ans=1,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
ans*=2;
printf("%d",ans);
return 0;
}
//1037 计算2的幂
//方法二:正好用到位运算,试试该题,
//样例通过,提交AC 2018-4-12
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
printf("%d",1<<n);
return 0;
}
//1038 苹果和虫子
//提交,未通过,搜索网络https://zhidao.baidu.com/question/240793441435694964.html
//少考虑了m会比n大的情况。假如只有n=5个苹果,不可能出现虫子吃掉m=6个苹果的情况吧。
//修改,提交AC
#include <stdio.h>
int main(){
int n,x,y,ans;
scanf("%d%d%d",&n,&x,&y);
if(y%x==0)ans=n-y/x;
else ans=n-y/x-1;
if(ans<0)
printf("0");
else
printf("%d",ans);
return 0;
}
2017-10-20 AC该节内容
2017-10-20 AC该章内容