H2330819027


私信TA

用户名:dotcpp0701405

访问量:13051

签 名:

指向函数指针数组的指针int(*(*p[4]))(int int)

等  级
排  名 108
经  验 8224
参赛次数 1
文章发表 79
年  龄 18
在职情况 学生
学  校 Hzu university
专  业 软件工程

  自我简介:

这段代码是一个实现大整数相乘的程序。首先,它使用了两个字符数组s1和s2来存储两个大整数,并通过字符串输入的方式获取这两个大整数。然后,通过将字符转换为数字,将它们存储到数组a和b中。接下来,它定义了一个数组c来存储乘法运算的结果。然后,通过两个嵌套的for循环,将数组a和b中的每一位进行相乘,并将结果存储到数组c中的对应位置。最后,通过一个while循环,去除数组c中高位的零,并通过一个for循环,从高位到低位输出数组c中的每一位,即为两个大整数相乘的结果。

屏幕截图 2023-12-19 100638.png

#define  _CRT_SECURE_NO_WARNINGS  // 禁止警告
#include <stdio.h>  // 包含标准输入输出库
#include <math.h>  // 包含数学库
#include <string.h>  // 包含字符串处理库
#include <stdlib.h>  // 包含标准库

// 声明整型数组a、b、c和字符数组s1、s2
int a[2005], b[2005], c[4010];
char s1[2005], s2[2005];

// 主函数
int main() 
{
    // 从标准输入中读取字符串s1和s2
    scanf("%s", s1);
    scanf("%s", s2);

    // 计算字符串s1和s2的长度
    int la = strlen(s1);
    int lb = strlen(s2);

    // 将字符串s1和s2中的字符转换为数字存入数组a和b
    for (int i = 0; i < la; i++)
    {
        a[la - i] = s1[i] - '0';
    }
    for (int i = 0; i < lb; i++)
    {
        b[lb - i] = s2[i] - '0';
    }

    // 计算数组c的长度
    int lc = la + lb;

    // 计算数组c的值
    for (int i = 1; i <= la; i++)
    {
        for (int j = 1; j <= lb; j++)
        {
            c[i + j - 1] += a[i] * b[j];
            c[i + j] += c[i + j - 1] / 10;
            c[i + j - 1] %= 10;
        }
    }

    // 移除数组c前面的零
    while (c[lc] == 0 && lc > 1) lc--;

    // 输出数组c中的值
    for (int i = lc; i > 0; i--)
    {
        printf("%d", c[i]);
    }

    // 返回0,表示程序正常运行结束
    return 0;
}


 

0.0分

11 人评分

  评论区

  • «
  • »