目录
一、总述
要注意使用的数能表示的范围(别超了!),使用过程中是否需要数据类型的转化,输入输出时格式的规范
二、1_3_四则运算
已知四则算式(a+b)*(a-b)+c/d,你的任务是从键盘输入四个浮点型变量,按照输入顺序分别存入四个双精度浮点型(double 型)变量中,假设这四个变量名即为a、b、c、d。将a、b、c、d代入到四则算式中,将计算结果保存到另外一个双精度浮点型(double 型)变量中。最后将该结果变量的值输出。
提示:
双精度浮点型(double型)变量的定义方法为: double a;
双精度浮点型变量的输入方法为scanf(“%lf”,&a);
双精度浮点型变量的输出方法为printf(“%lf”,a);。
输入格式:
为四个用空格分隔的浮点数,它们依次代表四则算式中的a、b、c、d。测试用例保证输入合法。
输出格式:
为一个浮点数,代表计算结果。假如输入的四个浮点数为1.5、2.0、10.00、5.0,那么你要输出计算结果0.250000。
输入样例:
1.5 2.0 10.00 5.0
输出样例:
0.250000
#include<stdio.h>
int main(){
double a,b,c,d,sum;
scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
sum=(a+b)*(a-b)+c/d;
printf("%lf",sum);
}
package pta1;
import java.util.Scanner;
public class PTA1 {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
double a,b,c,d;
a=in.nextDouble();
b=in.nextDouble();
c=in.nextDouble();
d=in.nextDouble();
System.out.printf("%.f",(a+b)*(a-b)+c/d);
}
}
三、1_4_求圆的周长与面积
已知圆的半径(浮点数),求该圆的周长和面积并输出。圆的半径、周长、面积均要用双精度浮点型(double 型)变量来存储。在程序中,你还要定义一个符号常量,常量名为PI,即π值:3.14159265。圆的周长公式为2*π*R,圆的面积公式为π*R*R,其中R为圆的半径。
输入格式:
为一个正的浮点数,代表圆的半径。测试用例保证输入合法。
输出格式:
只有一行。假如输入的半径为5.5,则输出为“The perimeter is 34.5575, the area is 95.0332.”。
注意,结果保留4位小数。
双精度浮点数打印4位小数的方法为:printf(“%.4lf”,area); “%.4lf”中”.4”即表示输出小数点后4位。
输入样例:
5.5
输出样例:
The perimeter is 34.5575, the area is 95.0332.
#include<stdio.h>
#define PI 3.14159265
int main(){
double r,S,C;
scanf("%lf",&r);
printf("The perimeter is %.4f, the area is %.4f.",2*PI*r,PI*r*r);
}
四、2_3_表达式求值一
有表达式如下:
a / ( b * c - d )
请按要求计算 。
输入格式:
只有一行,为4个用空格分隔的浮点数,依次代表a,b,c,d(请用double 类型存储)。
输出格式:
如果除数为0,则输出error,否则输出该表达式的值(保留1位小数)。
样例">输入样例:
66.09 7.7 3.5 1.6
输出样例:
2.6
#include<stdio.h>
int main(){
double a,b,c,d;
scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
if((int)(b*c-d)==0){
printf("error");
}
else {
printf("%.1lf",a/(b*c-d));
}
}
package pta1;
import java.util.Scanner;
public class PTA1 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
double a,b,c,d;
a=in.nextFloat();
b=in.nextFloat();
c=in.nextFloat();
d=in.nextFloat();
if((int)(b*c-d)==0) {
System.out.printf("error");
}
else {
System.out.printf("%.1f", a/(b*c-d));
}
}
}
五、2_5_求三角形的面积
已知三角形的三条边长a、b、c,求三角形的面积。三角形的面积可以根据海伦公式来计算,这里S代表周长的一半,Area代表三角形的面积:
求一个数的平方根需要用库函数sqrt(x)。参数x可以是整数或者浮点数,函数返回值是一个浮点数。在处理浮点数的时候,建议使用双精度浮点型(double型)变量,
注意:为了使用该函数,需要在main函数之前加上预处理语句:
#include <math.h>
%lf的默认输出为6位小数,如果想要输出3为小数,则应为%.3lf。
输入格式:
为三个用空格分隔的正整数a、b、c,代表三角形的三边长度。
输出格式:
只有一行。当输入的三条边a、b、c可以构成三角形时(即两条边的长度和大于第三条边的长度),输出三角形的面积,输出结果保留3位小数,假如a=5,b=12,c=13,则输出“30.000”;当a、b、c三条边无法构成三角形时,则输出“The edges cannot make up of a triangle.”。测试用例保证运算中用到的整数可以用int型存储,小数可以用double型存储。
输入样例:
5 12 13
输出样例:
30.000
#include<stdio.h>
#include<math.h>
int main(){
double S,Area;
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a+b<=c||a+c<=b||b+c<=a){
printf("The edges cannot make up of a triangle.");
}
else{
S=(double)(a+b+c)/2;
Area=sqrt(S*(S-a)*(S-b)*(S-c));
printf("%.3lf",Area);
}
}
package pta1;
import java.util.Scanner;
public class PTA1 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int a=in.nextInt(),b=in.nextInt(),c=in.nextInt();
double S;
if(a+b<=c||a+c<=b||b+c<=a) {
System.out.println("The edges cannot make up of a triangle.");
}
else {
S=(double)(a+b+c)/2;
System.out.println(Math.sqrt(S*(S-a)*(S-b)*(S-c)));
}
}
}
六、2_9_数列求和
已知正整数n与数列公式:
An = 1*2*3+2*3*4+3*4*5+…+(n-2)*(n-1)*n (n>=3)
An = 0 (n=1,2)
请根据n值计算该数列的前n项和的值,并输出。n的取值范围是(1<=n<=3000)。
注意:这里的An 只是一项,而我们要求的是计算该数列的前n项和。
提示:由于n值很大,建议使用long long型变量存储结果。
输入格式:
只有一个正整数n(1<=n<=3000)。
输出格式:
只有一个整数,为计算结果。
输入样例:
3000
输出样例:
12149993250000600
#include<stdio.h>
int main(){
long long n,An=0,sum=0;
scanf("%lld",&n);
if(n==1||n==2){
printf("0");
return 0;
}
else{
for(long long i=1;i<=n-2;i++){//当时这里long long也忘了!!
An+=i*(i+1)*(i+2);
sum+=An;
}
printf("%lld",sum);
}
}
七、4_5_求幂值
输入格式:
只有一个浮点数x,即代表ex中的指数x,且x满足x<=20。
输出格式:
只有一个浮点数,即ex的值,保留4位小数。
输入样例:
3.7
输出样例:
40.4473
#include<stdio.h>
#include<math.h>
int main(){
double x,n=1.0,result=1.0,X=1.0;
scanf("%lf",&x);
if(fabs(x)<=1e-8){
printf("1.0000");
return 0;
}
while(fabs(X)>=1e-8){
X=X*x/n;
result=result+X;
n++;
}
printf("%.4f",result);
}
这里用float不行,得用double。而且用了double还得匹配上“%lf”