OpenJudge1.3编程基础之算术表达式与顺序执行

本文集提供了20个编程挑战题目,涵盖了从简单的算术运算到复杂的几何计算,旨在帮助初学者掌握基本算法和编程技巧。每个题目都包含了明确的问题描述、输入输出说明以及示例代码,便于理解和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


01:A+B问题

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

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

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

现在请你解决这一问题。

输入

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

输出

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

样例输入

1 2

样例输出

3
#include <iostream>
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a+b; 
    return 0;
}

02:计算(a+b)*c的值

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

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

输入

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

输出

输出一行,即表达式的值

样例输入

2 3 5

样例输出

25
#include<iostream>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    cout<<(a+b)*c; 
    return 0;
}

03:计算(a+b)/c的值

原题链接

总时间限制: 1000ms 内存限制: 65536kB

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

输入

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

输出

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

样例输入

1 1 3

样例输出

0
#include <iostream>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    cout<<(a+b)/c; 
    return 0;
}

04:带余除法

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

给定被除数和除数,求整数商及余数。

此题中请使用默认的整除和取余运算,无需对结果进行任何特殊处理。看看程序运行结果与数学上的定义有什么不同?

输入

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

输出

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

样例输入

10 3

样例输出

3 1
#include <iostream>
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a/b<<" "<<a%b; 
    return 0;
}

05:计算分数的浮点数值

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

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

输入

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

输出

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

样例输入

5 7

样例输出

0.714285714

提示

使用printf("%.9lf", …)实现保留小数点后9位

#include <iostream>
#include <stdio.h>
using namespace std;

int main(){
    double a,b;
    cin>>a>>b;
    printf("%.9lf",a/b);
    return 0;
}

06:甲流疫情死亡率

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

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

输入

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

输出

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

样例输入

10433 60

样例输出

0.575%

提示

输出%可以使用printf(“%%”);

#include <iostream>
#include <stdio.h>
using namespace std;

int main(){
    double a,b;
    cin>>a>>b;
    printf("%.3lf%%",b/a*100);  //"%%"转义输出字符"%"
    return 0;
}

07:计算多项式的值

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

对于多项式f(x) = ax3 + bx2 + cx + d 和给定的a, b, c, d, x,计算f(x)的值。

输入

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

输出

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

样例输入

2.31 1.2 2 2 3

样例输出

33.0838692
#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    double x,a,b,c,d;
    cin>>x>>a>>b>>c>>d;
    printf("%.7lf",a*x*x*x+b*x*x+c*x+d);
    return 0;
}


08:温度表达转化

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

利用公式 C = 5 * (F-32) / 9 (其中C表示摄氏温度,F表示华氏温度) 进行计算转化。

输入

输入一行,包含一个实数f,表示华氏温度。(f >= -459.67)

输出

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

样例输入

41

样例输出

5.00000

提示

C/C++,使用double

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	double f,c;
	cin>>f;
	c=5*(f-32)/9;
	printf("%.5lf",c);
	return 0;
}

09:与圆相关的计算

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

给出圆的半径,求圆的直径、周长和面积。

输入

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

输出

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

样例输入

3.0

样例输出

6.0000 18.8495 28.2743

提示

如果圆的半径是r,那么圆的直径、周长、面积分别是2*r、2 * pi * r、pi * r * r,其中约定pi=3.14159。
可以使用printf("%.4lf", …)实现保留小数点后4位。

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	double r,d,s,c,PI=3.14159;
	cin>>r;
	d=2*r;
	s=PI*r*r;
	c=2*PI*r;
	printf("%.4lf ",d);
	printf("%.4lf ",c);
	printf("%.4lf",s);
	return 0;
}

10:计算并联电阻的阻值

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

对于阻值为r1和r2的电阻,其并联电阻阻值公式计算如下:

R = 1/(1/r1 + 1/r2)

输入

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

输出

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

样例输入

1 2

样例输出

0.67

提示

计算过程使用float类型

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    float r1,r2;
    cin>>r1>>r2;
    printf("%.2f",1/(1/r1+1/r2));
    return 0;
}

11:计算浮点数相除的余数

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

计算两个双精度浮点数a和b的相除的余数,a和b都是正数的。这里余数(r)的定义是:a = k * b + r,其中 k是整数, 0 <= r < b。

输入

输入仅一行,包括两个双精度浮点数a和b。

输出

输出也仅一行,a÷b的余数

样例输入

73.263 0.9973

样例输出

0.4601

提示

注意:输出时小数尾部没有多余的0,可以用下面这种格式:
double x;
x = 1.33;
printf("%g", x);

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    double a,b,r;
    int k;
    cin>>a>>b;
    k = a/b;
    r = a-b*k;
    printf("%g",r);     //%g,格式控制符,输出时小数尾部没有多余的0
    return 0;
}


12:计算球的体积

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

对于半径为r的球,其体积的计算公式为V=4/3*πr3,这里取π= 3.14。

现给定r,求V。

输入

输入为一个不超过100的非负实数,即球半径,类型为double。

输出

输出一个实数,即球的体积,保留到小数点后2位。

样例输入

4

样例输出

267.95
#include <iostream>
#include <cstdio>
#define Pi 3.14     //宏定义常量Pi(用于常量定义)
using namespace std;

int main(){
    double r;
    cin>>r;
    printf("%.2lf",(4/3.0)*Pi*r*r*r);   //分数相除,小数点技巧强制转换为浮点数
    return 0;
}

13:反向输出一个三位数

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

将一个三位数反向输出。

输入

一个三位数n。

输出

反向输出n。

样例输入

100

样例输出

001
#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    int a;
    int x1,x2,x3;
    cin>>a;
    x1 = a/100;
    x2 = a%100/10;
    x3 = a%10;              //使用求除法余技巧拆开每一位数
    cout<<x3<<x2<<x1;
    return 0;
}

14:大象喝水

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,底面半径为r厘米的小圆桶(h和r都是整数)。问大象至少要喝多少桶水才会解渴。

输入

输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深h和底面半径r,单位都是厘米。

输出

输出一行,包含一个整数,表示大象至少要喝水的桶数。

样例输入

23 11

样例输出

3

提示

如果一个圆桶的深为h厘米,底面半径为r厘米,那么它最多能装Pi * r * r * h立方厘米的水。(设Pi=3.14159)
1升 = 1000毫升
1毫升 = 1 立方厘米

#include <iostream>
#include <cstdio>
#define Pi 3.14159
using namespace std;

int main(){
    int h,r,k;  //需要k桶水
    double V;
    cin>>h>>r;
    V = Pi*r*r*h;
    k = 20000/V+1;  //浮点数赋值给整数,会向下强制类型转换
    cout<<k;
    return 0;
}


15:苹果和虫子

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?

输入

输入仅一行,包括n,x和y(均为整数)。输入数据保证y <= n * x。

输出

输出也仅一行,剩下的苹果个数

样例输入

10 4 9

样例输出

7

提示

注意:是要求完整的苹果数。

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    int n,x,y;
    cin>>n>>x>>y;
    if(y%x){
        cout<<(n-y/x-1);
    }else{
        cout<<(n-y/x);
    }
    return 0;
}


16:计算线段长度

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

已知线段的两个端点的坐标A(Xa,Ya),B(Xb,Yb),求线段AB的长度。

输入

共两行。
第一行是两个实数Xa,Ya,即A的坐标。
第二行是两个实数Xb,Yb,即B的坐标。
输入中所有实数的绝对值均不超过10000。

输出

一个实数,即线段AB的长度,保留到小数点后3位。

样例输入

1 1
2 2

样例输出

1.414
#include <iostream>
#include <cstdio>
#include <math.h>
using namespace std;

int main(){
    double Xa,Ya,Xb,Yb,L;
    cin>>Xa>>Ya>>Xb>>Yb;
    L = sqrt((Xa-Xb)*(Xa-Xb)+(Ya-Yb)*(Ya-Yb));
    printf("%.3lf",L);
    return 0;
}


17:计算三角形面积

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少。

输入

输入仅一行,包括6个单精度浮点数,分别对应x1, y1, x2, y2, x3, y3。

输出

输出也是一行,输出三角形的面积,精确到小数点后两位。

样例输入

0 0 4 0 0 3

样例输出

6.00

提示

海伦公式

#include <iostream>
#include <cstdio>
#include <math.h>   //包含各种数学函数的头文件
using namespace std;

int main(){
    float x1,y1,x2,y2,x3,y3;
    float a,b,c,p,S;    //abc为三边长,p为半周长,S为面积
    cin>>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("%.2f",S);
    return 0;
}
//sqrt()函数需要用到<math.h>头文件

18:等差数列末项计算

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

给出一个等差数列的前两项a1,a2,求第n项是多少。

输入

一行,包含三个整数a1,a​2,n。-100 <= a1,a​2 <= 100,0 < n <= 1000。

输出

一个整数,即第n项的值。

样例输入

1 4 100

样例输出

298
#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    int a1,a2;
    int n,d;
    cin>>a1>>a2>>n;
    d = a2-a1;
    cout<<(a1+(n-1)*d);
    return 0;
}


19:A*B问题

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

输入两个正整数A和B,求A*B。

输入

一行,包含两个正整数A和B,中间用单个空格隔开。1 <= A,B <= 50000。

输出

一个整数,即A*B的值。

样例输入

3 4

样例输出

12

提示

注意乘积的范围和数据类型的选择

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    long long A,B;
    cin>>A>>B;
    cout<<A*B;
    return 0;
}


20:计算2的幂

原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

给定非负整数n,求2n。

输入

一个整数n。0 <= n < 31。

输出

一个整数,即2的n次方。

样例输入

3

样例输出

8
#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    int n,a=1;
    cin>>n;
    for(int i=0;i<n;i++){
        a = a*2;
    }
    cout<<a;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值