上海海事大学自动化专业C语言课程代码参考(第五周)

非常抱歉第五周的作业拖到了第六周才写,因为第五周有电赛,耽误了不少时间,非常抱歉。

目录

上机实验

教材P72四、1

教材P72四、2

3-1 及格了吗

输入格式:

输出格式:

输入样例1:

输出样例1:

3-2 及格还是不及格

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

3-3 计算绝对值

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

3-4 计算分段函数(一)

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

 3-5 计算分段函数(二)

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

3-6 成绩转换(一)

输入格式:

输出格式:

输入样例:

输出样例:

3-7 分段计算居民水费

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

3-8 超速判断

输入格式:

输出格式:

输入样例1:

40

输出样例1:

输入样例2:

输出样例2:

3-9 符号函数

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

输入样例3:

输出样例3:

3-10 成绩转换(二)

输入格式:

输出格式:

输入样例:

输出样例:

结语


上机实验

教材P72四、1

 这次把题目截图摆上了(赞赏

与之前的题一样,是对ASCII码的考察。通过翻阅ASCII码表可以知道,数字的ASCII码在0x30~0x39之间,并且对应0~9。那么这题就很简单了,只需要判断是否处于这个区间并减去0x30就是转换成的数字。如下:

if(c >= 30 && c <= 39)    c -= 0x30;

这里出现了新的运算符&&,这是逻辑运算符,可以查看这里。简单来说&&就是只有左右条件都为真则结果为真。

在此最好换行,不过原题目没换行,我也就不换行了

教材P72四、2

 这一题在于对数据位数的判断。有两种思路,一种是除100、10后判断结果是否为0;另一种是直接与100、10比较。都可以判断,在此我选择了后者。如下:

if(a > 100)

else if(a > 10)

else

3-1 及格了吗

本题要求编写程序, 判定一个百分制成绩是否及格了。判定规则:

  • 大于等于60为“及格”;

输入格式:

输入在一行中给出一个整数的百分制成绩。

输出格式:

在一行中输出对应的判定结果。

输入样例1:

85

输出样例1:

及格

简单的if判断,直接看代码吧

#include <stdio.h>

int main()
{
    int a;

    scanf("%d", &a);
    if(a >= 60)
        printf("及格");

    return 0;
}

3-2 及格还是不及格

本题要求编写程序,判定一个百分制成绩是否及格。判定规则:

  • 大于等于60为“及格”;
  • 小于60为“不及格” 。

输入格式:

输入在一行中给出一个整数的百分制成绩。

输出格式:

在一行中输出对应的判定结果。

输入样例1:

85

输出样例1:

及格

输入样例2:

51

输出样例2:

不及格

啊……好像就比上一题多了一点点(比划,直接看代码吧

#include <stdio.h>

int main()
{
    int a;

    scanf("%d", &a);
    if(a >= 60)
        printf("及格");
    else
        printf("不及格");

    return 0;
}

3-3 计算绝对值

 本题目要求编程,计算下列分段函数 y=|x|的值,其中x与y都保留1位小数。

输入格式:

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

输出格式:

在一行中按“|x| = y”的格式输出,

输入样例1:

7

输出样例1:

|7.0| = 7.0

输入样例2:

-3

输出样例2:

|-3.0| = 3.0 

简单的判断,直接看代码

#include <stdio.h>

int main()
{
    float a;

    scanf("%f", &a);
    if(a >= 0)
        printf("|%.1f| = %.1f", a, a);
    else
        printf("|%.1f| = %.1f", a, -a);

    return 0;
}

3-4 计算分段函数(一)

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

输入格式:

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

输出格式:

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

输入样例1:

10

输出样例1:

f(10.0) = 0.1

输入样例2:

0

输出样例2:

f(0.0) = 0.0

注意,在C里面分母为0是会出错的。咱来尝试一下,输出了这个

所以要规避这种情况,得判断是否输入为0。直接看代码吧

#include <stdio.h>

int main()
{
    float a;

    scanf("%f", &a);
    if(a == 0)
        printf("f(%.1f) = %.1f", a, 0);
    else
        printf("f(%.1f) = %.1f", a, 1/a);

    return 0;
}

 3-5 计算分段函数(二)

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

注:可在头文件中包含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

和前几题一样。直接看代码

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

int main()
{
    float a;

    scanf("%f", &a);
    if (a >= 0)
        printf("f(%.2f) = %.2f", a, sqrt(a));
    else
        printf("f(%.2f) = %.2f", a, (pow((a + 1), 2) + 2 * a + 1 / a));

    return 0;
}

3-6 成绩转换(一)

本题要求编写程序,将一个百分制成绩转换为二分制成绩。转换规则:

  • 大于等于60分为A;
  • 小于60为B。

输入格式:

输入在一行中给出一个整数的百分制成绩。

输出格式:

在一行中输出对应的二分制成绩。

输入样例:

82

输出样例:

A

在3-2的基础上改改就好了。看代码

#include <stdio.h>

int main()
{
    int a;

    scanf("%d", &a);
    if(a >= 60)
        printf("A");
    else
        printf("B");

    return 0;
}

3-7 分段计算居民水费

本题要求编写程序,为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。

输入格式:

输入在一行中给出非负实数x

输出格式:

在一行输出应交的水费,精确到小数点后2位。

输入样例1:

12

输出样例1:

16.00

输入样例2:

16

输出样例2:

22.50

和上面的分段函数一样。拿过来改改就好了

#include <stdio.h>

int main()
{
    float a;

    scanf("%f", &a);
    if (a > 15)
        printf("%.2f", a * 4 / 3);
    else
        printf("%.2f", 2.5 * a - 17.5);

    return 0;
}

3-8 超速判断

本题要求编写程序,模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。

输入格式:

输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。

输出格式:

在一行中输出测速仪显示结果,格式为:Speed: V - S,其中V是车速,S或者是Speeding、或者是OK

输入样例1:

40

输出样例1:

Speed: 40 - OK

输入样例2:

75

输出样例2:

Speed:75-Speeding

和判断成绩一样。见代码

#include <stdio.h>

int main()
{
    int a;

    scanf("%d", &a);
    if(a > 60)
        printf("speed:%d - Speeding", a);
    else
        printf("speed:%d - OK", a);

    return 0;
}

3-9 符号函数

本题要求编写程序, 对于任一整数n,符号函数sign(n)的定义如下:

计算该函数对任一输入整数的值。

输入格式:

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

输出格式:

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

输入样例1:

64

输出样例1:

sign(64) = 1

输入样例2:

0

输出样例2:

sign(0) = 0

输入样例3:

-82

输出样例3:

sign(-82) = -1

 多了一个else if的判断,本质并没有改变。见代码:

#include <stdio.h>

int main()
{
    int a;

    scanf("%d", &a);
    printf("sign(%d) = ", a);
    if(a > 0)
        printf("1");
    else if(a < 0)
        printf("-1");
    else
        printf("0");

    return 0;
}

3-10 成绩转换(二)

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

输入格式:

输入在一行中给出一个整数的百分制成绩。

输出格式:

在一行中输出对应的五分制成绩。

输入样例:

95

输出样例:

A

这一题有多种思路,可以if else if判断,但是代码的时间复杂度会比较高。也可以switch case判断。相对来说,switch判断会更加好,故在此采用switch。

但是if更加直观,直接判断大小即可。switch则最好对数据进行预处理。

#include <stdio.h>

int main()
{
    int a;

    scanf("%d", &a);
    a /= 10;
    switch (a)
    {
    case 9:
        printf("A");
        break;
    case 8:
        printf("B");
        break;
    case 7:
        printf("C");
        break;
    case 6:
        printf("D");
        break;

    default:
        printf("E");
        break;
    }

    return 0;
}

结语

这周的题目好多啊,整整12题!看在这么辛苦的份上要个赞不过分吧 [星星眼]

(不对,好像是上周的题目

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值