物联1234 C语言 第四次作业

第一题

要求:请浏览上⽅链接的内容,本门课程已学知识涉及到了哪些内容?请挑出其中3个,并摘抄下来。重点浏览「8.注释」「9.8. 条件语句」「9.9. 循环和开关选择语句」。
思考:作为⼀名初学者,请描述⼀下什么是代码缩进,你平时是否有严格要求⾃⼰进
⾏代码缩进呢?

摘抄

如果函数的实现过程中用到了很巧妙的方式, 那么在函数定义处应当加上解释性的注释. 例如, 你所使用的编程技巧, 实现的大致步骤, 或解释如此实现的理由. 举个例子, 你可以说明为什么函数的前半部分要加锁而后半部分不需要.

如果能增强可读性, 简短的条件语句允许写在同一行. 只有当语句简单并且没有使用 else 子句时使用:
如果语句有 else 分支则不允许
通常, 单行语句不需要使用大括号, 如果你喜欢用也没问题; 复杂的条件或循环语句用大括号可读性会更好. 也有一些项目要求 if 必须总是使用大括号:
但如果语句中某个 if-else 分支使用了大括号的话, 其它分支也必须使用:

如果有不满足 case 条件的枚举值, switch 应该总是包含一个 default 匹配 (如果有输入值没有 case 去处理, 编译器将给出 warning). 如果 default 应该永远执行不到, 简单的加条 assert:

空循环体应使用 {} 或 continue, 而不是一个简单的分号.

观点

代码使劲可以让代码更加直观,增加可读性。

作为一名初学者,平时有严格要求自己进行代码缩进(没有缩进对于我这个强迫症来说是不可接受的)。并且vscode有一键格式化插件,crtl + s 一键格式化,何乐而不为呢?

本人的注释示例

Doxygen注释的使用

/**
 *@brief  在LCD1602指定位置开始显示所给数字
 *@param  Line 起始行位置,范围:1-2
 *@param  Column 起始列位置,范围:1-16
 *@param  Number 要显示的数字,范围:0-65535
 *@param  Length 要显示数字的长度,范围:1-5
 *@retval 无
 */
void LCD_ShowNum(unsigned char Line, unsigned char Column, unsigned int Number, unsigned char Length)
{
    unsigned char i;
    LCD_SetCursor(Line, Column);
    for (i = Length; i > 0; i--)
    {
        LCD_WriteData(Number / LCD_Pow(10, i - 1) % 10 + '0');
    }
}

效果图
在这里插入图片描述

第二题

分别⽤ for while do-while 实现:计算并输出:
n! = 1 × 2 × 3 × … × n

for循环

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    int sum = 1;
    scanf("%d", &num);
    for (int i = num; i > 0; i--)
    {
        sum *= i;
    }
    printf("%d\n", sum);
    system("pause");
    return 0;
}

while循环

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    int sum = 1;
    scanf("%d", &num);
    int i = num;
    while (i > 0)
    {
        sum *= i--;
    }
    printf("%d\n", sum);
    system("pause");
    return 0;
}

do - while 循环

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    int sum = 1;
    scanf("%d", &num);
    int i = num;
    do
    {
        sum *= i--;
    } while (i > 0);
    printf("%d\n", sum);
    system("pause");
    return 0;
}

运行效果

在这里插入图片描述

第三题

模仿PPT的课程内容,计算圆周率 pia 的粗略值。

#include <stdio.h>
#include <stdlib.h>

double calculatePi()
{
    double pi = 0.0;
    int sign = 1;
    for (int i = 0; !(sign * 4.0 / (2 * i + 1) < 1e-7 && sign * 4.0 / (2 * i + 1) > -1e-7); i++)
    {
        pi += sign * 4.0 / (2 * i + 1);
        sign *= -1;
    }
    return pi;
}

int main()
{
    double pi = calculatePi();
    printf("圆周率的近似值为:%f\n", pi);
    system("pause");
    return 0;
}

在这里插入图片描述

第四题

#include <stdio.h>
#include <stdilb.h>

int fibonacci(int n) {
    if (n <= 1)
        return n;
    else
        return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    int n = 20; // 要计算的斐波那契数列的长度
    printf("斐波那契数列前 %d 个数字为:\n", n);
    for (int i = 0; i < n; i++) {
        printf("%d ", fibonacci(i));
    }
    printf("\n");
    system("pause");
    return 0;
}

在这里插入图片描述

第五题

编写⼀个程序,接受⽤户输⼊的整数,然后按照相反的顺序输出这些数字。例如,输⼊为12345,输出为 54321。

字符倒置版

代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char s[20];
    scanf("%s", s);
    int cot = 0;
    //  计算字符串长度,其实可以用 strlen,但我就是不用
    while (s[cot] != '\0')
    {
        cot++;
    }
    for (int i = 0, j = cot - 1; i < j; i++, j--)
    {
        char cup = s[i];
        s[i] = s[j];
        s[j] = cup;
    }
    printf("%s\n", s);
    system("pause");
    return 0;
}

运行效果

在这里插入图片描述

缺陷

0也倒置了

在这里插入图片描述

数字倒置版

代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num, sum = 0; // sum记录倒置后的数字
    scanf("%d", &num);
    while (num > 0)
    {
        sum += num % 10;
        sum *= 10;
        num /= 10;
    }
    sum /= 10;
    printf("%d\n", sum);
    system("pause");
    return 0;
}

运行效果

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值