信息学奥赛一本通(C++版) 第一部分 C++语言 第二章 顺序结构程序设计

信息学奥赛一本通(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该章内容


阅读更多
换一批

没有更多推荐了,返回首页