山东大学23强基班计算机导论第三次习题答案

山东大学23强基班计算机导论第三次习题答案

7-1 计算分段函数[1]

分数 10

作者 颜晖

单位 浙大城市学院

本题目要求计算下列分段函数f(x)的值:

公式

输入格式:

输入在一行中给出实数x。

输出格式:

在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。

输入样例1:

10

输出样例1:

f(10.0) = 0.1

输入样例2:

0

输出样例2:

f(0.0) = 0.0

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

代码

#include <stdio.h>

int main()
{
    double n;
    scanf("%lf",&n);
    if(n == 0)
    {
        printf("f(0.0) = 0.0");
    } else {
        printf("f(%.1lf) = %.1lf",n,1.0/n);
    }
    return 0;
}

7-2 比较大小

分数 10

作者 杨起帆

单位 浙大城市学院

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

输入格式:

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

输出格式:

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

输入样例:

4 2 8

输出样例:

2->4->8

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

代码

操作有点骚,可忽略

#include <stdio.h>

int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    st:
    if(a > b)
    {
        a^=b;
        b^=a;
        a^=b;
    }
    if(b > c)
    {
        b^=c;
        c^=b;
        b^=c;
        goto st;
    }
    printf("%d->%d->%d",a,b,c);
}

7-3 判断一个三位数是否为水仙花数

分数 10

作者 颜晖

单位 浙大城市学院

本题要求编写程序,判断一个给定的三位数是否为水仙花数。三位水仙花数,即其个位、十位、百位数字的立方和等于该数本身。

输入格式:

输入在一行中给出一个需要判断的整数 N(100≤N≤999)。

输出格式:

如果N是水仙花数,则在一行中输出Yes,否则输出No。如果N不是三位数,则输出Invalid Value.

输入样例1:

153

输出样例1:

Yes

输入样例2:

500

输出样例2:

No

输入样例3:

-2

输出样例3:

Invalid Value.

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

代码

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    if (n >= 1000 || n < 100){
        cout<<"Invalid Value.";
        return 0;
    }
    int a,b,c;
    c = n % 10;
    b = n % 100 - c;
    a = n - b;
    b /= 10;
    a /= 100;
    if (a*a*a + b*b*b + c*c*c == n)
        cout<<"Yes";
    else
        cout<<"No";
    return 0;
}

7-4 计算分段函数[2]

分数 10

作者 陈建海

单位 浙江大学

本题目要求计算下列分段函数f(x)的值:

f2-11

注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。

输入格式:

输入在一行中给出实数x。

输出格式:

在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。

输入样例1:

10

输出样例1:

f(10.00) = 3.16

输入样例2:

-0.5

输出样例2:

f(-0.50) = -2.75

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

代码

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

double f(double x)
{
    if(x >= 0)
        return sqrt(x);
    else
        return (x+1)*(x+1) + 2*x + 1/x;
}

int main()
{
    double x;
    cin>>x;
    printf("f(%.2lf) = %.2lf",x,f(x));
}

7-5 阶梯电价

分数 10

作者 陈建海

单位 浙江大学

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。

输入格式:

输入在一行中给出某用户的月用电量(单位:千瓦时)。

输出格式:

在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。

输入样例1:

10

输出样例1:

cost = 5.30

输入样例2:

100

输出样例2:

cost = 55.50

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

代码

#include <iostream>
using namespace std;

double f(double x)
{
    if( x <= 50)
        return x * 0.53;
    else
        return 50*0.53 + (x-50)*0.58;
}

int main()
{
    double x;
    cin >> x;
    if(x < 0)
        printf("Invalid Value!");
    else
        printf("cost = %.2lf",f(x));
    return 0;
}

7-6 计算符号函数的值

分数 10

作者 C课程组

单位 浙江大学

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

img

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

输入格式:

输入在一行中给出整数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 main()
{
    int n;
    cin >> n;
    if(n==0)
        printf("sign(%d) = %d",n,n);
    else{
        int sign = n & (1 << 31);
        if(sign)
            printf("sign(%d) = -1",n);
        else
            printf("sign(%d) = 1",n);
    }
    
        
}

7-7 谁是赢家

分数 10

作者 陈越

单位 浙江大学

某电视台的娱乐节目有个表演评审环节,每次安排两位艺人表演,他们的胜负由观众投票和 3 名评委投票两部分共同决定。规则为:如果一位艺人的观众票数高,且得到至少 1 名评委的认可,该艺人就胜出;或艺人的观众票数低,但得到全部评委的认可,也可以胜出。节目保证投票的观众人数为奇数,所以不存在平票的情况。本题就请你用程序判断谁是赢家。

输入格式:

输入第一行给出 2 个不超过 1000 的正整数 Pa 和 Pb,分别是艺人 a 和艺人 b 得到的观众票数。题目保证这两个数字不相等。随后第二行给出 3 名评委的投票结果。数字 0 代表投票给 a,数字 1 代表投票给 b,其间以一个空格分隔。

输出格式:

按以下格式输出赢家:

The winner is x: P1 + P2

其中 x 是代表赢家的字母,P1 是赢家得到的观众票数,P2 是赢家得到的评委票数。

输入样例:

327 129
1 0 1

输出样例:

The winner is a: 327 + 1

鸣谢安阳师范学院软件学院李栋同学完善测试数据。

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

代码

#include <iostream>
using namespace std;

int main()
{
    int pa,pb;
    cin>>pa>>pb;
    int a,b,c;
    cin>>a>>b>>c;
    int p[2] = { 0 };
    p[a] ++;
    p[b] ++;
    p[c] ++;
    if((pa + p[0] > pb + p[1] || p[0] == 3) && (p[1] !=3))
    {
        cout<<"The winner is a: "<< pa << " + "<<p[0];
    } else {
        cout<<"The winner is b: "<< pb << " + "<<p[1];
    }
}

7-8 12-24小时制

分数 10

作者 翁恺

单位 浙江大学

编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。

输入格式:

输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。

提示:scanf的格式字符串中加入:,让scanf来处理这个冒号。

输出格式:

在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM

输入样例:

21:11

输出样例:

9:11 PM

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

代码

#include <iostream>
using namespace std;

int main()
{
    int a,b;
    scanf("%d:%d",&a,&b);
    if(a >= 12)
    {
        if(a > 12)
            a %= 12;
        printf("%d:%d PM",a,b);
    } else {
        printf("%d:%d AM",a,b);
    }
}

7-9 C程序设计 实验2-1求绝对值

分数 10

作者 王群芳

单位 合肥师范学院

计算并输出一个实数的绝对值。从键盘任意输入一个实数,不使用计算绝对值函数编程计算并输出该实数的绝对值。

输入格式:

输入任一实数。

输出格式:

输出的绝对值包含两位小数。

输入样例:

-2.5

输出样例:

2.50

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

代码

全是骚操作,具体原理可以看看IEEE对浮点的定义

#include <stdio.h>

int main()
{
    union {float f;unsigned int u} x;
    scanf("%f",&x.f);
    x.u &= 0x7fffffff;
    printf("%.2f\n",x.f);
}

7-10 成绩处理

分数 10

作者 王群芳

单位 合肥师范学院

编写程序,根据输入的成绩score(整型),输出及格与否的信息。

60≤ score≤100时, 输出P

当0≤ score<60时,输出F

如果输入成绩 score<0或 score>100,则输出Input error!

输入格式:

输入在一行中给出一个整数,表示成绩。

输出格式:

输出对应信息。

输入样例:

86

输出样例:

P

输入样例:

48

输出样例:

F

输入样例:

125

输出样例:

Input error!

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

代码

#include <iostream>
using namespace std;

int main()
{
    int x;
    cin>> x;
    if(60 <= x && x <= 100)
        cout<<'P'<<endl;
    else if(0<= x && x <60)
        cout<<'F'<<endl;
    else
        cout<<"Input error!"<<endl;
}
posted @ 2024-03-21 23:47  Icys  阅读(140)  评论(0编辑  收藏  举报