注意数据类型与范围 & 1_3_四则运算 & 1_4_求圆的周长与面积 & 2_3_表达式求值一 & 2_5_求三角形的面积 & 2_9_数列求和 & 4_5_求幂值

本文提供多个数学计算案例,包括四则运算、圆的周长与面积计算、表达式求值等,涉及基本数学算法及编程实现。

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

目录

一、总述

二、1_3_四则运算

三、1_4_求圆的周长与面积

四、2_3_表达式求值一

五、2_5_求三角形的面积

六、2_9_数列求和

七、4_5_求幂值


一、总述

要注意使用的数能表示的范围(别超了!),使用过程中是否需要数据类型的转化输入输出时格式的规范

二、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”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值