天梯初级练习题目 7-31 ~ 7-40 含全部测试点

7-31 生成3的乘方表 分数 15

输入一个非负整数n,生成一张3的乘方表,输出30~3n的值。可调用幂函数计算3的乘方。

输入格式:

输入在一行中给出一个非负整数n。

输出格式:

按照幂的递增顺序输出n+1行,每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围。

输入样例:

3

输出样例:

pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <iostream>
using namespace std;
typedef long long LL;
int n;

// 快速幂模板
LL qmi(int a, int b)
{
    LL res = 1;
    while(b)
    {
        if(b & 1) res = res * a;
        a = a * a;
        b >>= 1;
    }
    return res;
}

int main()
{
    cin >> n;
    for(int i = 0; i <= n; ++ i)
        printf("pow(%d,%d) = %d\n", 3, i, qmi(3, i));
    return 0;
}

7-32 求平方根序列前N项和 分数 15

本题要求编写程序,计算平方根序列1​+2​+3​+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位。题目保证计算结果不超过双精度范围。

输入样例:

10

输出样例:

sum = 22.47

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <iostream>
#include <cmath>
using namespace std;
int n;
double ans;

int main()
{
    cin >> n;
    for(int i = 1; i <= n; ++ i) ans += sqrt(i);
    printf("sum = %.2lf\n", ans);
    return 0;
}

7-33 求阶乘序列前N项和 分数 15

本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和。

输入格式:

输入在一行中给出一个不超过12的正整数N。

输出格式:

在一行中输出整数结果。

输入样例:

5

输出样例:

153

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <iostream>
using namespace std;
typedef long long LL;
const int N = 20;
LL st[N] = {1};
int n;
LL ans;

int main()
{
    cin >> n;
    for(int i = 1; i <= n; ++ i) st[i] = st[i - 1] * i, ans += st[i];
    cout << ans << endl;
    
    return 0;
}

7-34 求幂之和 分数 15

本题要求编写程序,计算sum=21+22+23+⋯+2n。可以调用pow函数求幂。

输入格式:

输入在一行中给出正整数n(≤10)。

输出格式:

按照格式“result = 计算结果”输出。

输入样例:

5

输出样例:

result = 62

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <iostream>
using namespace std;
int n;
long long ans;

int main()
{
    cin >> n;
    for(int i = 1; i <= n; ++ i) ans += 1 << i;
    cout << "result = " << ans << endl;
    return 0;
}

7-35 求组合数 分数 15

本题要求编写程序,根据公式Cnm​=m!(n−m)!n!​算出从n个不同元素中取出m个元素(m≤n)的组合数。

建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double

输入格式:

输入在一行中给出两个正整数m和n(m≤n),以空格分隔。

输出格式:

按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。

输入样例:

2 7

输出样例:

result = 21

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <iostream>
using namespace std;
const int N = 2010;
int st[N][N];
int a, b;

int main()
{
    cin >> a >> b;
    for(int i = 0; i < N; ++ i)
        for(int j = 0; j <= i; ++ j)
            if(!j) st[i][j] = 1;
            else st[i][j] = st[i - 1][j] + st[i - 1][j - 1];
    cout << "result = " << st[b][a] << endl;
    return 0;
}

7-36 计算符号函数的值 分数 10

对于任一整数n,符号函数sign(n)的定义如下:

请编写程序计算该函数对任一输入整数的值。

输入格式:

输入在一行中给出整数n。

输出格式:

在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。

输入样例1:

10

输出样例1:

sign(10) = 1

输入样例2:

0

输出样例2:

sign(0) = 0

输入样例3:

-98

输出样例3:

sign(-98) = -1

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <iostream>
using namespace std;
int n;

int main()
{
    cin >> n;
    printf("sign(%d) = %d\n", n, !n ? 0 : n > 0 ? 1 : -1);
    return 0;
}

7-37 比较大小 分数 10

本题要求将输入的任意3个整数从小到大输出。

输入格式:

输入在一行中给出3个整数,其间以空格分隔。

输出格式:

在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例:

4 2 8

输出样例:

2->4->8

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <iostream>
#include <algorithm>
using namespace std;
int st[3];

int main()
{
    cin >> st[0] >> st[1] >> st[2];
    sort(st, st + 3);
    printf("%d->%d->%d\n", st[0], st[1], st[2]);
    return 0;
}

7-38 两个数的简单计算器 分数 10

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。

输入格式:

输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。

输出格式:

当运算符为+-*/%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR

输入样例1:

-7 / 2

输出样例1:

-3

输入样例2:

3 & 6

输出样例2:

ERROR

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <iostream>
using namespace std;
int a, b;
char op;
int ans;

int main()
{
    cin >> a >> op >> b;
    if(op == '+') ans = a + b;
    else if(op == '-') ans = a - b;
    else if(op == '*') ans = a * b;
    else if(op == '/') ans = a / b;
    else if(op == '%') ans = a % b;
    else {
        puts("ERROR");
        return 0;
    }
    cout << ans << endl;
    return 0;
}

7-39 统计字符 分数 15

本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:

输入为10个字符。最后一个回车表示输入结束,不算在内。

输出格式:

在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。

输入样例:

aZ &
09 Az

输出样例:

letter = 4, blank = 3, digit = 2, other = 1

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <iostream>
#include <cctype>
using namespace std;
int a, b, c, d;
char op;

int main()
{
    for(int i = 1; i <= 10; ++ i)
    {
        op = getchar();
        if(isdigit(op)) c ++;
        else if(isalpha(op)) a ++;
        else if(isspace(op)) b ++;
        else d ++;
    }
    printf("letter = %d, blank = %d, digit = %d, other = %d\n", a, b, c, d);
    return 0;
}

7-40 查询水果价格 分数 15

给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上显示以下菜单:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit

用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。

输入格式:

输入在一行中给出用户连续输入的若干个编号。

输出格式:

首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。

输入样例1:

3 -1 0 2

输出样例1:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00

输入样例2:

1 2 3 3 4 4 5 6 7 8

输出样例2:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 3.00
price = 2.50
price = 4.10
price = 4.10
price = 10.20

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <iostream>
using namespace std;
double pc[] = {0.00, 3.00, 2.50, 4.10, 10.20};

int main()
{
    int op;
    cout << "[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit" << endl;
    for(int i = 1; i <= 5; ++ i)
    {
        cin >> op;
        if(!op) break;
        else if(op < 0 || op > 4) op = 0;
        printf("price = %.2lf\n", pc[op]);
    }
    return 0;
}

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值