努力学习,永不放弃!
生活晴朗,万物可爱ヾ(≧▽≦*)o

2021.11.17
回头看当年写的东西,挺幼稚的,但我还是决定留下这段“黑历史”

2022.10.25
经过这些天的练习后,分枝、循环结构、静态数组、冒泡等基础知识基本掌握。

做的题太多了懒得一个个上传了,毕竟没有难度特别大或者技巧性极高的题。

继续加油吧,立个flag,每天300行代码。

学无止境,无限进步。

10.计算1000!

来源CSDN,学习中

    #include <iostream>

    #include <cmath>

    const int EXT = 5;

    //运用log求数组的长度

    int length(int n) {

        double m = 0;

        for (int i = 1; i <= n; ++i) {

           m += log(i);

        }

        return int(m + 1);//n=m+1(取整)为1000!的位数

    }

    //计算值

    void fact(int n) {

        //------n<=0----看不太懂,大概是求数组长度出错在这里会报错?

        if (n < 0) {

           std::cout << "error\\n";

           return;

        } else if (0 == n) {

           std::cout << 1;

           return;

        }

        //---------construct--------------

        int len = length(n) + EXT;//+5是为什么?

        short \*num = new short\[len\];//申请储存空间

        short carry, sum;

        //----------init-------------

        for (int i = 0; i < len; ++i) {

           num\[i\] = 0;//初始化每个内存单元值为0

        }

        num\[0\] = 1;

        //---------calc---------计算核心

        for (int i = 2; i <= n; ++i) {

           carry = 0;

           for (int j = 0; j < len; ++j) {

               sum = num\[j\] \* i + carry;//2=1\*2+0;

               num\[j\] = sum % 10;//num\[0\]=2;保留末位

               carry = sum / 10;//carry=0;考虑进位

           }

        }

        //-----------end------------

        //-----------output----------

        bool zero = true;

        for (int i = len - 1; i >= 0; --i) {    //从高位往低位输出数值

           if (zero) {                //去除开头的几位0,嵌套循环逻辑值得反复学习

               if (0 != num\[i - 1\]) {

                   zero = false;

               }

           } else {

               std::cout << num\[i\];

           }

        }

        //-----------destruct-----------

        delete\[\] num;//把这里注释掉之后程序运行结果无变化,可能有其他作用

    }

    int main() {//C必须包含main函数,否则编译报错

        fact(1000);

        return 0;

    }

9.将一个数倒序排列

    #include <stdio.h>

    int main() {

        long long int a = 0, b = 0;

        short i = 0;

        scanf("%lld", &a);

        b = a;

        //确定位数

        for (; a != 0; i++) {

           a /= 10;

        }

        int t\[i\];

        short x = i;

        //初始化t\[i\]

        for (; i >= 0; i--) {

           t\[i\] = 0;

        }

        //输出结果

        if (b == 0) {

           printf("0");

        }

        if (b > 0) {

           i = 0;

           for (; b > 0; i++) {

               t\[i\] = b % 10;

               b /= 10;

           }

           i = 0;

           for (; i < x; i++) {//此处不能是<=,否则多输出一位0。也可以将前面改为x=i-1

               printf("%d", t\[i\]);

           }

        }

        if (b < 0) {

           b = -b;

           i = 0;

           for (; b > 0; i++) {

               t\[i\] = b % 10;

               b /= 10;

           }

           printf("-");

           i = 0;

           for (; i < x; i++ ) {

               printf("%d", t\[i\]);

           }

        }

        return 0;

    }

8.比较数大小并排序(用到数组,可比较多个数)

    #include <stdio.h>

    int main()

    {

        int a = 1, b = 0, i = 0, max = 0;

        printf("请输入要比较的数总数:\\n");

        scanf("%d", &i);

        int x\[i\];//声明一个数组以储存i个数

        printf("依次输入数字:\\n");

        while (a <= i) {

           scanf("%d", &x\[a\]);

           a++;

        }

        for (int c = 1; c <= i; c++) {

           a = 1;

           while (a < i) {

               if (x\[a\] > x\[a + 1\]) {

                   b = x\[a\];

                   x\[a\] = x\[a + 1\];

                   x\[a + 1\] = b;

               }

               a++;

           }

        }

        printf("从小到大依次排列如下:\\n");

        a = 1;

        while (a <= i) {

           printf("%d\\n", x\[a\]);

           a++;

        }

        printf("max=%d", x\[i\]);

        return 0;

    }

7.计算阶乘(小数据)

    #include<stdio.h>

    #include<math.h>

    int main()

    {

        int n = 0;

        unsigned long long result=1;

        printf("请输入想要做阶乘的数字n:\\n");

        scanf\_s("%d", &n);

        do {

           result \*= n;

           n--;

        } while (n > 1);

        printf("n!=%llu\\n",result);

        return 0;

    }

6.计算一个自然数的位数

    #include<stdio.h>

    int main()

    {

        unsigned long long a = 0;

        int b = 0;

        printf("请输入一个自然数\[0,18446744073709551615\]:\\n");

        scanf\_s("%llu", &a);

        b++;

        a = a / 10;

        while (a > 0) {

           b++;

           a = a / 10;

        }

        printf("该数为%d位数。\\n", b);

        return 0;

    }

5.刘周平作业

    #include<stdio.h>

    int main()

    {

        int age=0, ID=0;

        char a;

        float average;

        printf("请输入姓名:");

        scanf\_s("%c", &a);

        printf("请输入年龄:");

        scanf\_s("%d", &age);

        printf("请输入工号ID: ");

        scanf\_s("%d", &ID);

        printf("请输入工资(精确到小数点后两位):");

        scanf\_s("%f", &average);

        printf("姓名:%c\\n年龄:%d\\n工号:%d\\n工资:%.2f\\n", a, age, ID, average);

        return 0;

    }

4.计算时间差

    #include<stdio.h>

    int main()

    {

        int hour1=0, hour2=0,minute1=0, minute2=0;

        scanf\_s("%d:%d", &hour1, &minute1);

        scanf\_s("%d:%d", &hour2, &minute2);

        int t1 = hour1 \* 60 + minute1;

        int t2 = hour2 \* 60 + minute2;

        int t = t2 - t1;

        printf("change time = %d:%d",t/60,t%60);

    }

3.计算平均数

    #include<stdio.h>

    int main()

    {

        int a, b, c, d, e, sum, average;

        a = 80;

        b = 95;

        c = 78;

        d = 87;

        e = 65;

        sum = a + b + c + d + e;

        average = sum / 5;

        printf("sum = %d\\n",sum);

        printf("average = %d\\n", average);

        return 0;

    }

2.计算五个数字平均数

    #include<stdio.h>

    int main()

    {

        int arr\[5\] = { 0 };

        //输入数字

        int i = 0;

        for (i = 0; i < 5; i++)

    {

        scanf\_s("%d:", &arr\[i\]);

    }

    //计算数字

    int sum = 0;

    for (i = 0; i < 5; i++)

    {

        sum += arr\[i\];

    }

    int average = sum / 5;

    //输出结果

    printf("平均数是%d", average);

    return 0;

    }

1.找零钱

    #include<stdio.h>

    int main()

    {

        int price = 0;

        printf("请输入金额(元):");

        scanf\_s("%d", &price);

        int change = 100 - price;

        printf("找您%d元。/n", change);

        return 0;

    }
Last modification:November 17, 2023
我很可爱,请给我钱。