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

发布时间:2024年01月24日

前言

本章主要是让我们了解变量与运算符的使用,题目也都比较简单,当然也需要我们一点点数学的基本知识,才能让我们更好的理解这章的题目。

1. A+B问题

总时间限制: 1000ms 内存限制: 65536kB
描述
在大部分的在线题库中,都会将A+B问题作为第一题,以帮助新手熟悉平台的使用方法。
A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。
现在请你解决这一问题。
输入
一行,包含两个整数A,B,中间用单个空格隔开。A和B均在整型范围内。
输出
一个整数,即A+B的值。保证结果在整型范围内。
样例输入
1 2
样例输出
3

题目保证结果在整形范围内,所以只需要定义两个整型变量即可

C语言实现

#include <stdio.h>

int main(){
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d", a + b);
    return 0;
}

Java实现

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int A=sc.nextInt();
        int B=sc.nextInt();
        System.out.println(A+B);
    }
}

2. 计算(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

考察运算符的使用

C语言实现

#include <stdio.h>

int main(){
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    printf("%d", (a + b)*c);
    return 0;
}

Java实现

import java.util.Scanner;

/*给定3个整数a、b、c,计算表达式(a+b)*c的值。*/
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        int c=sc.nextInt();
        System.out.println((a+b)*c);
    }
}

3. 计算(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

考察运算符的使用

C语言实现

#include <stdio.h>

int main(){
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    printf("%d", (a + b)/c);
    return 0;
}

Java实现

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        int c=sc.nextInt();
        System.out.println((a+b)/c);
    }
}

4. 带余除法

总时间限制: 1000ms 内存限制: 65536kB
描述
给定被除数和除数,求整数商及余数。
此题中请使用默认的整除和取余运算,无需对结果进行任何特殊处理。看看程序运行结果与数学上的定义有什么不同?
输入
一行,包含两个整数,依次为被除数和除数(除数非零),中间用一个空格隔开。
输出
一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。
样例输入
10 3
样例输出
3 1

考察/%的使用

C语言实现

#include <stdio.h>

int main(){
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d %d", a / b, a%b);
    return 0;
}

Java实现

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        System.out.print(a/b+" ");
        System.out.println(a%b);
    }
}

5. 计算分数的浮点数值

总时间限制: 1000ms 内存限制: 65536kB
描述
两个整数a和b分别作为分子和分母,既分数 a/b ,求它的浮点数值(双精度浮点数,保留小数点后9位)
输入
输入仅一行,包括两个整数a和b(b不为0)
输出
输出也仅一行,分数 a/b 的浮点数值(双精度浮点数,保留小数点后9位)
样例输入
5 7
样例输出
0.714285714

考察浮点数的除法. 浮点数一般都定义成double类型,因为题目说a和b是整数,所以我就定义成int类型了,不过定义为double类型也是可以的
通过与上题的对比, 我们可以了解到浮点数与整数的除法所得结果不同. 整形数据因为只存储整数部分,所以两数相除所得结果只能是整数,而浮点数有小数部分,两数相除所得结果比整形数据精度更大,即有小数部分

C语言实现

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%.9f", (double)a / (double)b);
    return 0;
}

Java实现

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        double a=sc.nextInt();
        double b=sc.nextInt();
        System.out.printf("%.9f",a/b);
    }
}

6. 甲流疫情死亡率

总时间限制: 1000ms 内存限制: 65536kB
描述
甲流并不可怕,在中国,它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。
输入
输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。
输出
输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后3位。
样例输入
10433 60
样例输出
0.575%
提示
输出%可以使用printf(“%%”);

同样考察浮点数的除法

C语言实现

#include <stdio.h>

int main()
{
    double a, b;
    scanf("%lf %lf", &a, &b);
    printf("%.3lf%%", b / a * 100);
    return 0;
}

Java实现

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        double a=sc.nextInt();
        double b=sc.nextInt();
        System.out.printf("%.3f%%",b/a*100);
    }
}

7. 计算多项式的值

总时间限制: 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

本题用到了一个库函数math, pow(x, 3)表示的意思就是x3, 也可以写成x*x*x

C语言实现

#include <stdio.h>
#include <math.h>

int main() {
    double x, a, b, c, d;
    scanf("%lf %lf %lf %lf %lf", &x, &a, &b, &c, &d);
    // printf("%f %f %f %f %f", x, a, b, c, d);
    double f = a * pow(x, 3) + b * pow(x, 2) + c * x + d;
    printf("%.7f", f);
}

Java实现

import java.util.Scanner;

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

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        double x=sc.nextDouble();
        double a=sc.nextDouble();
        double b=sc.nextDouble();
        double c=sc.nextDouble();
        double d=sc.nextDouble();

        double s=a*Math.pow(x,3)+b*Math.pow(x,2)+c*x+d;
        System.out.printf("%.7f",s);
    }
}

8. 温度表达转化

总时间限制: 1000ms 内存限制: 65536kB
描述
利用公式 C = 5 * (F-32) / 9 (其中C表示摄氏温度,F表示华氏温度) 进行计算转化。
输入
输入一行,包含一个实数f,表示华氏温度。(f >= -459.67)
输出
输出一行,包含一个实数,表示对应的摄氏温度,要求精确到小数点后5位。
样例输入
41
样例输出
5.00000

C语言实现

#include <stdio.h>

int main()
{
    double f;
    scanf("%lf", &f);
    printf("%.5lf", 5*(f-32)/9);
    return 0;
}

Java实现

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        double F=sc.nextDouble();
        double C=5*(F-32)/9;
        System.out.printf("%.5f",C);
    }
}

9. 与圆相关的计算

总时间限制: 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位。

这题的pi和r都需要定义成double类型才能通过

C语言实现

#include <stdio.h>

int main() {
    double PI = 3.14159;
    double r;
    scanf("%lf", &r);
    printf("%.4lf %.4lf %.4lf", 2 * r, 2 * PI * r, PI * r * r);
}

Java实现

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        double pi = 3.14159;
        Scanner sc = new Scanner(System.in);
        double r = sc.nextDouble();
        System.out.printf("%.4f %.4f %.4f", 2 * r, 2 * pi * r, pi * r * r);
    }
}

10. 计算并联电阻的阻值

总时间限制: 1000ms 内存限制: 65536kB
描述
对于阻值为r1和r2的电阻,其并联电阻阻值公式计算如下:
R = 1/(1/r1 + 1/r2)
输入
两个电阻阻抗大小,浮点型,以一个空格分开。
输出
并联之后的阻抗大小,结果保留小数点后2位
样例输入
1 2
样例输出
0.67

C语言实现

#include <stdio.h>

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

Java实现

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        float r1=sc.nextFloat();
        float r2=sc.nextFloat();
        System.out.printf("%.2f",1/(1/r1+1/r2));
    }
}

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);

C语言中浮点数不能用%求余数, 要求浮点数的余数,首先a/b取得整数部分,即强转为int类型,然后再乘b,最后再用a减去上面所得结果,才能求得浮点数的余数

C语言实现

#include <stdio.h>

int main() {
    double a, b;
    scanf("%lf %lf", &a, &b);
    // printf("%d\n", (int)(a / b));
    printf("%g", a - (int)(a / b) * b);
}

在Java中可以使用%求浮点数的余数, 但是这样直接算到的结果会不准确
因此需要将计算所得的结果通过String.format()格式化, 参数%g的描述:
The result is formatted using computerized scientific notation or decimal format, depending on the precision and the value after rounding.
翻译过来就是:根据精度和四舍五入后的值,使用计算机科学记数法或十进制格式对结果进行格式化。
最后使用BigDecimal类中的stripTrailingZeros()方法去除小数后多余的0

Java实现

import java.math.BigDecimal;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        double a = sc.nextDouble();
        double b = sc.nextDouble();
        double remainder = a % b;
//        System.out.println(remainder);//0.46010000000000784
        //这样算算出来的结果不准确
        //为什么会出现这样的现象,这是因为二进制表示的小数可以做到“每个十进制整数都有对应的二进制数”,但是不能做到“每一个十进制小数都有对应的二进制数”
        //所以浮点类型 float、 double 的数据不适合在不容许舍入误差的金融计算领域。
        //所以在编程中,可以采用四舍五入的方式进行验证,避免上述问题
        //先用format方法,将结果进行格式化,再调用BigDecimal类的stripTrailingZeros方法,移除remainder小数点后多余的0
        BigDecimal res = new BigDecimal(String.format("%g", remainder)).stripTrailingZeros();
        //调用了stripTrailingZeros()再调用 toString() 将会转换为科学计数法输出。如果不希望用科学计数法输出,可以使用toPlainString()进行全字符输出。
        System.out.println(res.toPlainString());
    }
}

12. 计算球的体积

总时间限制: 1000ms 内存限制: 65536kB
描述
对于半径为r的球,其体积的计算公式为V=4/3*πr3,这里取π= 3.14。
现给定r,求V。
输入
输入为一个不超过100的非负实数,即球半径,类型为double。
输出
输出一个实数,即球的体积,保留到小数点后2位。
样例输入
4
样例输出
267.95

这个题目如果要按照公式的4/3*πr^3的顺序来写的话,要注意4要写成浮点类型4.0, 否则结果会出错

C语言实现

#include <stdio.h>

int main()
{
    double r;
    double pi = 3.14;
    scanf("%lf", &r);
    printf("%.2lf", 4.0 / 3 * pi * r * r * r);
    return 0;
}

Java实现

import java.util.Scanner;

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

现给定r,求V。*/
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        double r=sc.nextDouble();
        System.out.printf("%.2f",4*1.0/3*3.14*Math.pow(r,3));
    }
}

13. 反向输出一个三位数

总时间限制: 1000ms 内存限制: 65536kB
描述
将一个三位数反向输出。
输入
一个三位数n。
输出
反向输出n。
样例输入
100
样例输出
001

C语言实现

#include <stdio.h>

int main()
{
    int n;
    scanf("%d", &n);
    printf("%d%d%d", n % 10, n / 10 % 10, n / 100);
    return 0;
}

Java实现

import java.util.Scanner;

/*将一个三位数反向输出。*/
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int a=n/100;
        int b=n/10%10;
        int c=n%10;
        System.out.print(c);
        System.out.print(b);
        System.out.println(a);
    }
}

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 立方厘米

这个题目要用到math库函数中的ceil()函数,表示向上取整

C语言实现

#include <stdio.h>
#include <math.h>

int main()
{
    double pi = 3.14159;
    double h, r;
    scanf("%lf %lf", &h, &r);
    printf("%d", (int)ceil(20000.0 / (pi * r * r * h)));
    return 0;
}

Java实现

import java.util.Scanner;

/*一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,底面半径为r厘米的小圆桶(h和r都是整数)。问大象至少要喝多少桶水才会解渴。*/
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        float PI=3.14159f;
        double h=sc.nextDouble();
        double r=sc.nextDouble();
        System.out.printf("%d",(int)Math.ceil(20000 / (PI * r * r * h)));
    }
}

15. 苹果和虫子

总时间限制: 1000ms 内存限制: 65536kB
描述
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?
输入
输入仅一行,包括n,x和y(均为整数)。输入数据保证y <= n * x。
输出
输出也仅一行,剩下的苹果个数
样例输入
10 4 9
样例输出
7

这题是使用math库函数中的floor()函数,表示向下取整

C语言实现

#include <stdio.h>
#include <math.h>

int main()
{
    double n, x, y;
    scanf("%lf %lf %lf", &n, &x, &y);
    printf("%d", (int)floor(n - y / x));
    return 0;
}

Java实现

import java.util.Scanner;

/*你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?*/
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        double n=sc.nextInt();
        double x=sc.nextInt();
        double y=sc.nextInt();
        System.out.printf("%d",(int)Math.floor(n-y/x));
    }
}

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

根据中学学的求两个点之间的线段长度公式√△x2+△y2, 然后这题就变得很简单了

C语言实现

#include <stdio.h>
#include <math.h>

int main() {
    double xa, ya;
    double xb, yb;
    scanf("%lf %lf", &xa, &ya);
    scanf("%lf %lf", &xb, &yb);
    double ab = sqrt((xa - xb) * (xa - xb) + (ya - yb) * (ya - yb));
    printf("%.3lf", ab);
}

Java实现

import java.util.Scanner;

/*已知线段的两个端点的坐标A(Xa,Ya),B(Xb,Yb),求线段AB的长度。*/
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        double xa =sc.nextDouble();
        double ya =sc.nextDouble();
        double xb =sc.nextDouble();
        double yb =sc.nextDouble();
        System.out.printf("%.3f",Math.sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb)));
    }
}

17. 计算三角形面积

总时间限制: 1000ms 内存限制: 65536kB
描述
平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少。
输入
输入仅一行,包括6个单精度浮点数,分别对应x1, y1, x2, y2, x3, y3。
输出
输出也是一行,输出三角形的面积,精确到小数点后两位。
样例输入
0 0 4 0 0 3
样例输出
6.00
提示
海伦公式

这个题目关键就是知道海伦公式求三角形面积, 海伦公式:S=√p*(p-a)(p-b)(p-c), 其中p=(a+b+c)/2, a,b,c分别表示三角形三条边的长度,根据上一题就已经知道怎么求两点之间线段的长度,最后套公式即可,这样,这个题目就解决了

C语言实现

#include <stdio.h>
#include <math.h>

int main() {
    double x1, y1, x2, y2, x3, y3;
    scanf("%lf %lf %lf %lf %lf %lf", &x1, &y1, &x2, &y2, &x3, &y3);
    //计算出三条边的长度
    double a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
    double b = sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3));
    double c = sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3));
    //根据海伦公式求三角形面积:S=√p*(p-a)(p-b)(p-c), p=(a+b+c)/2
    double p = (a + b + c) / 2;
    // printf("%lf %lf %lf %lf\n", a, b, c, p);
    printf("%.2lf", sqrt(p * (p - a) * (p - b) * (p - c)));
}

Java实现

import java.util.Scanner;

/*平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少。*/
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        float x1=sc.nextFloat(),
                y1=sc.nextFloat(),
                x2=sc.nextFloat(),
                y2=sc.nextFloat(),
                x3=sc.nextFloat(),
                y3=sc.nextFloat();
        double a=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
        double b=Math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
        double c=Math.sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
        double p=(a+b+c)/2;
        System.out.printf("%.2f",Math.sqrt(p*(p-a)*(p-b)*(p-c)));
    }
}

18. 等差数列末项计算

总时间限制: 1000ms 内存限制: 65536kB
描述
给出一个等差数列的前两项a1,a2,求第n项是多少。
输入
一行,包含三个整数a1,a?2,n。-100 <= a1,a?2 <= 100,0 < n <= 1000。
输出
一个整数,即第n项的值。
样例输入
1 4 100
样例输出
298

根据我们中学学过的等差数列求第n项公式an=a1+(n-1)*d, d为公差

C语言实现

#include <stdio.h>

int main() {
    int a1, a2, n;
    scanf("%d %d %d", &a1, &a2, &n);
    printf("%d", a1 + (n - 1) * (a2 - a1));
    return 0;
}

Java实现

import java.util.Scanner;

/*给出一个等差数列的前两项a1,a2,求第n项是多少。*/
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a1=sc.nextInt();
        int a2=sc.nextInt();
        int n=sc.nextInt();
        System.out.printf("%d",a1+(n-1)*(a2-a1));
    }
}

19. A*B问题

总时间限制: 1000ms 内存限制: 65536kB
描述
输入两个正整数A和B,求AB。
输入
一行,包含两个正整数A和B,中间用单个空格隔开。1 <= A,B <= 50000。
输出
一个整数,即A
B的值。
样例输入
3 4
样例输出
12

整数乘法很容易溢出, 所以数据类型应选择比int类型更大的long类型

C语言实现

#include <stdio.h>
#include <math.h>

int main()
{
    long long a, b;
    scanf("%lld %lld", &a, &b);
    printf("%lld", a * b);
    return 0;
}

Java实现

import java.util.Scanner;

/*输入两个正整数A和B,求A*B。*/
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        
        long a=sc.nextLong();
        long b=sc.nextLong();
        System.out.println(a*b);
    }
}

20. 计算2的幂

总时间限制: 1000ms 内存限制: 65536kB
描述
给定非负整数n,求2n。
输入
一个整数n。0 <= n < 31。
输出
一个整数,即2的n次方。
样例输入
3
样例输出
8

这题最佳方法是用位运算符

C语言实现

#include <stdio.h>
#include <math.h>

int main()
{
    int n;
    scanf("%d", &n);
    //方法1: 用math库函数中的pow()函数
    // printf("%d", (int)pow(2.0, n));
    //方法2: 用位运算符
    if(n == 0) printf("1");
    else printf("%d", 2 << (n-1));
    return 0;
}

Java实现

import java.util.Scanner;

/*给定非负整数n,求2n。*/
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        System.out.println((int)Math.pow(2,n));
    }
}
文章来源:https://blog.csdn.net/Lilianach/article/details/135640634
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。