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

第一节 运算符和表达式

T1006 A+B问题

【题目描述】

大部分的在线题库,都会将A+B问题作为第一题,以帮助新手熟悉平台的使用方法。

A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。现在请你解决这一问题。

【输入】

一行,包含两个整数A,B,中间用单个空格隔开。A和B均在整型范围内。

【输出】

一个整数,即A+B的值。保证结果在整型范围内。

【输入样例】

1 2

【输出样例】

3

【答案&代码】

#include<stdio.h>
int main(void){
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d",a+b);
    return 0;
}


T1007 计算(a+b)×c的值

【题目描述】

给定3个整数a、b、c,计算表达式(a+b)×c的值。

【输入】

输入仅一行,包括三个整数a、b、c,数与数之间以一个空格分开。(-10,000<a,b,c<10,000)

【输出】

输出一行,即表达式的值。

【输入样例】

2 3 5

【输出样例】

25

【答案&代码】

#include<stdio.h>
int main(void){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    printf("%d",(a+b)*c);
    return 0;
}

T1008 计算(a+b)/c的值

【题目描述】

给定3个整数a、b、c,计算表达式(a+b)/c的值。

【输入】

输入仅一行,包括三个整数a、b、c,数与数之间以一个空格分开。(-10,000<a,b,c<10,000)

【输出】

输出一行,即表达式的值。

【输入样例】

1 1 3

【输出样例】

0

【答案&代码】

#include<stdio.h>
int main(void){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    printf("%d",(a+b)/c);
    return 0;
}

T1009 带余除法

【题目描述】

给定被除数和除数,求整数商及余数。此题中请使用默认的整除和取余运算,无需对结果进行任何特殊处理。

【输入】

一行,包含两个整数,依次为被除数和除数(除数非零),中间用一个空格隔开。

【输出】

一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。

【输入样例】

10 3

【输出样例】

3 1

【答案&代码】

#include<stdio.h>
int main(void){
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d %d",a/b,a%b);
    return 0;
}

T1010 : 计算分数的浮点数值

【题目描述】

两个整数a和b分别作为分子和分母,既分数a/b,求它的浮点数值(双精度浮点数,保留小数点后9位)。

【输入】

输入仅一行,包括两个整数a和b。

【输出】

输出也仅一行,分数 a/b 的浮点数值(双精度浮点数,保留小数点后9位)。

【输入样例】

5 7

【输出样例】

0.714285714

【答案&代码】

#include<stdio.h>
int main(void){
    double a,b;
    scanf("%lf%lf",&a,&b);
    printf("%.9f",a/b);
    return 0;
}

第二节 常量与变量

T1011 : 甲流疫情死亡率

【题目描述】

甲流并不可怕,在中国,它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。

【输入】

输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。

【输出】

输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后3位。

【输入样例】

10433 60

【输出样例】

0.575%

【答案&代码】

根据题意可得,死亡率=死亡数/确诊数*100%。

若设确诊数为a,死亡数为b,则死亡率(百分比形式)为b/a*100+'%'。

字符'%'在标准输入输出中用"%%"表示。

#include<stdio.h>
int main(void){
    double a,b;
    scanf("%lf%lf",&a,&b);
    printf("%.3f%%",b/a*100);
    return 0;
}

T1012 : 计算多项式的值

【题目描述】

对于多项式f(x)=ax^3+bx^2+cx+d和给定的a,b,c,d,x,计算f(x)的值,保留到小数点后7位。

【输入】

输入仅一行,包含1个实数,分别是x,及参数a、b、c、d的值,每个数都是绝对值不超过100的双精度浮点数。数与数之间以一个空格分开。

【输出】

输出一个实数,即f(x)的值,保留到小数点后7位。

【输入样例】

2.31 1.2 2 2 3

【输出样例】

33.0838692

【答案&代码】

#include<stdio.h>
#include<math.h>
int main(void){
    double a,b,c,d,x;
    scanf("%lf%lf%lf%lf%lf",&x,&a,&b,&c,&d);
    double ans=a*pow(x,3)+b*x*x+c*x+d;
    printf("%.7f",ans);
    return 0;
}


T1013 : 温度表达转化

【题目描述】

利用公式 C=5×(F-32)÷9(其中C表示摄氏温度,F表示华氏温度)进行计算转化,输入华氏温度F,输出摄氏温度C,要求精确到小数点后5位。

【输入】

输入一行,包含1个实数F,表示华氏温度。(F≥-459.67)

【输出】

输出一行,包含一个实数,表示对应的摄氏温度,要求精确到小数点后5位。

【输入样例】

41

【输出样例】

5.00000

【答案&代码】

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

T1014 : 与圆相关的计算

【题目描述】

给出圆的半径,求圆的直径、周长和面积。输入圆的半径实数r,输出圆的直径、周长、面积,每个数保留小数点后4位。圆周率取值为3.14159。

【输入】

输入包含一个实数r(0 < r ≤ 10,000),表示圆的半径。

【输出】

输出一行,包含三个数,分别表示圆的直径、周长、面积,数与数之间以一个空格分开,每个数保留小数点后4位。

【输入样例】

3.0

【输出样例】

6.0000 18.8495 28.2743

【答案&代码】

#include<stdio.h>
#define PI 3.14159
int main(void){
    double r;
    scanf("%lf",&r);
    printf("%.4f %.4f %.4f",2*r,2*r*PI,r*r*PI);
    return 0;
}

T1015 : 计算并联电阻的阻值

【题目描述】

对于阻值为 r1 和 r2 的电阻,其并联电阻阻值公式计算如下:R=1(1/r1+1/r2)。输入两个电阻阻抗大小,浮点型。输出并联之后的阻抗大小,结果保留小数点后2位。

【输入】

两个电阻阻抗大小,浮点型,以一个空格分开。

【输出】

并联之后的阻抗大小,结果保留小数点后2位。

【输入样例】

1 2

【输出样例】

0.67

【答案&代码】

#include<stdio.h>
int main(void){
    double r1,r2;
    scanf("%lf%lf",&r1,&r2);
    printf("%.2f",1/(1/r1+1/r2));
    return 0;
}

第三节 标准数据类型

T1016 : 整型数据类型存储空间大小

【题目描述】

分别定义int,short类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。

【输入】

(无)

【输出】

一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。

【输入样例】

(无)

【输出样例】

(无)

【答案&代码】

#include<stdio.h>
int main(void){
    printf("%d %d",sizeof(int),sizeof(short));
    return 0;
}


T1017 : 浮点型数据类型存储空间大小

【题目描述】

分别定义float,double类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。

【输入】

(无)

【输出】

一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。

【输入样例】

(无)

【输出样例】

(无)

【答案&代码】

#include<stdio.h>
int main(void){
    printf("%d %d",sizeof(float),sizeof(double));
    return 0;
}

T1018 : 其他数据类型存储空间大小

【题目描述】

分别定义bool,char类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。

【输入】

(无)

【输出】

一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。

【输入样例】

(无)

【输出样例】

(无)

【答案&代码】

#include<stdio.h>
int main(void){
    printf("%d %d",sizeof(bool),sizeof(char));
    return 0;
}

T1019 : 浮点数向零舍入

【题目描述】

输入一个单精度浮点数,将其向零舍入到整数。说明:向零舍入的含义是,正数向下舍入,负数向上舍入。提示:可以使用强制类型转换来实现。

【输入】

一个单精度浮点数。

【输出】

一个整数,即向零舍入到整数的结果。

【输入样例】

2.3

【输出样例】

2

【答案&代码】

#include<stdio.h>
int main(void){
    double num;
    scanf("%lf",&num);
    printf("%d",(int)num);
    return 0;
}

T1020 : 打印ASCII码

【题目描述】

 输入一个除空格以外的可见字符(保证在函数scanf中可使用格式说明符%c读入),输出其ASCII码。

【输入】

一个除空格以外的可见字符。

【输出】

一个十进制整数,即该字符的ASCII码。

【输入样例】

A

【输出样例】

65

【答案&代码】

#include<stdio.h>
int main(void){
    char ch;
    scanf("%c",&ch);
    printf("%d",ch);
    return 0;
}

T1021 : 打印字符

【题目描述】

 输入一个整数,即字符的ASCII码,保证存在对应的可见字符。输出相对应的字符。

【输入】

一个整数,即字符的ASCII码,保证存在对应的可见字符。

【输出】

一行,包含相应的字符。

【输入样例】

65

【输出样例】

A

【答案&代码】

#include<stdio.h>
int main(void){
    int ch;
    scanf("%d",&ch);
    printf("%c",ch);
    return 0;
}

T1022 : 整型与布尔型的转换

【题目描述】

 将一个整型变量的值赋给一个布尔型变量,再将这个布尔型变量的值赋给一个整型变量,得到的值是多少?

【输入】

一个整型范围内的整数,即初始时整型变量的值。

【输出】

一个整数,经过上述过程后得到的结果。

【输入样例】

3

【输出样例】

1

【答案&代码】

#include<stdio.h>
int main(void){
    int n;
    scanf("%d",&n);
    bool temp=n;
    n=temp;
    printf("%d",n);
    return 0;
}

T1023 : Hello,World!的大小

【题目描述】

我们曾经输出过的“Hello, World!”吗?它虽然不是本章所涉及的基本数据类型的数据,但我们同样可以用sizeof函数获得它所占用的空间大小。

【输入】

(无)

【输出】

一个整数,即“Hello, World!”的大小。

【输入样例】

(无)

【输出样例】

(无)

【答案&代码】

#include<stdio.h>
int main(void){
    printf("%d",sizeof("Hello, World!"));
    return 0;
}


第四节 数据输入输出

T1024 : 保留3位小数的浮点数

【题目描述】

读入一个单精度浮点数,保留3位小数输出这个浮点数。

【输入】

只有一行,一个单精度浮点数。

【输出】

也只有一行,读入的单精度浮点数。

【输入样例】

12.34521

【输出样例】

12.345

【答案&代码】

#include<stdio.h>
int main(void){
    double num;
    scanf("%lf",&num);
    printf("%.3f",num);
    return 0;
}

T1025 : 保留12位小数的浮点数

【题目描述】

读入一个双精度浮点数,保留12位小数,输出这个浮点数。

【输入】

只有一行,一个双精度浮点数。

【输出】

也只有一行,保留12位小数的浮点数。

【输入样例】

3.1415926535798932

【输出样例】

3.141592653580

【答案&代码】

#include<stdio.h>
int main(void){
    double num;
    scanf("%lf",&num);
    printf("%.12f",num);
    return 0;
}

T1026 : 空格分隔输出

【题目描述】

读入一个字符,一个整数,一个单精度浮点数,一个双精度浮点数,然后按顺序输出它们,并且要求在他们之间用一个空格分隔。输出浮点数时保留6位小数。

【输入】

第一行是一个字符;
      第二行是一个整数;
      第三行是一个单精度浮点数;
      第四行是一个双精度浮点数。

【输出】

输出字符、整数、单精度浮点数和双精度浮点数,之间用空格分隔。

【输入样例】

a
12
2.3
3.2

【输出样例】

a 12 2.300000 3.200000

【答案&代码】

#include<stdio.h>
int main(void){
    char ch;
    int n;
    double a,b;
    scanf("%c%d%lf%lf",&ch,&n,&a,&b);
    printf("%c %d %.6f %.6f",ch,n,a,b);
    return 0;
}

T1027 : 输出浮点数

【题目描述】

读入一个双精度浮点数,分别按输出格式“%f”,“%f”保留5位小数,“%e”和“%g”的形式输出这个整数,每次在单独一行上输出。

【输入】

一个双精度浮点数。

【输出】

第一行是按“%f”输出的双精度浮点数;
       第二行是按“%f”保留5位小数输出的双精度浮点数;
       第三行是按“%e”输出的双精度浮点数;
       第四行是按“%g”输出的双精度浮点数。

【输入样例】

12.3456789

【输出样例】

12.345679
12.34568
1.234568e+001
12.3457

【答案&代码】

#include<stdio.h>
int main(void){
    double n;
    scanf("%lf",&n);
    printf("%.6f\n%.5f\n%e\n%g",n,n,n,n);
    return 0;
}

T1028 : 字符菱形

【题目描述】

给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。

【输入】

输入只有一行, 包含一个字符。

【输出】

该字符构成的菱形。

【输入样例】

*

【输出样例】

  *
 ***
*****
 ***
  *

【答案&代码】

#include<stdio.h>
int main(void){
    char ch;
    scanf("%c",&ch);
    printf("  %c  \n %c%c%c \n%c%c%c%c%c\n %c%c%c \n  %c  ",ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch);
    return 0;
}


猜你喜欢

转载自blog.csdn.net/Lu_Anlai/article/details/80384577