OpenJudge题解——1.3编程基础之算术表达式与顺序执行

本文介绍了编程中常见的计算问题,包括加减乘除、浮点数处理、多项式求值、几何计算、电阻并联、余数计算、球体积、温度转换、圆周及相关计算、电阻并联、浮点数相除余数、球体积计算、数字翻转、大象饮水、苹果与虫子、线段长度、三角形面积、等差数列、乘积计算和指数运算,涵盖了基础数学与编程的结合应用。
摘要由CSDN通过智能技术生成


01:A+B问题

提示:见代码。

#include <cstdio>
using namespace std;
int main(){
	int a,b;
	scanf("%d%d",&a,&b);
	printf("%d",a+b);
	return 0;
}

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

提示:见代码。

#include <cstdio>
using namespace std;
int main(){
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("%d",(a+b)*c);
	return 0;
}

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

提示:见代码。

#include <cstdio>
using namespace std;
int main(){
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("%d",(a+b)/c);
	return 0;
}

04:带余除法

提示:见代码。

#include <cstdio>
using namespace std;
int main(){
	int a,b;
	scanf("%d%d",&a,&b);
	printf("%d %d",a/b,a%b);
	return 0;
}

05:计算分数的浮点数值

提示:见代码。

#include <cstdio>
using namespace std;
int main(){
	double a,b;
	scanf("%lf%lf",&a,&b);
	printf("%.9lf",a/b);
	return 0;
}

06:甲流疫情死亡率

提示:见代码。

#include <cstdio>
using namespace std;
int main(){
	double a,b;
	scanf("%lf%lf",&a,&b);
	printf("%.3lf%%",b/a*100);
	return 0;
}

07:计算多项式的值

提示:注意变量x是第一个输入的。

#include <cstdio>
using namespace std;
int main(){
	double a,b,c,d,x;
	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;
}

08:温度表达转化

提示:见代码。

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

09:与圆相关的计算

提示:见代码。

#include <cstdio>
using namespace std;
int main(){
	double r,d,c,s,pi=3.14159;
	scanf("%lf",&r);
	d=2*r;
	c=2*pi*r;
	s=pi*r*r;
	printf("%.4lf %.4lf %.4lf",d,c,s);
	return 0;
}

10:计算并联电阻的阻值

提示:见代码。

#include <cstdio>
using namespace std;
int main(){
	float r1,r2,R;
	scanf("%f%f",&r1,&r2);
	R=1/(1/r1+1/r2);
	printf("%.2f",R);
	return 0;
}

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

提示:使用%g去掉多余的0。

#include<cstdio>
using namespace std;
int main(){
	double a,b,r;
	int k;
	scanf("%lf%lf",&a,&b);
	k=a/b;
	r=a-k*b;
	printf("%g",r); 
	return 0;
}

12:计算球的体积

提示:注意计算是要将4/3写成4.0/3,否则得到结果是1。

#include<cstdio>
using namespace std;
int main(){
	double V,r,Pi=3.14;	
	scanf("%lf",&r);
	V=(4.0/3)*Pi*r*r*r;
	printf("%.2lf",V); 
	return 0;
}

13:反向输出一个三位数

提示:使用整型变量a表示这个三位数,那它的百位可以通过a/100得到,十位可以通过a%100/10得到,个位可以通过a%100%10得到。

#include<cstdio>
using namespace std;
int main(){
	int a,g,s,b;
	scanf("%d",&a);
	b=a/100;
	s=a%100/10;
	g=a%100%10; 
	printf("%d%d%d",g,s,b); 
	return 0;
}

14:大象喝水

提示:1升 = 1000毫升 = 1000 立方厘米。可以使用数学函数ceil(x)对取得的数进行向上取整。

#include<cstdio>
#include<math.h>
using namespace std;
int main(){
	int h,r,n;
	double Pi=3.14159;
	scanf("%d%d",&h,&r);
	n=ceil(20000/(Pi*r*r*h));
	printf("%d",n); 
	return 0;
}

15:苹果和虫子

提示:同样使用数学函数ceil(x)对取得的数进行向上取整,注意y/x得到的是一个整数,y*1.0/x才能求得浮点数。

#include<cstdio>
#include<math.h>
using namespace std;
int main(){
	int n,x,y,ans;
	scanf("%d%d%d",&n,&x,&y);
	ans=n-ceil(y*1.0/x);
	printf("%d",ans);
	return 0;
}

16:计算线段长度

提示:【两点间的距离公式】
在这里插入图片描述
使用数学函数sqrt(x)开平方,使用pow(x,2)求2次方。注意数据要定义成double。

#include<cstdio>
#include<math.h>
using namespace std;
int main(){
	double Xa,Ya,Xb,Yb,len;
	scanf("%lf%lf%lf%lf",&Xa,&Ya,&Xb,&Yb);
	len=sqrt(pow(Xa-Xb,2)+pow(Ya-Yb,2));
	printf("%.3lf",len);
	return 0;
}

17:计算三角形面积

提示:【海伦公式】
假设在平面内,有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得:
在这里插入图片描述
而公式里的p为半周长(周长的一半):
在这里插入图片描述
边长a、b、c,可以通过【两点间的距离公式】求得。
在这里插入图片描述

#include<cstdio>
#include<math.h>
using namespace std;
int main(){
	float X1,Y1,X2,Y2,X3,Y3,a,b,c,p,s;
	scanf("%f%f%f%f%f%f",&X1,&Y1,&X2,&Y2,&X3,&Y3);
	a=sqrt(pow(X1-X2,2)+pow(Y1-Y2,2));
	b=sqrt(pow(X1-X3,2)+pow(Y1-Y3,2));
	c=sqrt(pow(X3-X2,2)+pow(Y3-Y2,2));
	p=(a+b+c)/2;
	s=sqrt(p*(p-a)*(p-b)*(p-c));
	printf("%.2f",s);
	return 0;
}

18:等差数列末项计算

提示:等差数列{an}的通项公式为 an=a1+(n-1)d 。

#include<cstdio>
using namespace std;
int main(){
	int a1,a2,n,d,an;
	scanf("%d%d%d",&a1,&a2,&n);
	d=a2-a1;
	an=a1+(n-1)*d;
	printf("%d",an);
	return 0;
}

19:A*B问题

提示:乘积的范围超int了,使用long long

#include<cstdio>
using namespace std;
int main(){
	long long a,b;
	scanf("%lld%lld",&a,&b);
	printf("%lld",a*b);
	return 0;
}

20:计算2的幂

提示:见代码。

#include<cstdio>
#include<math.h>
using namespace std;
int main(){
	int n,ans;
	scanf("%d",&n);
	ans=pow(2,n);
	printf("%d",ans);
	return 0;
}

以上为个人见解,欢迎指正!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值