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

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

经过前两周的作业,咱发现了这个作业里面的课后作业总是和上机实验的某些题目完全一致。所以大概这周开始就不会有课后作业这一栏了。

撒,哈吉马路哟

目录

上机实验

利用fabs()函数求绝对值

利用函数sqrt()求平方根

键盘输入一个小写字母,输出其对应的大写字母

输入一个三位整数,将其反向输出

补充题:后天是星期几

补充题:打折

补充题:求整数平均值

结语


上机实验 利用fabs()函数求绝对值

这里出现了一个新概念,函数。

在C语言里的函数与数学的函数类似,都是输入一些东西,再输出一些东西。输入和输出的数据类型在函数定义的时候就已经确定了,至于如何定义函数暂时还不需要了解。而定义后的函数可以直接拿来用了。

我们之前其实也用过函数。比如熟悉的“printf()”就是函数。在括号内的就是传入数据,这整个函数就是传出数据。这么说可能不太直观,我们先以“fabs()”函数为例子来看看。

float num = -114.514, absNum;

absNum = fabs(num);

在这个例子里,我们可以看到函数就和数学里“y = f(x)”这类函数的用法一样。给x就能传出数据,并赋值给y。这类传入传出的数据也并不是乱填就行,以fabs()为例,它的数据类型我们通过查找某些网站可以知道它传入传出的数据类型均为double类型(注意,会因编译器不同而不同。但大致都差不多),在此用float类型并不会发生问题。

或许你现在就很兴奋地去尝试写代码了,但是写着写着,发现“欸?为什么我这个函数会报错呢?”这就要涉及另一个东西了——头文件。

还记得咱第一周的问题,#include、stdio.h这些是什么东西吗?咱一个一个来说。

首先是#,这个符号表示预编译,就是指在编译代码之前先会处理有这个符号修饰的语句。而include,作用和名字一样,包含某种东西。可以理解成导入某种东西,而stdio.h则是文件名,表示的是标准输入输出,里面有许许多多的常用函数。

那么这些东西和我们刚刚报的错有什么关系呢?

因为一个文件里包含的函数数量是有限的,想要用到其它函数,就得包含其它的头文件。比如咱要用“fabs()”函数,得包含math.h文件。

有以上概念之后再来写这道题就非常简单了,直接看代码。

#include 
#include 

int main()
{
    float x = 100, y;

    y = fabs(x);
    printf("%.2f", y);

    return 0;
}

由于这一题没有给明确的要求说明,我们就直接简单一些写。

利用函数sqrt()求平方根

这一题和上一题基本一样,直接看代码

#include 
#include 

int main()
{
    float x = 100, y;

    y = sqrt(x);
    printf("%.2f", y);

    return 0;
}
键盘输入一个小写字母,输出其对应的大写字母

在这里我们要引入一个新概念ASCII码。

为什么要引入这个码呢?咱也不缺码是吧这得说道说道字符型在C语言里的存储形式。

在C语言中,咱定义一个字符,它会占用八个Bit,也就是八个010101这种东西。八位的存储上限是128,英文字母加数字再加上某些常用符号正好可以放下,于是一群人围着就讨论能不能将这些东西作为一个标准,因此,ASCII码应运而生。当你用printf()输出一个字符的时候,C编译器就会将你存放在这个变量内的数据自动转化为ASCII码的形式输出。

说了这么多,这和小写转大写有什么关系呢?

如果我们定义一种方法,能把输入的小写字符对应ASCII码的值计算成大写字符对应ASCII码的值,不就能做到小写转大写了吗?巧妙!

咱再去翻翻ASCII码标,发现小写字符的编码正好比大写字符多32!这样我们只需要给小写字符减去32就能得到大写字符了!

下面是代码

#include 

int main()
{
    char a, A;

    scanf("%c", &a);
    A = a - 32;
    printf("%c", A);

    return 0;
}
输入一个三位整数,将其反向输出

示例

输入

127

输出

721

这题是否有点似曾相识,翻看上周的代码,发现确实有类似的题目(整数分割)。我们可以直接在上周代码的基础上更改。

直接看代码吧

#include 

int main()
{
    int inputNum, num;

    scanf("%d", &inputNum);
    num = inputNum % 10;
    inputNum = inputNum / 10;
    printf("%d", num);//打印百位
    num = inputNum % 10;
    inputNum = inputNum / 10;
    printf("%d", num);//打印十位
    num = inputNum % 10;
    inputNum = inputNum / 10;
    printf("%d", num);//打印个位

    return 0;
}

在这里我并未将其加成一个整数,而是一位一位地打印,这种方法可能有悖出题人的意思,但是只看输出并不能察觉到[doge]

补充题:后天是星期几

要求:输入一个整型D,(1 <= D <= 7)计算出后天星期几,并输出

这道题只需要取模就可以,非常简单,直接看代码

#include 

int main()
{
    int today, afterTomorrow;

    scanf("%d", &today);
    afterTomorrow = (today + 2)% 7;
    if(afterTomorrow == 0)
        afterTomorrow = 7;
    printf("%d", afterTomorrow);

    return 0;
}

这里首次出现了if语句,具体用法可以看这里。其实我是不打算用if的,但是取模之后会有0产生,没办法,无奈之下才用的if。

补充题:打折

现在的补充题渐渐的有趣起来了,有实际运用场景了。

要求输入原价(小于一万的整数)和折扣([1,9]的整数),其间以空格分隔;输出一个浮点数,保留两位小数。

输入示例

799 6

输出示例

479.40

这题也比较简单,直接看代码吧

#include 

int main()
{
    int original, discount;
    float price;

    scanf("%d%d", &original, &discount);
    price = (float)(original * discount) / 10;
    printf("%.2f", price);

    return 0;
}
补充题:求整数平均值

要求:输入四个整数,输出其和和均值,均值保留一位小数

示例输入

1 2 3 4

示例输出

Sum = 10, Average = 2.5

和前几题差不多

直接看代码

#include 

int main()
{
    int num1, num2, num3, num4, sum;
    float ave;

    scanf("%d%d%d%d", &num1, &num2, &num3, &num4);
    sum = num1 + num2 + num3 + num4;
    ave = (float)sum / 4;
    printf("Sum = %d, Average = %.1f", sum, ave);

    return 0;
}

至此本周作业就都结束啦

结语

每周总得说几句,嗯…说什么呢

感觉上课进度有点快,又有点慢。快是因为上课速度比较快,慢是因为一周时间只能往前推那么一点点知识点。不过学校有自己的教学大纲,这也不是咱能 *** 心的事情。

有什么问题或疑惑就在评论区发出来吧,下周见~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/3002215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存